pax_global_header00006660000000000000000000000064125553170010014511gustar00rootroot0000000000000052 comment=4e51874c5b85dcdadd40276ca85f9ed915b1be0f quri-20150804-git/000077500000000000000000000000001255531700100135175ustar00rootroot00000000000000quri-20150804-git/.gitattributes000066400000000000000000000000371255531700100164120ustar00rootroot00000000000000data/* linguist-vendored=false quri-20150804-git/.gitignore000066400000000000000000000000741255531700100155100ustar00rootroot00000000000000*.fasl *.dx32fsl *.dx64fsl *.lx32fsl *.lx64fsl *.x86f *~ .#*quri-20150804-git/.travis.yml000066400000000000000000000010601255531700100156250ustar00rootroot00000000000000language: common-lisp env: matrix: - LISP=sbcl COVERALLS=true - LISP=ccl - LISP=clisp - LISP=allegro - LISP=abcl - LISP=ecl install: # Install cl-travis - curl https://raw.githubusercontent.com/luismbo/cl-travis/master/install.sh | bash script: - if [ "$COVERALLS" ]; then cl -l prove -l cl-coveralls -e '(or (coveralls:with-coveralls (:exclude "t") (prove:run :quri-test)) (uiop:quit -1))'; else cl -l prove -e '(or (prove:run :quri-test) (uiop:quit -1))'; fiquri-20150804-git/README.markdown000066400000000000000000000174001255531700100162220ustar00rootroot00000000000000# QURI [![Build Status](https://travis-ci.org/fukamachi/quri.svg?branch=master)](https://travis-ci.org/fukamachi/quri) [![Coverage Status](https://coveralls.io/repos/fukamachi/quri/badge.svg?branch=master)](https://coveralls.io/r/fukamachi/quri)

冷やしきゅうり

Photo by m-louis, licensed under the CC BY-SA 2.0 license.

**QURI** (pronounced "Q-ree") is yet another URI library for Common Lisp. It is intended to be a replacement of [PURI](http://puri.b9.com). ## Differences from PURI - Fast. (See [Benchmark](#benchmark)) - Doesn't encode/decode URL implicitly. - Supports userinfo. (ex. `git` in `git@github.com`) - Supports IPv6 hostname. (ex. `ldap://[2001:db8::7]/`) - Allows byte vectors as input. - Takes optional `:start` and `:end` keyword arguments. - Low-level parser functions. - URL encoding/decoding utilities. - `url-decode`, `url-decode-params`, `url-encode`, `url-encode-params` ## Usage ```common-lisp (use-package :quri) (defvar *uri* (uri "http://www.ics.uci.edu/pub/ietf/uri/#Related")) *uri* ;=> # (uri-scheme *uri*) ;=> "http" (uri-host *uri*) ;=> "www.ics.uci.edu" (uri-domain *uri*) ;=> "uci.edu" (uri-path *uri*) ;=> "/pub/ietf/uri/" (uri-fragment *uri*) ;=> "Related" ``` ## Functions ### \[Function] uri Parse a string or a byte vector and return a `uri` object. ### \[Function] make-uri Create a `uri` object. ### \[Function] copy-uri Return a copy of the given `uri` object. ### \[Function] merge-uris Merge a reference URI into the base URI as described in RFC 2396 Section 5.2. The returned URI may or may not be a new instance. Neither REFERENCE nor BASE is mutated. ### \[Structure] uri Structure class as a representation of URIs. The following methods are available for all classes extends this class. #### Methods - `uri-scheme` - `uri-userinfo` - `uri-host` - `uri-domain` - `uri-tld` - `uri-port` - `uri-path` - `uri-authority` - `render-uri` ### \[Structure] urn (extends uri) Structure class as a representation of URNs. All methods of `uri` are also available for this class. #### Methods - `urn-nid` - `urn-nss` ### \[Structure] uri-http (extends uri) Structure class for HTTP/HTTPS URIs. #### Methods - `uri-query-params` ```common-lisp (defvar *uri* (quri:uri "http://quickdocs.org/search?q=web")) (uri-query-params *uri*) ;=> (("q" . "web")) (setf (uri-query-params *uri*) '(("q" . "system programming"))) *uri* ;=> # ``` ### \[Structure] uri-ftp (extends uri) Structure class for FTP URIs. #### Methods - `uri-ftp-typecode` ### \[Structure] uri-ldap (extends uri) Structure class for LDAP/LDAPS URIs. #### Methods - `uri-ldap-dn` - `uri-ldap-attributes` - `uri-ldap-scope` - `uri-ldap-filter` - `uri-ldap-extensions` ### \[Function] url-decode Decode a Percent-Encoded string or byte vector. ```common-lisp (url-decode "%2Ffoo%E3%81%82") ;=> "/fooあ" ``` ### \[Function] url-decode-params Decode a [form-urlencoded](http://tools.ietf.org/html/rfc1866#section-8.2.1) string or byte vector and return an association list. ### \[Function] url-encode Encode a string or a byte vector into a Percent-Encoded string. ```common-lisp (url-encode "/fooあ") ;=> "%2Ffoo%E3%81%82" ``` ### \[Function] url-encode-params Encode an association list into a [form-urlencoded](http://tools.ietf.org/html/rfc1866#section-8.2.1) string. ## Low-level functions ### \[Function] parse-uri Parse a URI string or a URI byte vector and return 7 URI components -- scheme, userinfo, host name, port, path, query and fragment. ```common-lisp (parse-uri "http://www.ics.uci.edu/pub/ietf/uri/#Related") ;=> "http" ; NIL ; "www.ics.uci.edu" ; NIL ; "/pub/ietf/uri/" ; NIL ; "Related" ``` ## Installation ``` $ git clone https://github.com/fukamachi/quri ``` ```common-lisp (ql:quickload :quri) ``` ## Benchmark ### Parsing URI - Parsing a URI string 100,000 times. | QURI | PURI | |--------|--------| | 0.064s | 0.423s | QURI is **6.6 times faster** than PURI for URI parsing. #### QURI ```common-lisp (time (dotimes (i 100000) (quri:uri "http://www.ics.uci.edu/pub/ietf/uri/#Related"))) ``` ``` Evaluation took: 0.064 seconds of real time 0.063984 seconds of total run time (0.063745 user, 0.000239 system) 100.00% CPU 191,340,531 processor cycles 28,807,728 bytes consed ``` #### PURI ```common-lisp (time (dotimes (i 100000) (puri:uri "http://www.ics.uci.edu/pub/ietf/uri/#Related"))) ``` ``` Evaluation took: 0.423 seconds of real time 0.425327 seconds of total run time (0.422234 user, 0.003093 system) [ Run times consist of 0.004 seconds GC time, and 0.422 seconds non-GC time. ] 100.47% CPU 1,266,663,894 processor cycles 64,001,408 bytes consed ``` ### URL decoding - Decoding a URL-encoded string 100,000 times. | QURI | Hunchentoot | do-urlencode | |--------|-------------|--------------| | 0.029s | 0.089s | 0.634s | QURI is **3 times faster** than Hunchentoot, and **21.8 times faster** than do-urlencode. #### QURI ```common-lisp (time (dotimes (i 100000) (quri:url-decode "foo%E3%81%82"))) ``` ``` Evaluation took: 0.029 seconds of real time 0.028683 seconds of total run time (0.027934 user, 0.000749 system) 100.00% CPU 85,421,676 processor cycles 7,993,456 bytes consed ``` #### Hunchentoot ```common-lisp (time (dotimes (i 100000) (hunchentoot:url-decode "foo%E3%81%82"))) ``` ``` Evaluation took: 0.089 seconds of real time 0.088946 seconds of total run time (0.087632 user, 0.001314 system) 100.00% CPU 265,341,714 processor cycles 17,611,968 bytes consed ``` #### do-urlencode ```common-lisp (time (dotimes (i 100000) (do-urlencode:urldecode "foo%E3%81%82"))) ``` ``` Evaluation took: 0.634 seconds of real time 0.637236 seconds of total run time (0.632224 user, 0.005012 system) [ Run times consist of 0.023 seconds GC time, and 0.615 seconds non-GC time. ] 100.47% CPU 1,897,304,959 processor cycles 153,606,064 bytes consed ``` ### URL encoding - URL-encoding a string 100,000 times. | QURI | Hunchentoot | do-urlencode | |--------|-------------|--------------| | 0.074s | 0.282s | 0.317s | QURI is **3.8 times faster** than Hunchentoot, and **4.2 times faster** than do-urlencode. #### QURI ```common-lisp (time (dotimes (i 100000) (quri:url-encode "fooあ"))) ``` ``` Evaluation took: 0.074 seconds of real time 0.074284 seconds of total run time (0.072908 user, 0.001376 system) 100.00% CPU 221,267,517 processor cycles 31,993,520 bytes consed ``` #### Hunchentoot ```common-lisp (time (dotimes (i 100000) (hunchentoot:url-encode "fooあ"))) ``` ``` Evaluation took: 0.282 seconds of real time 0.284922 seconds of total run time (0.280063 user, 0.004859 system) [ Run times consist of 0.034 seconds GC time, and 0.251 seconds non-GC time. ] 101.06% CPU 845,204,850 processor cycles 214,382,672 bytes consed ``` #### do-urlencode ```common-lisp (time (dotimes (i 100000) (do-urlencode:urlencode "fooあ"))) ``` ``` Evaluation took: 0.317 seconds of real time 0.319419 seconds of total run time (0.314339 user, 0.005080 system) [ Run times consist of 0.026 seconds GC time, and 0.294 seconds non-GC time. ] 100.63% CPU 946,704,912 processor cycles 219,186,768 bytes consed ``` ## Author * Eitaro Fukamachi (e.arrows@gmail.com) ## Copyright Copyright (c) 2014 Eitaro Fukamachi (e.arrows@gmail.com) ## License Licensed under the BSD 3-Clause License. quri-20150804-git/data/000077500000000000000000000000001255531700100144305ustar00rootroot00000000000000quri-20150804-git/data/effective_tld_names.dat000066400000000000000000004505511255531700100211220ustar00rootroot00000000000000// This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. // ===BEGIN ICANN DOMAINS=== // ac : http://en.wikipedia.org/wiki/.ac ac com.ac edu.ac gov.ac net.ac mil.ac org.ac // ad : http://en.wikipedia.org/wiki/.ad ad nom.ad // ae : http://en.wikipedia.org/wiki/.ae // see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php ae co.ae net.ae org.ae sch.ae ac.ae gov.ae mil.ae // aero : see http://www.information.aero/index.php?id=66 aero accident-investigation.aero accident-prevention.aero aerobatic.aero aeroclub.aero aerodrome.aero agents.aero aircraft.aero airline.aero airport.aero air-surveillance.aero airtraffic.aero air-traffic-control.aero ambulance.aero amusement.aero association.aero author.aero ballooning.aero broker.aero caa.aero cargo.aero catering.aero certification.aero championship.aero charter.aero civilaviation.aero club.aero conference.aero consultant.aero consulting.aero control.aero council.aero crew.aero design.aero dgca.aero educator.aero emergency.aero engine.aero engineer.aero entertainment.aero equipment.aero exchange.aero express.aero federation.aero flight.aero freight.aero fuel.aero gliding.aero government.aero groundhandling.aero group.aero hanggliding.aero homebuilt.aero insurance.aero journal.aero journalist.aero leasing.aero logistics.aero magazine.aero maintenance.aero marketplace.aero media.aero microlight.aero modelling.aero navigation.aero parachuting.aero paragliding.aero passenger-association.aero pilot.aero press.aero production.aero recreation.aero repbody.aero res.aero research.aero rotorcraft.aero safety.aero scientist.aero services.aero show.aero skydiving.aero software.aero student.aero taxi.aero trader.aero trading.aero trainer.aero union.aero workinggroup.aero works.aero // af : http://www.nic.af/help.jsp af gov.af com.af org.af net.af edu.af // ag : http://www.nic.ag/prices.htm ag com.ag org.ag net.ag co.ag nom.ag // ai : http://nic.com.ai/ ai off.ai com.ai net.ai org.ai // al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31 al com.al edu.al gov.al mil.al net.al org.al // am : http://en.wikipedia.org/wiki/.am am // an : http://www.una.an/an_domreg/default.asp an com.an net.an org.an edu.an // ao : http://en.wikipedia.org/wiki/.ao // http://www.dns.ao/REGISTR.DOC ao ed.ao gv.ao og.ao co.ao pb.ao it.ao // aq : http://en.wikipedia.org/wiki/.aq aq // ar : https://nic.ar/normativa-vigente.xhtml ar com.ar edu.ar gob.ar gov.ar int.ar mil.ar net.ar org.ar tur.ar // arpa : http://en.wikipedia.org/wiki/.arpa // Confirmed by registry 2008-06-18 arpa e164.arpa in-addr.arpa ip6.arpa iris.arpa uri.arpa urn.arpa // as : http://en.wikipedia.org/wiki/.as as gov.as // asia : http://en.wikipedia.org/wiki/.asia asia // at : http://en.wikipedia.org/wiki/.at // Confirmed by registry 2008-06-17 at ac.at co.at gv.at or.at // au : http://en.wikipedia.org/wiki/.au // http://www.auda.org.au/ au // 2LDs com.au net.au org.au edu.au gov.au asn.au id.au // Historic 2LDs (closed to new registration, but sites still exist) info.au conf.au oz.au // CGDNs - http://www.cgdn.org.au/ act.au nsw.au nt.au qld.au sa.au tas.au vic.au wa.au // 3LDs act.edu.au nsw.edu.au nt.edu.au qld.edu.au sa.edu.au tas.edu.au vic.edu.au wa.edu.au // act.gov.au Bug 984824 - Removed at request of Greg Tankard // nsw.gov.au Bug 547985 - Removed at request of // nt.gov.au Bug 940478 - Removed at request of Greg Connors qld.gov.au sa.gov.au tas.gov.au vic.gov.au wa.gov.au // aw : http://en.wikipedia.org/wiki/.aw aw com.aw // ax : http://en.wikipedia.org/wiki/.ax ax // az : http://en.wikipedia.org/wiki/.az az com.az net.az int.az gov.az org.az edu.az info.az pp.az mil.az name.az pro.az biz.az // ba : http://en.wikipedia.org/wiki/.ba ba org.ba net.ba edu.ba gov.ba mil.ba unsa.ba unbi.ba co.ba com.ba rs.ba // bb : http://en.wikipedia.org/wiki/.bb bb biz.bb co.bb com.bb edu.bb gov.bb info.bb net.bb org.bb store.bb tv.bb // bd : http://en.wikipedia.org/wiki/.bd *.bd // be : http://en.wikipedia.org/wiki/.be // Confirmed by registry 2008-06-08 be ac.be // bf : http://en.wikipedia.org/wiki/.bf bf gov.bf // bg : http://en.wikipedia.org/wiki/.bg // https://www.register.bg/user/static/rules/en/index.html bg a.bg b.bg c.bg d.bg e.bg f.bg g.bg h.bg i.bg j.bg k.bg l.bg m.bg n.bg o.bg p.bg q.bg r.bg s.bg t.bg u.bg v.bg w.bg x.bg y.bg z.bg 0.bg 1.bg 2.bg 3.bg 4.bg 5.bg 6.bg 7.bg 8.bg 9.bg // bh : http://en.wikipedia.org/wiki/.bh bh com.bh edu.bh net.bh org.bh gov.bh // bi : http://en.wikipedia.org/wiki/.bi // http://whois.nic.bi/ bi co.bi com.bi edu.bi or.bi org.bi // biz : http://en.wikipedia.org/wiki/.biz biz // bj : http://en.wikipedia.org/wiki/.bj bj asso.bj barreau.bj gouv.bj // bm : http://www.bermudanic.bm/dnr-text.txt bm com.bm edu.bm gov.bm net.bm org.bm // bn : http://en.wikipedia.org/wiki/.bn *.bn // bo : http://www.nic.bo/ bo com.bo edu.bo gov.bo gob.bo int.bo org.bo net.bo mil.bo tv.bo // br : http://registro.br/dominio/categoria.html // Submitted by registry 2014-08-11 br adm.br adv.br agr.br am.br arq.br art.br ato.br b.br bio.br blog.br bmd.br cim.br cng.br cnt.br com.br coop.br ecn.br eco.br edu.br emp.br eng.br esp.br etc.br eti.br far.br flog.br fm.br fnd.br fot.br fst.br g12.br ggf.br gov.br imb.br ind.br inf.br jor.br jus.br leg.br lel.br mat.br med.br mil.br mp.br mus.br net.br *.nom.br not.br ntr.br odo.br org.br ppg.br pro.br psc.br psi.br qsl.br radio.br rec.br slg.br srv.br taxi.br teo.br tmp.br trd.br tur.br tv.br vet.br vlog.br wiki.br zlg.br // bs : http://www.nic.bs/rules.html bs com.bs net.bs org.bs edu.bs gov.bs // bt : http://en.wikipedia.org/wiki/.bt bt com.bt edu.bt gov.bt net.bt org.bt // bv : No registrations at this time. // Submitted by registry 2006-06-16 bv // bw : http://en.wikipedia.org/wiki/.bw // http://www.gobin.info/domainname/bw.doc // list of other 2nd level tlds ? bw co.bw org.bw // by : http://en.wikipedia.org/wiki/.by // http://tld.by/rules_2006_en.html // list of other 2nd level tlds ? by gov.by mil.by // Official information does not indicate that com.by is a reserved // second-level domain, but it's being used as one (see www.google.com.by and // www.yahoo.com.by, for example), so we list it here for safety's sake. com.by // http://hoster.by/ of.by // bz : http://en.wikipedia.org/wiki/.bz // http://www.belizenic.bz/ bz com.bz net.bz org.bz edu.bz gov.bz // ca : http://en.wikipedia.org/wiki/.ca ca // ca geographical names ab.ca bc.ca mb.ca nb.ca nf.ca nl.ca ns.ca nt.ca nu.ca on.ca pe.ca qc.ca sk.ca yk.ca // gc.ca: http://en.wikipedia.org/wiki/.gc.ca // see also: http://registry.gc.ca/en/SubdomainFAQ gc.ca // cat : http://en.wikipedia.org/wiki/.cat cat // cc : http://en.wikipedia.org/wiki/.cc cc // cd : http://en.wikipedia.org/wiki/.cd // see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1 cd gov.cd // cf : http://en.wikipedia.org/wiki/.cf cf // cg : http://en.wikipedia.org/wiki/.cg cg // ch : http://en.wikipedia.org/wiki/.ch ch // ci : http://en.wikipedia.org/wiki/.ci // http://www.nic.ci/index.php?page=charte ci org.ci or.ci com.ci co.ci edu.ci ed.ci ac.ci net.ci go.ci asso.ci aéroport.ci int.ci presse.ci md.ci gouv.ci // ck : http://en.wikipedia.org/wiki/.ck *.ck !www.ck // cl : http://en.wikipedia.org/wiki/.cl cl gov.cl gob.cl co.cl mil.cl // cm : http://en.wikipedia.org/wiki/.cm plus bug 981927 cm co.cm com.cm gov.cm net.cm // cn : http://en.wikipedia.org/wiki/.cn // Submitted by registry 2008-06-11 cn ac.cn com.cn edu.cn gov.cn net.cn org.cn mil.cn 公司.cn 网络.cn 網絡.cn // cn geographic names ah.cn bj.cn cq.cn fj.cn gd.cn gs.cn gz.cn gx.cn ha.cn hb.cn he.cn hi.cn hl.cn hn.cn jl.cn js.cn jx.cn ln.cn nm.cn nx.cn qh.cn sc.cn sd.cn sh.cn sn.cn sx.cn tj.cn xj.cn xz.cn yn.cn zj.cn hk.cn mo.cn tw.cn // co : http://en.wikipedia.org/wiki/.co // Submitted by registry 2008-06-11 co arts.co com.co edu.co firm.co gov.co info.co int.co mil.co net.co nom.co org.co rec.co web.co // com : http://en.wikipedia.org/wiki/.com com // coop : http://en.wikipedia.org/wiki/.coop coop // cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do cr ac.cr co.cr ed.cr fi.cr go.cr or.cr sa.cr // cu : http://en.wikipedia.org/wiki/.cu cu com.cu edu.cu org.cu net.cu gov.cu inf.cu // cv : http://en.wikipedia.org/wiki/.cv cv // cw : http://www.una.cw/cw_registry/ // Confirmed by registry 2013-03-26 cw com.cw edu.cw net.cw org.cw // cx : http://en.wikipedia.org/wiki/.cx // list of other 2nd level tlds ? cx gov.cx // cy : http://en.wikipedia.org/wiki/.cy *.cy // cz : http://en.wikipedia.org/wiki/.cz cz // de : http://en.wikipedia.org/wiki/.de // Confirmed by registry (with technical // reservations) 2008-07-01 de // dj : http://en.wikipedia.org/wiki/.dj dj // dk : http://en.wikipedia.org/wiki/.dk // Confirmed by registry 2008-06-17 dk // dm : http://en.wikipedia.org/wiki/.dm dm com.dm net.dm org.dm edu.dm gov.dm // do : http://en.wikipedia.org/wiki/.do do art.do com.do edu.do gob.do gov.do mil.do net.do org.do sld.do web.do // dz : http://en.wikipedia.org/wiki/.dz dz com.dz org.dz net.dz gov.dz edu.dz asso.dz pol.dz art.dz // ec : http://www.nic.ec/reg/paso1.asp // Submitted by registry 2008-07-04 ec com.ec info.ec net.ec fin.ec k12.ec med.ec pro.ec org.ec edu.ec gov.ec gob.ec mil.ec // edu : http://en.wikipedia.org/wiki/.edu edu // ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B ee edu.ee gov.ee riik.ee lib.ee med.ee com.ee pri.ee aip.ee org.ee fie.ee // eg : http://en.wikipedia.org/wiki/.eg eg com.eg edu.eg eun.eg gov.eg mil.eg name.eg net.eg org.eg sci.eg // er : http://en.wikipedia.org/wiki/.er *.er // es : https://www.nic.es/site_ingles/ingles/dominios/index.html es com.es nom.es org.es gob.es edu.es // et : http://en.wikipedia.org/wiki/.et et com.et gov.et org.et edu.et biz.et name.et info.et // eu : http://en.wikipedia.org/wiki/.eu eu // fi : http://en.wikipedia.org/wiki/.fi fi // aland.fi : http://en.wikipedia.org/wiki/.ax // This domain is being phased out in favor of .ax. As there are still many // domains under aland.fi, we still keep it on the list until aland.fi is // completely removed. // TODO: Check for updates (expected to be phased out around Q1/2009) aland.fi // fj : http://en.wikipedia.org/wiki/.fj *.fj // fk : http://en.wikipedia.org/wiki/.fk *.fk // fm : http://en.wikipedia.org/wiki/.fm fm // fo : http://en.wikipedia.org/wiki/.fo fo // fr : http://www.afnic.fr/ // domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs fr com.fr asso.fr nom.fr prd.fr presse.fr tm.fr // domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels aeroport.fr assedic.fr avocat.fr avoues.fr cci.fr chambagri.fr chirurgiens-dentistes.fr experts-comptables.fr geometre-expert.fr gouv.fr greta.fr huissier-justice.fr medecin.fr notaires.fr pharmacien.fr port.fr veterinaire.fr // ga : http://en.wikipedia.org/wiki/.ga ga // gb : This registry is effectively dormant // Submitted by registry 2008-06-12 gb // gd : http://en.wikipedia.org/wiki/.gd gd // ge : http://www.nic.net.ge/policy_en.pdf ge com.ge edu.ge gov.ge org.ge mil.ge net.ge pvt.ge // gf : http://en.wikipedia.org/wiki/.gf gf // gg : http://www.channelisles.net/register-domains/ // Confirmed by registry 2013-11-28 gg co.gg net.gg org.gg // gh : http://en.wikipedia.org/wiki/.gh // see also: http://www.nic.gh/reg_now.php // Although domains directly at second level are not possible at the moment, // they have been possible for some time and may come back. gh com.gh edu.gh gov.gh org.gh mil.gh // gi : http://www.nic.gi/rules.html gi com.gi ltd.gi gov.gi mod.gi edu.gi org.gi // gl : http://en.wikipedia.org/wiki/.gl // http://nic.gl gl // gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm gm // gn : http://psg.com/dns/gn/gn.txt // Submitted by registry 2008-06-17 gn ac.gn com.gn edu.gn gov.gn org.gn net.gn // gov : http://en.wikipedia.org/wiki/.gov gov // gp : http://www.nic.gp/index.php?lang=en gp com.gp net.gp mobi.gp edu.gp org.gp asso.gp // gq : http://en.wikipedia.org/wiki/.gq gq // gr : https://grweb.ics.forth.gr/english/1617-B-2005.html // Submitted by registry 2008-06-09 gr com.gr edu.gr net.gr org.gr gov.gr // gs : http://en.wikipedia.org/wiki/.gs gs // gt : http://www.gt/politicas_de_registro.html gt com.gt edu.gt gob.gt ind.gt mil.gt net.gt org.gt // gu : http://gadao.gov.gu/registration.txt *.gu // gw : http://en.wikipedia.org/wiki/.gw gw // gy : http://en.wikipedia.org/wiki/.gy // http://registry.gy/ gy co.gy com.gy net.gy // hk : https://www.hkdnr.hk // Submitted by registry 2008-06-11 hk com.hk edu.hk gov.hk idv.hk net.hk org.hk 公司.hk 教育.hk 敎育.hk 政府.hk 個人.hk 个人.hk 箇人.hk 網络.hk 网络.hk 组織.hk 網絡.hk 网絡.hk 组织.hk 組織.hk 組织.hk // hm : http://en.wikipedia.org/wiki/.hm hm // hn : http://www.nic.hn/politicas/ps02,,05.html hn com.hn edu.hn org.hn net.hn mil.hn gob.hn // hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf hr iz.hr from.hr name.hr com.hr // ht : http://www.nic.ht/info/charte.cfm ht com.ht shop.ht firm.ht info.ht adult.ht net.ht pro.ht org.ht med.ht art.ht coop.ht pol.ht asso.ht edu.ht rel.ht gouv.ht perso.ht // hu : http://www.domain.hu/domain/English/sld.html // Confirmed by registry 2008-06-12 hu co.hu info.hu org.hu priv.hu sport.hu tm.hu 2000.hu agrar.hu bolt.hu casino.hu city.hu erotica.hu erotika.hu film.hu forum.hu games.hu hotel.hu ingatlan.hu jogasz.hu konyvelo.hu lakas.hu media.hu news.hu reklam.hu sex.hu shop.hu suli.hu szex.hu tozsde.hu utazas.hu video.hu // id : https://register.pandi.or.id/ id ac.id biz.id co.id desa.id go.id mil.id my.id net.id or.id sch.id web.id // ie : http://en.wikipedia.org/wiki/.ie ie gov.ie // il : http://en.wikipedia.org/wiki/.il *.il // im : https://www.nic.im/ // Submitted by registry 2013-11-15 im ac.im co.im com.im ltd.co.im net.im org.im plc.co.im tt.im tv.im // in : http://en.wikipedia.org/wiki/.in // see also: https://registry.in/Policies // Please note, that nic.in is not an offical eTLD, but used by most // government institutions. in co.in firm.in net.in org.in gen.in ind.in nic.in ac.in edu.in res.in gov.in mil.in // info : http://en.wikipedia.org/wiki/.info info // int : http://en.wikipedia.org/wiki/.int // Confirmed by registry 2008-06-18 int eu.int // io : http://www.nic.io/rules.html // list of other 2nd level tlds ? io com.io // iq : http://www.cmc.iq/english/iq/iqregister1.htm iq gov.iq edu.iq mil.iq com.iq org.iq net.iq // ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules // Also see http://www.nic.ir/Internationalized_Domain_Names // Two .ir entries added at request of , 2010-04-16 ir ac.ir co.ir gov.ir id.ir net.ir org.ir sch.ir // xn--mgba3a4f16a.ir (.ir, Persian YEH) ایران.ir // xn--mgba3a4fra.ir (.ir, Arabic YEH) ايران.ir // is : http://www.isnic.is/domain/rules.php // Confirmed by registry 2008-12-06 is net.is com.is edu.is gov.is org.is int.is // it : http://en.wikipedia.org/wiki/.it it gov.it edu.it // Reserved geo-names: // http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf // There is also a list of reserved geo-names corresponding to Italian municipalities // http://www.nic.it/documenti/appendice-c.pdf, but it is not included here. // Regions abr.it abruzzo.it aosta-valley.it aostavalley.it bas.it basilicata.it cal.it calabria.it cam.it campania.it emilia-romagna.it emiliaromagna.it emr.it friuli-v-giulia.it friuli-ve-giulia.it friuli-vegiulia.it friuli-venezia-giulia.it friuli-veneziagiulia.it friuli-vgiulia.it friuliv-giulia.it friulive-giulia.it friulivegiulia.it friulivenezia-giulia.it friuliveneziagiulia.it friulivgiulia.it fvg.it laz.it lazio.it lig.it liguria.it lom.it lombardia.it lombardy.it lucania.it mar.it marche.it mol.it molise.it piedmont.it piemonte.it pmn.it pug.it puglia.it sar.it sardegna.it sardinia.it sic.it sicilia.it sicily.it taa.it tos.it toscana.it trentino-a-adige.it trentino-aadige.it trentino-alto-adige.it trentino-altoadige.it trentino-s-tirol.it trentino-stirol.it trentino-sud-tirol.it trentino-sudtirol.it trentino-sued-tirol.it trentino-suedtirol.it trentinoa-adige.it trentinoaadige.it trentinoalto-adige.it trentinoaltoadige.it trentinos-tirol.it trentinostirol.it trentinosud-tirol.it trentinosudtirol.it trentinosued-tirol.it trentinosuedtirol.it tuscany.it umb.it umbria.it val-d-aosta.it val-daosta.it vald-aosta.it valdaosta.it valle-aosta.it valle-d-aosta.it valle-daosta.it valleaosta.it valled-aosta.it valledaosta.it vallee-aoste.it valleeaoste.it vao.it vda.it ven.it veneto.it // Provinces ag.it agrigento.it al.it alessandria.it alto-adige.it altoadige.it an.it ancona.it andria-barletta-trani.it andria-trani-barletta.it andriabarlettatrani.it andriatranibarletta.it ao.it aosta.it aoste.it ap.it aq.it aquila.it ar.it arezzo.it ascoli-piceno.it ascolipiceno.it asti.it at.it av.it avellino.it ba.it balsan.it bari.it barletta-trani-andria.it barlettatraniandria.it belluno.it benevento.it bergamo.it bg.it bi.it biella.it bl.it bn.it bo.it bologna.it bolzano.it bozen.it br.it brescia.it brindisi.it bs.it bt.it bz.it ca.it cagliari.it caltanissetta.it campidano-medio.it campidanomedio.it campobasso.it carbonia-iglesias.it carboniaiglesias.it carrara-massa.it carraramassa.it caserta.it catania.it catanzaro.it cb.it ce.it cesena-forli.it cesenaforli.it ch.it chieti.it ci.it cl.it cn.it co.it como.it cosenza.it cr.it cremona.it crotone.it cs.it ct.it cuneo.it cz.it dell-ogliastra.it dellogliastra.it en.it enna.it fc.it fe.it fermo.it ferrara.it fg.it fi.it firenze.it florence.it fm.it foggia.it forli-cesena.it forlicesena.it fr.it frosinone.it ge.it genoa.it genova.it go.it gorizia.it gr.it grosseto.it iglesias-carbonia.it iglesiascarbonia.it im.it imperia.it is.it isernia.it kr.it la-spezia.it laquila.it laspezia.it latina.it lc.it le.it lecce.it lecco.it li.it livorno.it lo.it lodi.it lt.it lu.it lucca.it macerata.it mantova.it massa-carrara.it massacarrara.it matera.it mb.it mc.it me.it medio-campidano.it mediocampidano.it messina.it mi.it milan.it milano.it mn.it mo.it modena.it monza-brianza.it monza-e-della-brianza.it monza.it monzabrianza.it monzaebrianza.it monzaedellabrianza.it ms.it mt.it na.it naples.it napoli.it no.it novara.it nu.it nuoro.it og.it ogliastra.it olbia-tempio.it olbiatempio.it or.it oristano.it ot.it pa.it padova.it padua.it palermo.it parma.it pavia.it pc.it pd.it pe.it perugia.it pesaro-urbino.it pesarourbino.it pescara.it pg.it pi.it piacenza.it pisa.it pistoia.it pn.it po.it pordenone.it potenza.it pr.it prato.it pt.it pu.it pv.it pz.it ra.it ragusa.it ravenna.it rc.it re.it reggio-calabria.it reggio-emilia.it reggiocalabria.it reggioemilia.it rg.it ri.it rieti.it rimini.it rm.it rn.it ro.it roma.it rome.it rovigo.it sa.it salerno.it sassari.it savona.it si.it siena.it siracusa.it so.it sondrio.it sp.it sr.it ss.it suedtirol.it sv.it ta.it taranto.it te.it tempio-olbia.it tempioolbia.it teramo.it terni.it tn.it to.it torino.it tp.it tr.it trani-andria-barletta.it trani-barletta-andria.it traniandriabarletta.it tranibarlettaandria.it trapani.it trentino.it trento.it treviso.it trieste.it ts.it turin.it tv.it ud.it udine.it urbino-pesaro.it urbinopesaro.it va.it varese.it vb.it vc.it ve.it venezia.it venice.it verbania.it vercelli.it verona.it vi.it vibo-valentia.it vibovalentia.it vicenza.it viterbo.it vr.it vs.it vt.it vv.it // je : http://www.channelisles.net/register-domains/ // Confirmed by registry 2013-11-28 je co.je net.je org.je // jm : http://www.com.jm/register.html *.jm // jo : http://www.dns.jo/Registration_policy.aspx jo com.jo org.jo net.jo edu.jo sch.jo gov.jo mil.jo name.jo // jobs : http://en.wikipedia.org/wiki/.jobs jobs // jp : http://en.wikipedia.org/wiki/.jp // http://jprs.co.jp/en/jpdomain.html // Submitted by registry 2014-10-30 jp // jp organizational type names ac.jp ad.jp co.jp ed.jp go.jp gr.jp lg.jp ne.jp or.jp // jp prefecture type names aichi.jp akita.jp aomori.jp chiba.jp ehime.jp fukui.jp fukuoka.jp fukushima.jp gifu.jp gunma.jp hiroshima.jp hokkaido.jp hyogo.jp ibaraki.jp ishikawa.jp iwate.jp kagawa.jp kagoshima.jp kanagawa.jp kochi.jp kumamoto.jp kyoto.jp mie.jp miyagi.jp miyazaki.jp nagano.jp nagasaki.jp nara.jp niigata.jp oita.jp okayama.jp okinawa.jp osaka.jp saga.jp saitama.jp shiga.jp shimane.jp shizuoka.jp tochigi.jp tokushima.jp tokyo.jp tottori.jp toyama.jp wakayama.jp yamagata.jp yamaguchi.jp yamanashi.jp 栃木.jp 愛知.jp 愛媛.jp 兵庫.jp 熊本.jp 茨城.jp 北海道.jp 千葉.jp 和歌山.jp 長崎.jp 長野.jp 新潟.jp 青森.jp 静岡.jp 東京.jp 石川.jp 埼玉.jp 三重.jp 京都.jp 佐賀.jp 大分.jp 大阪.jp 奈良.jp 宮城.jp 宮崎.jp 富山.jp 山口.jp 山形.jp 山梨.jp 岩手.jp 岐阜.jp 岡山.jp 島根.jp 広島.jp 徳島.jp 沖縄.jp 滋賀.jp 神奈川.jp 福井.jp 福岡.jp 福島.jp 秋田.jp 群馬.jp 香川.jp 高知.jp 鳥取.jp 鹿児島.jp // jp geographic type names // http://jprs.jp/doc/rule/saisoku-1.html *.kawasaki.jp *.kitakyushu.jp *.kobe.jp *.nagoya.jp *.sapporo.jp *.sendai.jp *.yokohama.jp !city.kawasaki.jp !city.kitakyushu.jp !city.kobe.jp !city.nagoya.jp !city.sapporo.jp !city.sendai.jp !city.yokohama.jp // 4th level registration aisai.aichi.jp ama.aichi.jp anjo.aichi.jp asuke.aichi.jp chiryu.aichi.jp chita.aichi.jp fuso.aichi.jp gamagori.aichi.jp handa.aichi.jp hazu.aichi.jp hekinan.aichi.jp higashiura.aichi.jp ichinomiya.aichi.jp inazawa.aichi.jp inuyama.aichi.jp isshiki.aichi.jp iwakura.aichi.jp kanie.aichi.jp kariya.aichi.jp kasugai.aichi.jp kira.aichi.jp kiyosu.aichi.jp komaki.aichi.jp konan.aichi.jp kota.aichi.jp mihama.aichi.jp miyoshi.aichi.jp nishio.aichi.jp nisshin.aichi.jp obu.aichi.jp oguchi.aichi.jp oharu.aichi.jp okazaki.aichi.jp owariasahi.aichi.jp seto.aichi.jp shikatsu.aichi.jp shinshiro.aichi.jp shitara.aichi.jp tahara.aichi.jp takahama.aichi.jp tobishima.aichi.jp toei.aichi.jp togo.aichi.jp tokai.aichi.jp tokoname.aichi.jp toyoake.aichi.jp toyohashi.aichi.jp toyokawa.aichi.jp toyone.aichi.jp toyota.aichi.jp tsushima.aichi.jp yatomi.aichi.jp akita.akita.jp daisen.akita.jp fujisato.akita.jp gojome.akita.jp hachirogata.akita.jp happou.akita.jp higashinaruse.akita.jp honjo.akita.jp honjyo.akita.jp ikawa.akita.jp kamikoani.akita.jp kamioka.akita.jp katagami.akita.jp kazuno.akita.jp kitaakita.akita.jp kosaka.akita.jp kyowa.akita.jp misato.akita.jp mitane.akita.jp moriyoshi.akita.jp nikaho.akita.jp noshiro.akita.jp odate.akita.jp oga.akita.jp ogata.akita.jp semboku.akita.jp yokote.akita.jp yurihonjo.akita.jp aomori.aomori.jp gonohe.aomori.jp hachinohe.aomori.jp hashikami.aomori.jp hiranai.aomori.jp hirosaki.aomori.jp itayanagi.aomori.jp kuroishi.aomori.jp misawa.aomori.jp mutsu.aomori.jp nakadomari.aomori.jp noheji.aomori.jp oirase.aomori.jp owani.aomori.jp rokunohe.aomori.jp sannohe.aomori.jp shichinohe.aomori.jp shingo.aomori.jp takko.aomori.jp towada.aomori.jp tsugaru.aomori.jp tsuruta.aomori.jp abiko.chiba.jp asahi.chiba.jp chonan.chiba.jp chosei.chiba.jp choshi.chiba.jp chuo.chiba.jp funabashi.chiba.jp futtsu.chiba.jp hanamigawa.chiba.jp ichihara.chiba.jp ichikawa.chiba.jp ichinomiya.chiba.jp inzai.chiba.jp isumi.chiba.jp kamagaya.chiba.jp kamogawa.chiba.jp kashiwa.chiba.jp katori.chiba.jp katsuura.chiba.jp kimitsu.chiba.jp kisarazu.chiba.jp kozaki.chiba.jp kujukuri.chiba.jp kyonan.chiba.jp matsudo.chiba.jp midori.chiba.jp mihama.chiba.jp minamiboso.chiba.jp mobara.chiba.jp mutsuzawa.chiba.jp nagara.chiba.jp nagareyama.chiba.jp narashino.chiba.jp narita.chiba.jp noda.chiba.jp oamishirasato.chiba.jp omigawa.chiba.jp onjuku.chiba.jp otaki.chiba.jp sakae.chiba.jp sakura.chiba.jp shimofusa.chiba.jp shirako.chiba.jp shiroi.chiba.jp shisui.chiba.jp sodegaura.chiba.jp sosa.chiba.jp tako.chiba.jp tateyama.chiba.jp togane.chiba.jp tohnosho.chiba.jp tomisato.chiba.jp urayasu.chiba.jp yachimata.chiba.jp yachiyo.chiba.jp yokaichiba.chiba.jp yokoshibahikari.chiba.jp yotsukaido.chiba.jp ainan.ehime.jp honai.ehime.jp ikata.ehime.jp imabari.ehime.jp iyo.ehime.jp kamijima.ehime.jp kihoku.ehime.jp kumakogen.ehime.jp masaki.ehime.jp matsuno.ehime.jp matsuyama.ehime.jp namikata.ehime.jp niihama.ehime.jp ozu.ehime.jp saijo.ehime.jp seiyo.ehime.jp shikokuchuo.ehime.jp tobe.ehime.jp toon.ehime.jp uchiko.ehime.jp uwajima.ehime.jp yawatahama.ehime.jp echizen.fukui.jp eiheiji.fukui.jp fukui.fukui.jp ikeda.fukui.jp katsuyama.fukui.jp mihama.fukui.jp minamiechizen.fukui.jp obama.fukui.jp ohi.fukui.jp ono.fukui.jp sabae.fukui.jp sakai.fukui.jp takahama.fukui.jp tsuruga.fukui.jp wakasa.fukui.jp ashiya.fukuoka.jp buzen.fukuoka.jp chikugo.fukuoka.jp chikuho.fukuoka.jp chikujo.fukuoka.jp chikushino.fukuoka.jp chikuzen.fukuoka.jp chuo.fukuoka.jp dazaifu.fukuoka.jp fukuchi.fukuoka.jp hakata.fukuoka.jp higashi.fukuoka.jp hirokawa.fukuoka.jp hisayama.fukuoka.jp iizuka.fukuoka.jp inatsuki.fukuoka.jp kaho.fukuoka.jp kasuga.fukuoka.jp kasuya.fukuoka.jp kawara.fukuoka.jp keisen.fukuoka.jp koga.fukuoka.jp kurate.fukuoka.jp kurogi.fukuoka.jp kurume.fukuoka.jp minami.fukuoka.jp miyako.fukuoka.jp miyama.fukuoka.jp miyawaka.fukuoka.jp mizumaki.fukuoka.jp munakata.fukuoka.jp nakagawa.fukuoka.jp nakama.fukuoka.jp nishi.fukuoka.jp nogata.fukuoka.jp ogori.fukuoka.jp okagaki.fukuoka.jp okawa.fukuoka.jp oki.fukuoka.jp omuta.fukuoka.jp onga.fukuoka.jp onojo.fukuoka.jp oto.fukuoka.jp saigawa.fukuoka.jp sasaguri.fukuoka.jp shingu.fukuoka.jp shinyoshitomi.fukuoka.jp shonai.fukuoka.jp soeda.fukuoka.jp sue.fukuoka.jp tachiarai.fukuoka.jp tagawa.fukuoka.jp takata.fukuoka.jp toho.fukuoka.jp toyotsu.fukuoka.jp tsuiki.fukuoka.jp ukiha.fukuoka.jp umi.fukuoka.jp usui.fukuoka.jp yamada.fukuoka.jp yame.fukuoka.jp yanagawa.fukuoka.jp yukuhashi.fukuoka.jp aizubange.fukushima.jp aizumisato.fukushima.jp aizuwakamatsu.fukushima.jp asakawa.fukushima.jp bandai.fukushima.jp date.fukushima.jp fukushima.fukushima.jp furudono.fukushima.jp futaba.fukushima.jp hanawa.fukushima.jp higashi.fukushima.jp hirata.fukushima.jp hirono.fukushima.jp iitate.fukushima.jp inawashiro.fukushima.jp ishikawa.fukushima.jp iwaki.fukushima.jp izumizaki.fukushima.jp kagamiishi.fukushima.jp kaneyama.fukushima.jp kawamata.fukushima.jp kitakata.fukushima.jp kitashiobara.fukushima.jp koori.fukushima.jp koriyama.fukushima.jp kunimi.fukushima.jp miharu.fukushima.jp mishima.fukushima.jp namie.fukushima.jp nango.fukushima.jp nishiaizu.fukushima.jp nishigo.fukushima.jp okuma.fukushima.jp omotego.fukushima.jp ono.fukushima.jp otama.fukushima.jp samegawa.fukushima.jp shimogo.fukushima.jp shirakawa.fukushima.jp showa.fukushima.jp soma.fukushima.jp sukagawa.fukushima.jp taishin.fukushima.jp tamakawa.fukushima.jp tanagura.fukushima.jp tenei.fukushima.jp yabuki.fukushima.jp yamato.fukushima.jp yamatsuri.fukushima.jp yanaizu.fukushima.jp yugawa.fukushima.jp anpachi.gifu.jp ena.gifu.jp gifu.gifu.jp ginan.gifu.jp godo.gifu.jp gujo.gifu.jp hashima.gifu.jp hichiso.gifu.jp hida.gifu.jp higashishirakawa.gifu.jp ibigawa.gifu.jp ikeda.gifu.jp kakamigahara.gifu.jp kani.gifu.jp kasahara.gifu.jp kasamatsu.gifu.jp kawaue.gifu.jp kitagata.gifu.jp mino.gifu.jp minokamo.gifu.jp mitake.gifu.jp mizunami.gifu.jp motosu.gifu.jp nakatsugawa.gifu.jp ogaki.gifu.jp sakahogi.gifu.jp seki.gifu.jp sekigahara.gifu.jp shirakawa.gifu.jp tajimi.gifu.jp takayama.gifu.jp tarui.gifu.jp toki.gifu.jp tomika.gifu.jp wanouchi.gifu.jp yamagata.gifu.jp yaotsu.gifu.jp yoro.gifu.jp annaka.gunma.jp chiyoda.gunma.jp fujioka.gunma.jp higashiagatsuma.gunma.jp isesaki.gunma.jp itakura.gunma.jp kanna.gunma.jp kanra.gunma.jp katashina.gunma.jp kawaba.gunma.jp kiryu.gunma.jp kusatsu.gunma.jp maebashi.gunma.jp meiwa.gunma.jp midori.gunma.jp minakami.gunma.jp naganohara.gunma.jp nakanojo.gunma.jp nanmoku.gunma.jp numata.gunma.jp oizumi.gunma.jp ora.gunma.jp ota.gunma.jp shibukawa.gunma.jp shimonita.gunma.jp shinto.gunma.jp showa.gunma.jp takasaki.gunma.jp takayama.gunma.jp tamamura.gunma.jp tatebayashi.gunma.jp tomioka.gunma.jp tsukiyono.gunma.jp tsumagoi.gunma.jp ueno.gunma.jp yoshioka.gunma.jp asaminami.hiroshima.jp daiwa.hiroshima.jp etajima.hiroshima.jp fuchu.hiroshima.jp fukuyama.hiroshima.jp hatsukaichi.hiroshima.jp higashihiroshima.hiroshima.jp hongo.hiroshima.jp jinsekikogen.hiroshima.jp kaita.hiroshima.jp kui.hiroshima.jp kumano.hiroshima.jp kure.hiroshima.jp mihara.hiroshima.jp miyoshi.hiroshima.jp naka.hiroshima.jp onomichi.hiroshima.jp osakikamijima.hiroshima.jp otake.hiroshima.jp saka.hiroshima.jp sera.hiroshima.jp seranishi.hiroshima.jp shinichi.hiroshima.jp shobara.hiroshima.jp takehara.hiroshima.jp abashiri.hokkaido.jp abira.hokkaido.jp aibetsu.hokkaido.jp akabira.hokkaido.jp akkeshi.hokkaido.jp asahikawa.hokkaido.jp ashibetsu.hokkaido.jp ashoro.hokkaido.jp assabu.hokkaido.jp atsuma.hokkaido.jp bibai.hokkaido.jp biei.hokkaido.jp bifuka.hokkaido.jp bihoro.hokkaido.jp biratori.hokkaido.jp chippubetsu.hokkaido.jp chitose.hokkaido.jp date.hokkaido.jp ebetsu.hokkaido.jp embetsu.hokkaido.jp eniwa.hokkaido.jp erimo.hokkaido.jp esan.hokkaido.jp esashi.hokkaido.jp fukagawa.hokkaido.jp fukushima.hokkaido.jp furano.hokkaido.jp furubira.hokkaido.jp haboro.hokkaido.jp hakodate.hokkaido.jp hamatonbetsu.hokkaido.jp hidaka.hokkaido.jp higashikagura.hokkaido.jp higashikawa.hokkaido.jp hiroo.hokkaido.jp hokuryu.hokkaido.jp hokuto.hokkaido.jp honbetsu.hokkaido.jp horokanai.hokkaido.jp horonobe.hokkaido.jp ikeda.hokkaido.jp imakane.hokkaido.jp ishikari.hokkaido.jp iwamizawa.hokkaido.jp iwanai.hokkaido.jp kamifurano.hokkaido.jp kamikawa.hokkaido.jp kamishihoro.hokkaido.jp kamisunagawa.hokkaido.jp kamoenai.hokkaido.jp kayabe.hokkaido.jp kembuchi.hokkaido.jp kikonai.hokkaido.jp kimobetsu.hokkaido.jp kitahiroshima.hokkaido.jp kitami.hokkaido.jp kiyosato.hokkaido.jp koshimizu.hokkaido.jp kunneppu.hokkaido.jp kuriyama.hokkaido.jp kuromatsunai.hokkaido.jp kushiro.hokkaido.jp kutchan.hokkaido.jp kyowa.hokkaido.jp mashike.hokkaido.jp matsumae.hokkaido.jp mikasa.hokkaido.jp minamifurano.hokkaido.jp mombetsu.hokkaido.jp moseushi.hokkaido.jp mukawa.hokkaido.jp muroran.hokkaido.jp naie.hokkaido.jp nakagawa.hokkaido.jp nakasatsunai.hokkaido.jp nakatombetsu.hokkaido.jp nanae.hokkaido.jp nanporo.hokkaido.jp nayoro.hokkaido.jp nemuro.hokkaido.jp niikappu.hokkaido.jp niki.hokkaido.jp nishiokoppe.hokkaido.jp noboribetsu.hokkaido.jp numata.hokkaido.jp obihiro.hokkaido.jp obira.hokkaido.jp oketo.hokkaido.jp okoppe.hokkaido.jp otaru.hokkaido.jp otobe.hokkaido.jp otofuke.hokkaido.jp otoineppu.hokkaido.jp oumu.hokkaido.jp ozora.hokkaido.jp pippu.hokkaido.jp rankoshi.hokkaido.jp rebun.hokkaido.jp rikubetsu.hokkaido.jp rishiri.hokkaido.jp rishirifuji.hokkaido.jp saroma.hokkaido.jp sarufutsu.hokkaido.jp shakotan.hokkaido.jp shari.hokkaido.jp shibecha.hokkaido.jp shibetsu.hokkaido.jp shikabe.hokkaido.jp shikaoi.hokkaido.jp shimamaki.hokkaido.jp shimizu.hokkaido.jp shimokawa.hokkaido.jp shinshinotsu.hokkaido.jp shintoku.hokkaido.jp shiranuka.hokkaido.jp shiraoi.hokkaido.jp shiriuchi.hokkaido.jp sobetsu.hokkaido.jp sunagawa.hokkaido.jp taiki.hokkaido.jp takasu.hokkaido.jp takikawa.hokkaido.jp takinoue.hokkaido.jp teshikaga.hokkaido.jp tobetsu.hokkaido.jp tohma.hokkaido.jp tomakomai.hokkaido.jp tomari.hokkaido.jp toya.hokkaido.jp toyako.hokkaido.jp toyotomi.hokkaido.jp toyoura.hokkaido.jp tsubetsu.hokkaido.jp tsukigata.hokkaido.jp urakawa.hokkaido.jp urausu.hokkaido.jp uryu.hokkaido.jp utashinai.hokkaido.jp wakkanai.hokkaido.jp wassamu.hokkaido.jp yakumo.hokkaido.jp yoichi.hokkaido.jp aioi.hyogo.jp akashi.hyogo.jp ako.hyogo.jp amagasaki.hyogo.jp aogaki.hyogo.jp asago.hyogo.jp ashiya.hyogo.jp awaji.hyogo.jp fukusaki.hyogo.jp goshiki.hyogo.jp harima.hyogo.jp himeji.hyogo.jp ichikawa.hyogo.jp inagawa.hyogo.jp itami.hyogo.jp kakogawa.hyogo.jp kamigori.hyogo.jp kamikawa.hyogo.jp kasai.hyogo.jp kasuga.hyogo.jp kawanishi.hyogo.jp miki.hyogo.jp minamiawaji.hyogo.jp nishinomiya.hyogo.jp nishiwaki.hyogo.jp ono.hyogo.jp sanda.hyogo.jp sannan.hyogo.jp sasayama.hyogo.jp sayo.hyogo.jp shingu.hyogo.jp shinonsen.hyogo.jp shiso.hyogo.jp sumoto.hyogo.jp taishi.hyogo.jp taka.hyogo.jp takarazuka.hyogo.jp takasago.hyogo.jp takino.hyogo.jp tamba.hyogo.jp tatsuno.hyogo.jp toyooka.hyogo.jp yabu.hyogo.jp yashiro.hyogo.jp yoka.hyogo.jp yokawa.hyogo.jp ami.ibaraki.jp asahi.ibaraki.jp bando.ibaraki.jp chikusei.ibaraki.jp daigo.ibaraki.jp fujishiro.ibaraki.jp hitachi.ibaraki.jp hitachinaka.ibaraki.jp hitachiomiya.ibaraki.jp hitachiota.ibaraki.jp ibaraki.ibaraki.jp ina.ibaraki.jp inashiki.ibaraki.jp itako.ibaraki.jp iwama.ibaraki.jp joso.ibaraki.jp kamisu.ibaraki.jp kasama.ibaraki.jp kashima.ibaraki.jp kasumigaura.ibaraki.jp koga.ibaraki.jp miho.ibaraki.jp mito.ibaraki.jp moriya.ibaraki.jp naka.ibaraki.jp namegata.ibaraki.jp oarai.ibaraki.jp ogawa.ibaraki.jp omitama.ibaraki.jp ryugasaki.ibaraki.jp sakai.ibaraki.jp sakuragawa.ibaraki.jp shimodate.ibaraki.jp shimotsuma.ibaraki.jp shirosato.ibaraki.jp sowa.ibaraki.jp suifu.ibaraki.jp takahagi.ibaraki.jp tamatsukuri.ibaraki.jp tokai.ibaraki.jp tomobe.ibaraki.jp tone.ibaraki.jp toride.ibaraki.jp tsuchiura.ibaraki.jp tsukuba.ibaraki.jp uchihara.ibaraki.jp ushiku.ibaraki.jp yachiyo.ibaraki.jp yamagata.ibaraki.jp yawara.ibaraki.jp yuki.ibaraki.jp anamizu.ishikawa.jp hakui.ishikawa.jp hakusan.ishikawa.jp kaga.ishikawa.jp kahoku.ishikawa.jp kanazawa.ishikawa.jp kawakita.ishikawa.jp komatsu.ishikawa.jp nakanoto.ishikawa.jp nanao.ishikawa.jp nomi.ishikawa.jp nonoichi.ishikawa.jp noto.ishikawa.jp shika.ishikawa.jp suzu.ishikawa.jp tsubata.ishikawa.jp tsurugi.ishikawa.jp uchinada.ishikawa.jp wajima.ishikawa.jp fudai.iwate.jp fujisawa.iwate.jp hanamaki.iwate.jp hiraizumi.iwate.jp hirono.iwate.jp ichinohe.iwate.jp ichinoseki.iwate.jp iwaizumi.iwate.jp iwate.iwate.jp joboji.iwate.jp kamaishi.iwate.jp kanegasaki.iwate.jp karumai.iwate.jp kawai.iwate.jp kitakami.iwate.jp kuji.iwate.jp kunohe.iwate.jp kuzumaki.iwate.jp miyako.iwate.jp mizusawa.iwate.jp morioka.iwate.jp ninohe.iwate.jp noda.iwate.jp ofunato.iwate.jp oshu.iwate.jp otsuchi.iwate.jp rikuzentakata.iwate.jp shiwa.iwate.jp shizukuishi.iwate.jp sumita.iwate.jp tanohata.iwate.jp tono.iwate.jp yahaba.iwate.jp yamada.iwate.jp ayagawa.kagawa.jp higashikagawa.kagawa.jp kanonji.kagawa.jp kotohira.kagawa.jp manno.kagawa.jp marugame.kagawa.jp mitoyo.kagawa.jp naoshima.kagawa.jp sanuki.kagawa.jp tadotsu.kagawa.jp takamatsu.kagawa.jp tonosho.kagawa.jp uchinomi.kagawa.jp utazu.kagawa.jp zentsuji.kagawa.jp akune.kagoshima.jp amami.kagoshima.jp hioki.kagoshima.jp isa.kagoshima.jp isen.kagoshima.jp izumi.kagoshima.jp kagoshima.kagoshima.jp kanoya.kagoshima.jp kawanabe.kagoshima.jp kinko.kagoshima.jp kouyama.kagoshima.jp makurazaki.kagoshima.jp matsumoto.kagoshima.jp minamitane.kagoshima.jp nakatane.kagoshima.jp nishinoomote.kagoshima.jp satsumasendai.kagoshima.jp soo.kagoshima.jp tarumizu.kagoshima.jp yusui.kagoshima.jp aikawa.kanagawa.jp atsugi.kanagawa.jp ayase.kanagawa.jp chigasaki.kanagawa.jp ebina.kanagawa.jp fujisawa.kanagawa.jp hadano.kanagawa.jp hakone.kanagawa.jp hiratsuka.kanagawa.jp isehara.kanagawa.jp kaisei.kanagawa.jp kamakura.kanagawa.jp kiyokawa.kanagawa.jp matsuda.kanagawa.jp minamiashigara.kanagawa.jp miura.kanagawa.jp nakai.kanagawa.jp ninomiya.kanagawa.jp odawara.kanagawa.jp oi.kanagawa.jp oiso.kanagawa.jp sagamihara.kanagawa.jp samukawa.kanagawa.jp tsukui.kanagawa.jp yamakita.kanagawa.jp yamato.kanagawa.jp yokosuka.kanagawa.jp yugawara.kanagawa.jp zama.kanagawa.jp zushi.kanagawa.jp aki.kochi.jp geisei.kochi.jp hidaka.kochi.jp higashitsuno.kochi.jp ino.kochi.jp kagami.kochi.jp kami.kochi.jp kitagawa.kochi.jp kochi.kochi.jp mihara.kochi.jp motoyama.kochi.jp muroto.kochi.jp nahari.kochi.jp nakamura.kochi.jp nankoku.kochi.jp nishitosa.kochi.jp niyodogawa.kochi.jp ochi.kochi.jp okawa.kochi.jp otoyo.kochi.jp otsuki.kochi.jp sakawa.kochi.jp sukumo.kochi.jp susaki.kochi.jp tosa.kochi.jp tosashimizu.kochi.jp toyo.kochi.jp tsuno.kochi.jp umaji.kochi.jp yasuda.kochi.jp yusuhara.kochi.jp amakusa.kumamoto.jp arao.kumamoto.jp aso.kumamoto.jp choyo.kumamoto.jp gyokuto.kumamoto.jp hitoyoshi.kumamoto.jp kamiamakusa.kumamoto.jp kashima.kumamoto.jp kikuchi.kumamoto.jp kosa.kumamoto.jp kumamoto.kumamoto.jp mashiki.kumamoto.jp mifune.kumamoto.jp minamata.kumamoto.jp minamioguni.kumamoto.jp nagasu.kumamoto.jp nishihara.kumamoto.jp oguni.kumamoto.jp ozu.kumamoto.jp sumoto.kumamoto.jp takamori.kumamoto.jp uki.kumamoto.jp uto.kumamoto.jp yamaga.kumamoto.jp yamato.kumamoto.jp yatsushiro.kumamoto.jp ayabe.kyoto.jp fukuchiyama.kyoto.jp higashiyama.kyoto.jp ide.kyoto.jp ine.kyoto.jp joyo.kyoto.jp kameoka.kyoto.jp kamo.kyoto.jp kita.kyoto.jp kizu.kyoto.jp kumiyama.kyoto.jp kyotamba.kyoto.jp kyotanabe.kyoto.jp kyotango.kyoto.jp maizuru.kyoto.jp minami.kyoto.jp minamiyamashiro.kyoto.jp miyazu.kyoto.jp muko.kyoto.jp nagaokakyo.kyoto.jp nakagyo.kyoto.jp nantan.kyoto.jp oyamazaki.kyoto.jp sakyo.kyoto.jp seika.kyoto.jp tanabe.kyoto.jp uji.kyoto.jp ujitawara.kyoto.jp wazuka.kyoto.jp yamashina.kyoto.jp yawata.kyoto.jp asahi.mie.jp inabe.mie.jp ise.mie.jp kameyama.mie.jp kawagoe.mie.jp kiho.mie.jp kisosaki.mie.jp kiwa.mie.jp komono.mie.jp kumano.mie.jp kuwana.mie.jp matsusaka.mie.jp meiwa.mie.jp mihama.mie.jp minamiise.mie.jp misugi.mie.jp miyama.mie.jp nabari.mie.jp shima.mie.jp suzuka.mie.jp tado.mie.jp taiki.mie.jp taki.mie.jp tamaki.mie.jp toba.mie.jp tsu.mie.jp udono.mie.jp ureshino.mie.jp watarai.mie.jp yokkaichi.mie.jp furukawa.miyagi.jp higashimatsushima.miyagi.jp ishinomaki.miyagi.jp iwanuma.miyagi.jp kakuda.miyagi.jp kami.miyagi.jp kawasaki.miyagi.jp kesennuma.miyagi.jp marumori.miyagi.jp matsushima.miyagi.jp minamisanriku.miyagi.jp misato.miyagi.jp murata.miyagi.jp natori.miyagi.jp ogawara.miyagi.jp ohira.miyagi.jp onagawa.miyagi.jp osaki.miyagi.jp rifu.miyagi.jp semine.miyagi.jp shibata.miyagi.jp shichikashuku.miyagi.jp shikama.miyagi.jp shiogama.miyagi.jp shiroishi.miyagi.jp tagajo.miyagi.jp taiwa.miyagi.jp tome.miyagi.jp tomiya.miyagi.jp wakuya.miyagi.jp watari.miyagi.jp yamamoto.miyagi.jp zao.miyagi.jp aya.miyazaki.jp ebino.miyazaki.jp gokase.miyazaki.jp hyuga.miyazaki.jp kadogawa.miyazaki.jp kawaminami.miyazaki.jp kijo.miyazaki.jp kitagawa.miyazaki.jp kitakata.miyazaki.jp kitaura.miyazaki.jp kobayashi.miyazaki.jp kunitomi.miyazaki.jp kushima.miyazaki.jp mimata.miyazaki.jp miyakonojo.miyazaki.jp miyazaki.miyazaki.jp morotsuka.miyazaki.jp nichinan.miyazaki.jp nishimera.miyazaki.jp nobeoka.miyazaki.jp saito.miyazaki.jp shiiba.miyazaki.jp shintomi.miyazaki.jp takaharu.miyazaki.jp takanabe.miyazaki.jp takazaki.miyazaki.jp tsuno.miyazaki.jp achi.nagano.jp agematsu.nagano.jp anan.nagano.jp aoki.nagano.jp asahi.nagano.jp azumino.nagano.jp chikuhoku.nagano.jp chikuma.nagano.jp chino.nagano.jp fujimi.nagano.jp hakuba.nagano.jp hara.nagano.jp hiraya.nagano.jp iida.nagano.jp iijima.nagano.jp iiyama.nagano.jp iizuna.nagano.jp ikeda.nagano.jp ikusaka.nagano.jp ina.nagano.jp karuizawa.nagano.jp kawakami.nagano.jp kiso.nagano.jp kisofukushima.nagano.jp kitaaiki.nagano.jp komagane.nagano.jp komoro.nagano.jp matsukawa.nagano.jp matsumoto.nagano.jp miasa.nagano.jp minamiaiki.nagano.jp minamimaki.nagano.jp minamiminowa.nagano.jp minowa.nagano.jp miyada.nagano.jp miyota.nagano.jp mochizuki.nagano.jp nagano.nagano.jp nagawa.nagano.jp nagiso.nagano.jp nakagawa.nagano.jp nakano.nagano.jp nozawaonsen.nagano.jp obuse.nagano.jp ogawa.nagano.jp okaya.nagano.jp omachi.nagano.jp omi.nagano.jp ookuwa.nagano.jp ooshika.nagano.jp otaki.nagano.jp otari.nagano.jp sakae.nagano.jp sakaki.nagano.jp saku.nagano.jp sakuho.nagano.jp shimosuwa.nagano.jp shinanomachi.nagano.jp shiojiri.nagano.jp suwa.nagano.jp suzaka.nagano.jp takagi.nagano.jp takamori.nagano.jp takayama.nagano.jp tateshina.nagano.jp tatsuno.nagano.jp togakushi.nagano.jp togura.nagano.jp tomi.nagano.jp ueda.nagano.jp wada.nagano.jp yamagata.nagano.jp yamanouchi.nagano.jp yasaka.nagano.jp yasuoka.nagano.jp chijiwa.nagasaki.jp futsu.nagasaki.jp goto.nagasaki.jp hasami.nagasaki.jp hirado.nagasaki.jp iki.nagasaki.jp isahaya.nagasaki.jp kawatana.nagasaki.jp kuchinotsu.nagasaki.jp matsuura.nagasaki.jp nagasaki.nagasaki.jp obama.nagasaki.jp omura.nagasaki.jp oseto.nagasaki.jp saikai.nagasaki.jp sasebo.nagasaki.jp seihi.nagasaki.jp shimabara.nagasaki.jp shinkamigoto.nagasaki.jp togitsu.nagasaki.jp tsushima.nagasaki.jp unzen.nagasaki.jp ando.nara.jp gose.nara.jp heguri.nara.jp higashiyoshino.nara.jp ikaruga.nara.jp ikoma.nara.jp kamikitayama.nara.jp kanmaki.nara.jp kashiba.nara.jp kashihara.nara.jp katsuragi.nara.jp kawai.nara.jp kawakami.nara.jp kawanishi.nara.jp koryo.nara.jp kurotaki.nara.jp mitsue.nara.jp miyake.nara.jp nara.nara.jp nosegawa.nara.jp oji.nara.jp ouda.nara.jp oyodo.nara.jp sakurai.nara.jp sango.nara.jp shimoichi.nara.jp shimokitayama.nara.jp shinjo.nara.jp soni.nara.jp takatori.nara.jp tawaramoto.nara.jp tenkawa.nara.jp tenri.nara.jp uda.nara.jp yamatokoriyama.nara.jp yamatotakada.nara.jp yamazoe.nara.jp yoshino.nara.jp aga.niigata.jp agano.niigata.jp gosen.niigata.jp itoigawa.niigata.jp izumozaki.niigata.jp joetsu.niigata.jp kamo.niigata.jp kariwa.niigata.jp kashiwazaki.niigata.jp minamiuonuma.niigata.jp mitsuke.niigata.jp muika.niigata.jp murakami.niigata.jp myoko.niigata.jp nagaoka.niigata.jp niigata.niigata.jp ojiya.niigata.jp omi.niigata.jp sado.niigata.jp sanjo.niigata.jp seiro.niigata.jp seirou.niigata.jp sekikawa.niigata.jp shibata.niigata.jp tagami.niigata.jp tainai.niigata.jp tochio.niigata.jp tokamachi.niigata.jp tsubame.niigata.jp tsunan.niigata.jp uonuma.niigata.jp yahiko.niigata.jp yoita.niigata.jp yuzawa.niigata.jp beppu.oita.jp bungoono.oita.jp bungotakada.oita.jp hasama.oita.jp hiji.oita.jp himeshima.oita.jp hita.oita.jp kamitsue.oita.jp kokonoe.oita.jp kuju.oita.jp kunisaki.oita.jp kusu.oita.jp oita.oita.jp saiki.oita.jp taketa.oita.jp tsukumi.oita.jp usa.oita.jp usuki.oita.jp yufu.oita.jp akaiwa.okayama.jp asakuchi.okayama.jp bizen.okayama.jp hayashima.okayama.jp ibara.okayama.jp kagamino.okayama.jp kasaoka.okayama.jp kibichuo.okayama.jp kumenan.okayama.jp kurashiki.okayama.jp maniwa.okayama.jp misaki.okayama.jp nagi.okayama.jp niimi.okayama.jp nishiawakura.okayama.jp okayama.okayama.jp satosho.okayama.jp setouchi.okayama.jp shinjo.okayama.jp shoo.okayama.jp soja.okayama.jp takahashi.okayama.jp tamano.okayama.jp tsuyama.okayama.jp wake.okayama.jp yakage.okayama.jp aguni.okinawa.jp ginowan.okinawa.jp ginoza.okinawa.jp gushikami.okinawa.jp haebaru.okinawa.jp higashi.okinawa.jp hirara.okinawa.jp iheya.okinawa.jp ishigaki.okinawa.jp ishikawa.okinawa.jp itoman.okinawa.jp izena.okinawa.jp kadena.okinawa.jp kin.okinawa.jp kitadaito.okinawa.jp kitanakagusuku.okinawa.jp kumejima.okinawa.jp kunigami.okinawa.jp minamidaito.okinawa.jp motobu.okinawa.jp nago.okinawa.jp naha.okinawa.jp nakagusuku.okinawa.jp nakijin.okinawa.jp nanjo.okinawa.jp nishihara.okinawa.jp ogimi.okinawa.jp okinawa.okinawa.jp onna.okinawa.jp shimoji.okinawa.jp taketomi.okinawa.jp tarama.okinawa.jp tokashiki.okinawa.jp tomigusuku.okinawa.jp tonaki.okinawa.jp urasoe.okinawa.jp uruma.okinawa.jp yaese.okinawa.jp yomitan.okinawa.jp yonabaru.okinawa.jp yonaguni.okinawa.jp zamami.okinawa.jp abeno.osaka.jp chihayaakasaka.osaka.jp chuo.osaka.jp daito.osaka.jp fujiidera.osaka.jp habikino.osaka.jp hannan.osaka.jp higashiosaka.osaka.jp higashisumiyoshi.osaka.jp higashiyodogawa.osaka.jp hirakata.osaka.jp ibaraki.osaka.jp ikeda.osaka.jp izumi.osaka.jp izumiotsu.osaka.jp izumisano.osaka.jp kadoma.osaka.jp kaizuka.osaka.jp kanan.osaka.jp kashiwara.osaka.jp katano.osaka.jp kawachinagano.osaka.jp kishiwada.osaka.jp kita.osaka.jp kumatori.osaka.jp matsubara.osaka.jp minato.osaka.jp minoh.osaka.jp misaki.osaka.jp moriguchi.osaka.jp neyagawa.osaka.jp nishi.osaka.jp nose.osaka.jp osakasayama.osaka.jp sakai.osaka.jp sayama.osaka.jp sennan.osaka.jp settsu.osaka.jp shijonawate.osaka.jp shimamoto.osaka.jp suita.osaka.jp tadaoka.osaka.jp taishi.osaka.jp tajiri.osaka.jp takaishi.osaka.jp takatsuki.osaka.jp tondabayashi.osaka.jp toyonaka.osaka.jp toyono.osaka.jp yao.osaka.jp ariake.saga.jp arita.saga.jp fukudomi.saga.jp genkai.saga.jp hamatama.saga.jp hizen.saga.jp imari.saga.jp kamimine.saga.jp kanzaki.saga.jp karatsu.saga.jp kashima.saga.jp kitagata.saga.jp kitahata.saga.jp kiyama.saga.jp kouhoku.saga.jp kyuragi.saga.jp nishiarita.saga.jp ogi.saga.jp omachi.saga.jp ouchi.saga.jp saga.saga.jp shiroishi.saga.jp taku.saga.jp tara.saga.jp tosu.saga.jp yoshinogari.saga.jp arakawa.saitama.jp asaka.saitama.jp chichibu.saitama.jp fujimi.saitama.jp fujimino.saitama.jp fukaya.saitama.jp hanno.saitama.jp hanyu.saitama.jp hasuda.saitama.jp hatogaya.saitama.jp hatoyama.saitama.jp hidaka.saitama.jp higashichichibu.saitama.jp higashimatsuyama.saitama.jp honjo.saitama.jp ina.saitama.jp iruma.saitama.jp iwatsuki.saitama.jp kamiizumi.saitama.jp kamikawa.saitama.jp kamisato.saitama.jp kasukabe.saitama.jp kawagoe.saitama.jp kawaguchi.saitama.jp kawajima.saitama.jp kazo.saitama.jp kitamoto.saitama.jp koshigaya.saitama.jp kounosu.saitama.jp kuki.saitama.jp kumagaya.saitama.jp matsubushi.saitama.jp minano.saitama.jp misato.saitama.jp miyashiro.saitama.jp miyoshi.saitama.jp moroyama.saitama.jp nagatoro.saitama.jp namegawa.saitama.jp niiza.saitama.jp ogano.saitama.jp ogawa.saitama.jp ogose.saitama.jp okegawa.saitama.jp omiya.saitama.jp otaki.saitama.jp ranzan.saitama.jp ryokami.saitama.jp saitama.saitama.jp sakado.saitama.jp satte.saitama.jp sayama.saitama.jp shiki.saitama.jp shiraoka.saitama.jp soka.saitama.jp sugito.saitama.jp toda.saitama.jp tokigawa.saitama.jp tokorozawa.saitama.jp tsurugashima.saitama.jp urawa.saitama.jp warabi.saitama.jp yashio.saitama.jp yokoze.saitama.jp yono.saitama.jp yorii.saitama.jp yoshida.saitama.jp yoshikawa.saitama.jp yoshimi.saitama.jp aisho.shiga.jp gamo.shiga.jp higashiomi.shiga.jp hikone.shiga.jp koka.shiga.jp konan.shiga.jp kosei.shiga.jp koto.shiga.jp kusatsu.shiga.jp maibara.shiga.jp moriyama.shiga.jp nagahama.shiga.jp nishiazai.shiga.jp notogawa.shiga.jp omihachiman.shiga.jp otsu.shiga.jp ritto.shiga.jp ryuoh.shiga.jp takashima.shiga.jp takatsuki.shiga.jp torahime.shiga.jp toyosato.shiga.jp yasu.shiga.jp akagi.shimane.jp ama.shimane.jp gotsu.shimane.jp hamada.shimane.jp higashiizumo.shimane.jp hikawa.shimane.jp hikimi.shimane.jp izumo.shimane.jp kakinoki.shimane.jp masuda.shimane.jp matsue.shimane.jp misato.shimane.jp nishinoshima.shimane.jp ohda.shimane.jp okinoshima.shimane.jp okuizumo.shimane.jp shimane.shimane.jp tamayu.shimane.jp tsuwano.shimane.jp unnan.shimane.jp yakumo.shimane.jp yasugi.shimane.jp yatsuka.shimane.jp arai.shizuoka.jp atami.shizuoka.jp fuji.shizuoka.jp fujieda.shizuoka.jp fujikawa.shizuoka.jp fujinomiya.shizuoka.jp fukuroi.shizuoka.jp gotemba.shizuoka.jp haibara.shizuoka.jp hamamatsu.shizuoka.jp higashiizu.shizuoka.jp ito.shizuoka.jp iwata.shizuoka.jp izu.shizuoka.jp izunokuni.shizuoka.jp kakegawa.shizuoka.jp kannami.shizuoka.jp kawanehon.shizuoka.jp kawazu.shizuoka.jp kikugawa.shizuoka.jp kosai.shizuoka.jp makinohara.shizuoka.jp matsuzaki.shizuoka.jp minamiizu.shizuoka.jp mishima.shizuoka.jp morimachi.shizuoka.jp nishiizu.shizuoka.jp numazu.shizuoka.jp omaezaki.shizuoka.jp shimada.shizuoka.jp shimizu.shizuoka.jp shimoda.shizuoka.jp shizuoka.shizuoka.jp susono.shizuoka.jp yaizu.shizuoka.jp yoshida.shizuoka.jp ashikaga.tochigi.jp bato.tochigi.jp haga.tochigi.jp ichikai.tochigi.jp iwafune.tochigi.jp kaminokawa.tochigi.jp kanuma.tochigi.jp karasuyama.tochigi.jp kuroiso.tochigi.jp mashiko.tochigi.jp mibu.tochigi.jp moka.tochigi.jp motegi.tochigi.jp nasu.tochigi.jp nasushiobara.tochigi.jp nikko.tochigi.jp nishikata.tochigi.jp nogi.tochigi.jp ohira.tochigi.jp ohtawara.tochigi.jp oyama.tochigi.jp sakura.tochigi.jp sano.tochigi.jp shimotsuke.tochigi.jp shioya.tochigi.jp takanezawa.tochigi.jp tochigi.tochigi.jp tsuga.tochigi.jp ujiie.tochigi.jp utsunomiya.tochigi.jp yaita.tochigi.jp aizumi.tokushima.jp anan.tokushima.jp ichiba.tokushima.jp itano.tokushima.jp kainan.tokushima.jp komatsushima.tokushima.jp matsushige.tokushima.jp mima.tokushima.jp minami.tokushima.jp miyoshi.tokushima.jp mugi.tokushima.jp nakagawa.tokushima.jp naruto.tokushima.jp sanagochi.tokushima.jp shishikui.tokushima.jp tokushima.tokushima.jp wajiki.tokushima.jp adachi.tokyo.jp akiruno.tokyo.jp akishima.tokyo.jp aogashima.tokyo.jp arakawa.tokyo.jp bunkyo.tokyo.jp chiyoda.tokyo.jp chofu.tokyo.jp chuo.tokyo.jp edogawa.tokyo.jp fuchu.tokyo.jp fussa.tokyo.jp hachijo.tokyo.jp hachioji.tokyo.jp hamura.tokyo.jp higashikurume.tokyo.jp higashimurayama.tokyo.jp higashiyamato.tokyo.jp hino.tokyo.jp hinode.tokyo.jp hinohara.tokyo.jp inagi.tokyo.jp itabashi.tokyo.jp katsushika.tokyo.jp kita.tokyo.jp kiyose.tokyo.jp kodaira.tokyo.jp koganei.tokyo.jp kokubunji.tokyo.jp komae.tokyo.jp koto.tokyo.jp kouzushima.tokyo.jp kunitachi.tokyo.jp machida.tokyo.jp meguro.tokyo.jp minato.tokyo.jp mitaka.tokyo.jp mizuho.tokyo.jp musashimurayama.tokyo.jp musashino.tokyo.jp nakano.tokyo.jp nerima.tokyo.jp ogasawara.tokyo.jp okutama.tokyo.jp ome.tokyo.jp oshima.tokyo.jp ota.tokyo.jp setagaya.tokyo.jp shibuya.tokyo.jp shinagawa.tokyo.jp shinjuku.tokyo.jp suginami.tokyo.jp sumida.tokyo.jp tachikawa.tokyo.jp taito.tokyo.jp tama.tokyo.jp toshima.tokyo.jp chizu.tottori.jp hino.tottori.jp kawahara.tottori.jp koge.tottori.jp kotoura.tottori.jp misasa.tottori.jp nanbu.tottori.jp nichinan.tottori.jp sakaiminato.tottori.jp tottori.tottori.jp wakasa.tottori.jp yazu.tottori.jp yonago.tottori.jp asahi.toyama.jp fuchu.toyama.jp fukumitsu.toyama.jp funahashi.toyama.jp himi.toyama.jp imizu.toyama.jp inami.toyama.jp johana.toyama.jp kamiichi.toyama.jp kurobe.toyama.jp nakaniikawa.toyama.jp namerikawa.toyama.jp nanto.toyama.jp nyuzen.toyama.jp oyabe.toyama.jp taira.toyama.jp takaoka.toyama.jp tateyama.toyama.jp toga.toyama.jp tonami.toyama.jp toyama.toyama.jp unazuki.toyama.jp uozu.toyama.jp yamada.toyama.jp arida.wakayama.jp aridagawa.wakayama.jp gobo.wakayama.jp hashimoto.wakayama.jp hidaka.wakayama.jp hirogawa.wakayama.jp inami.wakayama.jp iwade.wakayama.jp kainan.wakayama.jp kamitonda.wakayama.jp katsuragi.wakayama.jp kimino.wakayama.jp kinokawa.wakayama.jp kitayama.wakayama.jp koya.wakayama.jp koza.wakayama.jp kozagawa.wakayama.jp kudoyama.wakayama.jp kushimoto.wakayama.jp mihama.wakayama.jp misato.wakayama.jp nachikatsuura.wakayama.jp shingu.wakayama.jp shirahama.wakayama.jp taiji.wakayama.jp tanabe.wakayama.jp wakayama.wakayama.jp yuasa.wakayama.jp yura.wakayama.jp asahi.yamagata.jp funagata.yamagata.jp higashine.yamagata.jp iide.yamagata.jp kahoku.yamagata.jp kaminoyama.yamagata.jp kaneyama.yamagata.jp kawanishi.yamagata.jp mamurogawa.yamagata.jp mikawa.yamagata.jp murayama.yamagata.jp nagai.yamagata.jp nakayama.yamagata.jp nanyo.yamagata.jp nishikawa.yamagata.jp obanazawa.yamagata.jp oe.yamagata.jp oguni.yamagata.jp ohkura.yamagata.jp oishida.yamagata.jp sagae.yamagata.jp sakata.yamagata.jp sakegawa.yamagata.jp shinjo.yamagata.jp shirataka.yamagata.jp shonai.yamagata.jp takahata.yamagata.jp tendo.yamagata.jp tozawa.yamagata.jp tsuruoka.yamagata.jp yamagata.yamagata.jp yamanobe.yamagata.jp yonezawa.yamagata.jp yuza.yamagata.jp abu.yamaguchi.jp hagi.yamaguchi.jp hikari.yamaguchi.jp hofu.yamaguchi.jp iwakuni.yamaguchi.jp kudamatsu.yamaguchi.jp mitou.yamaguchi.jp nagato.yamaguchi.jp oshima.yamaguchi.jp shimonoseki.yamaguchi.jp shunan.yamaguchi.jp tabuse.yamaguchi.jp tokuyama.yamaguchi.jp toyota.yamaguchi.jp ube.yamaguchi.jp yuu.yamaguchi.jp chuo.yamanashi.jp doshi.yamanashi.jp fuefuki.yamanashi.jp fujikawa.yamanashi.jp fujikawaguchiko.yamanashi.jp fujiyoshida.yamanashi.jp hayakawa.yamanashi.jp hokuto.yamanashi.jp ichikawamisato.yamanashi.jp kai.yamanashi.jp kofu.yamanashi.jp koshu.yamanashi.jp kosuge.yamanashi.jp minami-alps.yamanashi.jp minobu.yamanashi.jp nakamichi.yamanashi.jp nanbu.yamanashi.jp narusawa.yamanashi.jp nirasaki.yamanashi.jp nishikatsura.yamanashi.jp oshino.yamanashi.jp otsuki.yamanashi.jp showa.yamanashi.jp tabayama.yamanashi.jp tsuru.yamanashi.jp uenohara.yamanashi.jp yamanakako.yamanashi.jp yamanashi.yamanashi.jp // ke : http://www.kenic.or.ke/index.php?option=com_content&task=view&id=117&Itemid=145 *.ke // kg : http://www.domain.kg/dmn_n.html kg org.kg net.kg com.kg edu.kg gov.kg mil.kg // kh : http://www.mptc.gov.kh/dns_registration.htm *.kh // ki : http://www.ki/dns/index.html ki edu.ki biz.ki net.ki org.ki gov.ki info.ki com.ki // km : http://en.wikipedia.org/wiki/.km // http://www.domaine.km/documents/charte.doc km org.km nom.km gov.km prd.km tm.km edu.km mil.km ass.km com.km // These are only mentioned as proposed suggestions at domaine.km, but // http://en.wikipedia.org/wiki/.km says they're available for registration: coop.km asso.km presse.km medecin.km notaires.km pharmaciens.km veterinaire.km gouv.km // kn : http://en.wikipedia.org/wiki/.kn // http://www.dot.kn/domainRules.html kn net.kn org.kn edu.kn gov.kn // kp : http://www.kcce.kp/en_index.php kp com.kp edu.kp gov.kp org.kp rep.kp tra.kp // kr : http://en.wikipedia.org/wiki/.kr // see also: http://domain.nida.or.kr/eng/registration.jsp kr ac.kr co.kr es.kr go.kr hs.kr kg.kr mil.kr ms.kr ne.kr or.kr pe.kr re.kr sc.kr // kr geographical names busan.kr chungbuk.kr chungnam.kr daegu.kr daejeon.kr gangwon.kr gwangju.kr gyeongbuk.kr gyeonggi.kr gyeongnam.kr incheon.kr jeju.kr jeonbuk.kr jeonnam.kr seoul.kr ulsan.kr // kw : http://en.wikipedia.org/wiki/.kw *.kw // ky : http://www.icta.ky/da_ky_reg_dom.php // Confirmed by registry 2008-06-17 ky edu.ky gov.ky com.ky org.ky net.ky // kz : http://en.wikipedia.org/wiki/.kz // see also: http://www.nic.kz/rules/index.jsp kz org.kz edu.kz net.kz gov.kz mil.kz com.kz // la : http://en.wikipedia.org/wiki/.la // Submitted by registry 2008-06-10 la int.la net.la info.la edu.la gov.la per.la com.la org.la // lb : http://en.wikipedia.org/wiki/.lb // Submitted by registry 2008-06-17 lb com.lb edu.lb gov.lb net.lb org.lb // lc : http://en.wikipedia.org/wiki/.lc // see also: http://www.nic.lc/rules.htm lc com.lc net.lc co.lc org.lc edu.lc gov.lc // li : http://en.wikipedia.org/wiki/.li li // lk : http://www.nic.lk/seclevpr.html lk gov.lk sch.lk net.lk int.lk com.lk org.lk edu.lk ngo.lk soc.lk web.lk ltd.lk assn.lk grp.lk hotel.lk // lr : http://psg.com/dns/lr/lr.txt // Submitted by registry 2008-06-17 lr com.lr edu.lr gov.lr org.lr net.lr // ls : http://en.wikipedia.org/wiki/.ls ls co.ls org.ls // lt : http://en.wikipedia.org/wiki/.lt lt // gov.lt : http://www.gov.lt/index_en.php gov.lt // lu : http://www.dns.lu/en/ lu // lv : http://www.nic.lv/DNS/En/generic.php lv com.lv edu.lv gov.lv org.lv mil.lv id.lv net.lv asn.lv conf.lv // ly : http://www.nic.ly/regulations.php ly com.ly net.ly gov.ly plc.ly edu.ly sch.ly med.ly org.ly id.ly // ma : http://en.wikipedia.org/wiki/.ma // http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf ma co.ma net.ma gov.ma org.ma ac.ma press.ma // mc : http://www.nic.mc/ mc tm.mc asso.mc // md : http://en.wikipedia.org/wiki/.md md // me : http://en.wikipedia.org/wiki/.me me co.me net.me org.me edu.me ac.me gov.me its.me priv.me // mg : http://www.nic.mg/tarif.htm mg org.mg nom.mg gov.mg prd.mg tm.mg edu.mg mil.mg com.mg // mh : http://en.wikipedia.org/wiki/.mh mh // mil : http://en.wikipedia.org/wiki/.mil mil // mk : http://en.wikipedia.org/wiki/.mk // see also: http://dns.marnet.net.mk/postapka.php mk com.mk org.mk net.mk edu.mk gov.mk inf.mk name.mk // ml : http://www.gobin.info/domainname/ml-template.doc // see also: http://en.wikipedia.org/wiki/.ml ml com.ml edu.ml gouv.ml gov.ml net.ml org.ml presse.ml // mm : http://en.wikipedia.org/wiki/.mm *.mm // mn : http://en.wikipedia.org/wiki/.mn mn gov.mn edu.mn org.mn // mo : http://www.monic.net.mo/ mo com.mo net.mo org.mo edu.mo gov.mo // mobi : http://en.wikipedia.org/wiki/.mobi mobi // mp : http://www.dot.mp/ // Confirmed by registry 2008-06-17 mp // mq : http://en.wikipedia.org/wiki/.mq mq // mr : http://en.wikipedia.org/wiki/.mr mr gov.mr // ms : http://www.nic.ms/pdf/MS_Domain_Name_Rules.pdf ms com.ms edu.ms gov.ms net.ms org.ms // mt : https://www.nic.org.mt/go/policy // Submitted by registry 2013-11-19 mt com.mt edu.mt net.mt org.mt // mu : http://en.wikipedia.org/wiki/.mu mu com.mu net.mu org.mu gov.mu ac.mu co.mu or.mu // museum : http://about.museum/naming/ // http://index.museum/ museum academy.museum agriculture.museum air.museum airguard.museum alabama.museum alaska.museum amber.museum ambulance.museum american.museum americana.museum americanantiques.museum americanart.museum amsterdam.museum and.museum annefrank.museum anthro.museum anthropology.museum antiques.museum aquarium.museum arboretum.museum archaeological.museum archaeology.museum architecture.museum art.museum artanddesign.museum artcenter.museum artdeco.museum arteducation.museum artgallery.museum arts.museum artsandcrafts.museum asmatart.museum assassination.museum assisi.museum association.museum astronomy.museum atlanta.museum austin.museum australia.museum automotive.museum aviation.museum axis.museum badajoz.museum baghdad.museum bahn.museum bale.museum baltimore.museum barcelona.museum baseball.museum basel.museum baths.museum bauern.museum beauxarts.museum beeldengeluid.museum bellevue.museum bergbau.museum berkeley.museum berlin.museum bern.museum bible.museum bilbao.museum bill.museum birdart.museum birthplace.museum bonn.museum boston.museum botanical.museum botanicalgarden.museum botanicgarden.museum botany.museum brandywinevalley.museum brasil.museum bristol.museum british.museum britishcolumbia.museum broadcast.museum brunel.museum brussel.museum brussels.museum bruxelles.museum building.museum burghof.museum bus.museum bushey.museum cadaques.museum california.museum cambridge.museum can.museum canada.museum capebreton.museum carrier.museum cartoonart.museum casadelamoneda.museum castle.museum castres.museum celtic.museum center.museum chattanooga.museum cheltenham.museum chesapeakebay.museum chicago.museum children.museum childrens.museum childrensgarden.museum chiropractic.museum chocolate.museum christiansburg.museum cincinnati.museum cinema.museum circus.museum civilisation.museum civilization.museum civilwar.museum clinton.museum clock.museum coal.museum coastaldefence.museum cody.museum coldwar.museum collection.museum colonialwilliamsburg.museum coloradoplateau.museum columbia.museum columbus.museum communication.museum communications.museum community.museum computer.museum computerhistory.museum comunicações.museum contemporary.museum contemporaryart.museum convent.museum copenhagen.museum corporation.museum correios-e-telecomunicações.museum corvette.museum costume.museum countryestate.museum county.museum crafts.museum cranbrook.museum creation.museum cultural.museum culturalcenter.museum culture.museum cyber.museum cymru.museum dali.museum dallas.museum database.museum ddr.museum decorativearts.museum delaware.museum delmenhorst.museum denmark.museum depot.museum design.museum detroit.museum dinosaur.museum discovery.museum dolls.museum donostia.museum durham.museum eastafrica.museum eastcoast.museum education.museum educational.museum egyptian.museum eisenbahn.museum elburg.museum elvendrell.museum embroidery.museum encyclopedic.museum england.museum entomology.museum environment.museum environmentalconservation.museum epilepsy.museum essex.museum estate.museum ethnology.museum exeter.museum exhibition.museum family.museum farm.museum farmequipment.museum farmers.museum farmstead.museum field.museum figueres.museum filatelia.museum film.museum fineart.museum finearts.museum finland.museum flanders.museum florida.museum force.museum fortmissoula.museum fortworth.museum foundation.museum francaise.museum frankfurt.museum franziskaner.museum freemasonry.museum freiburg.museum fribourg.museum frog.museum fundacio.museum furniture.museum gallery.museum garden.museum gateway.museum geelvinck.museum gemological.museum geology.museum georgia.museum giessen.museum glas.museum glass.museum gorge.museum grandrapids.museum graz.museum guernsey.museum halloffame.museum hamburg.museum handson.museum harvestcelebration.museum hawaii.museum health.museum heimatunduhren.museum hellas.museum helsinki.museum hembygdsforbund.museum heritage.museum histoire.museum historical.museum historicalsociety.museum historichouses.museum historisch.museum historisches.museum history.museum historyofscience.museum horology.museum house.museum humanities.museum illustration.museum imageandsound.museum indian.museum indiana.museum indianapolis.museum indianmarket.museum intelligence.museum interactive.museum iraq.museum iron.museum isleofman.museum jamison.museum jefferson.museum jerusalem.museum jewelry.museum jewish.museum jewishart.museum jfk.museum journalism.museum judaica.museum judygarland.museum juedisches.museum juif.museum karate.museum karikatur.museum kids.museum koebenhavn.museum koeln.museum kunst.museum kunstsammlung.museum kunstunddesign.museum labor.museum labour.museum lajolla.museum lancashire.museum landes.museum lans.museum läns.museum larsson.museum lewismiller.museum lincoln.museum linz.museum living.museum livinghistory.museum localhistory.museum london.museum losangeles.museum louvre.museum loyalist.museum lucerne.museum luxembourg.museum luzern.museum mad.museum madrid.museum mallorca.museum manchester.museum mansion.museum mansions.museum manx.museum marburg.museum maritime.museum maritimo.museum maryland.museum marylhurst.museum media.museum medical.museum medizinhistorisches.museum meeres.museum memorial.museum mesaverde.museum michigan.museum midatlantic.museum military.museum mill.museum miners.museum mining.museum minnesota.museum missile.museum missoula.museum modern.museum moma.museum money.museum monmouth.museum monticello.museum montreal.museum moscow.museum motorcycle.museum muenchen.museum muenster.museum mulhouse.museum muncie.museum museet.museum museumcenter.museum museumvereniging.museum music.museum national.museum nationalfirearms.museum nationalheritage.museum nativeamerican.museum naturalhistory.museum naturalhistorymuseum.museum naturalsciences.museum nature.museum naturhistorisches.museum natuurwetenschappen.museum naumburg.museum naval.museum nebraska.museum neues.museum newhampshire.museum newjersey.museum newmexico.museum newport.museum newspaper.museum newyork.museum niepce.museum norfolk.museum north.museum nrw.museum nuernberg.museum nuremberg.museum nyc.museum nyny.museum oceanographic.museum oceanographique.museum omaha.museum online.museum ontario.museum openair.museum oregon.museum oregontrail.museum otago.museum oxford.museum pacific.museum paderborn.museum palace.museum paleo.museum palmsprings.museum panama.museum paris.museum pasadena.museum pharmacy.museum philadelphia.museum philadelphiaarea.museum philately.museum phoenix.museum photography.museum pilots.museum pittsburgh.museum planetarium.museum plantation.museum plants.museum plaza.museum portal.museum portland.museum portlligat.museum posts-and-telecommunications.museum preservation.museum presidio.museum press.museum project.museum public.museum pubol.museum quebec.museum railroad.museum railway.museum research.museum resistance.museum riodejaneiro.museum rochester.museum rockart.museum roma.museum russia.museum saintlouis.museum salem.museum salvadordali.museum salzburg.museum sandiego.museum sanfrancisco.museum santabarbara.museum santacruz.museum santafe.museum saskatchewan.museum satx.museum savannahga.museum schlesisches.museum schoenbrunn.museum schokoladen.museum school.museum schweiz.museum science.museum scienceandhistory.museum scienceandindustry.museum sciencecenter.museum sciencecenters.museum science-fiction.museum sciencehistory.museum sciences.museum sciencesnaturelles.museum scotland.museum seaport.museum settlement.museum settlers.museum shell.museum sherbrooke.museum sibenik.museum silk.museum ski.museum skole.museum society.museum sologne.museum soundandvision.museum southcarolina.museum southwest.museum space.museum spy.museum square.museum stadt.museum stalbans.museum starnberg.museum state.museum stateofdelaware.museum station.museum steam.museum steiermark.museum stjohn.museum stockholm.museum stpetersburg.museum stuttgart.museum suisse.museum surgeonshall.museum surrey.museum svizzera.museum sweden.museum sydney.museum tank.museum tcm.museum technology.museum telekommunikation.museum television.museum texas.museum textile.museum theater.museum time.museum timekeeping.museum topology.museum torino.museum touch.museum town.museum transport.museum tree.museum trolley.museum trust.museum trustee.museum uhren.museum ulm.museum undersea.museum university.museum usa.museum usantiques.museum usarts.museum uscountryestate.museum usculture.museum usdecorativearts.museum usgarden.museum ushistory.museum ushuaia.museum uslivinghistory.museum utah.museum uvic.museum valley.museum vantaa.museum versailles.museum viking.museum village.museum virginia.museum virtual.museum virtuel.museum vlaanderen.museum volkenkunde.museum wales.museum wallonie.museum war.museum washingtondc.museum watchandclock.museum watch-and-clock.museum western.museum westfalen.museum whaling.museum wildlife.museum williamsburg.museum windmill.museum workshop.museum york.museum yorkshire.museum yosemite.museum youth.museum zoological.museum zoology.museum ירושלים.museum иком.museum // mv : http://en.wikipedia.org/wiki/.mv // "mv" included because, contra Wikipedia, google.mv exists. mv aero.mv biz.mv com.mv coop.mv edu.mv gov.mv info.mv int.mv mil.mv museum.mv name.mv net.mv org.mv pro.mv // mw : http://www.registrar.mw/ mw ac.mw biz.mw co.mw com.mw coop.mw edu.mw gov.mw int.mw museum.mw net.mw org.mw // mx : http://www.nic.mx/ // Submitted by registry 2008-06-19 mx com.mx org.mx gob.mx edu.mx net.mx // my : http://www.mynic.net.my/ my com.my net.my org.my gov.my edu.my mil.my name.my // mz : http://www.gobin.info/domainname/mz-template.doc *.mz !teledata.mz // na : http://www.na-nic.com.na/ // http://www.info.na/domain/ na info.na pro.na name.na school.na or.na dr.na us.na mx.na ca.na in.na cc.na tv.na ws.na mobi.na co.na com.na org.na // name : has 2nd-level tlds, but there's no list of them name // nc : http://www.cctld.nc/ nc asso.nc // ne : http://en.wikipedia.org/wiki/.ne ne // net : http://en.wikipedia.org/wiki/.net net // nf : http://en.wikipedia.org/wiki/.nf nf com.nf net.nf per.nf rec.nf web.nf arts.nf firm.nf info.nf other.nf store.nf // ng : http://psg.com/dns/ng/ ng com.ng edu.ng name.ng net.ng org.ng sch.ng gov.ng mil.ng mobi.ng // ni : http://www.nic.ni/dominios.htm *.ni // nl : http://www.domain-registry.nl/ace.php/c,728,122,,,,Home.html // Confirmed by registry (with technical // reservations) 2008-06-08 nl // BV.nl will be a registry for dutch BV's (besloten vennootschap) bv.nl // no : http://www.norid.no/regelverk/index.en.html // The Norwegian registry has declined to notify us of updates. The web pages // referenced below are the official source of the data. There is also an // announce mailing list: // https://postlister.uninett.no/sympa/info/norid-diskusjon no // Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html fhs.no vgs.no fylkesbibl.no folkebibl.no museum.no idrett.no priv.no // Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html mil.no stat.no dep.no kommune.no herad.no // no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html // counties aa.no ah.no bu.no fm.no hl.no hm.no jan-mayen.no mr.no nl.no nt.no of.no ol.no oslo.no rl.no sf.no st.no svalbard.no tm.no tr.no va.no vf.no // primary and lower secondary schools per county gs.aa.no gs.ah.no gs.bu.no gs.fm.no gs.hl.no gs.hm.no gs.jan-mayen.no gs.mr.no gs.nl.no gs.nt.no gs.of.no gs.ol.no gs.oslo.no gs.rl.no gs.sf.no gs.st.no gs.svalbard.no gs.tm.no gs.tr.no gs.va.no gs.vf.no // cities akrehamn.no åkrehamn.no algard.no ålgård.no arna.no brumunddal.no bryne.no bronnoysund.no brønnøysund.no drobak.no drøbak.no egersund.no fetsund.no floro.no florø.no fredrikstad.no hokksund.no honefoss.no hønefoss.no jessheim.no jorpeland.no jørpeland.no kirkenes.no kopervik.no krokstadelva.no langevag.no langevåg.no leirvik.no mjondalen.no mjøndalen.no mo-i-rana.no mosjoen.no mosjøen.no nesoddtangen.no orkanger.no osoyro.no osøyro.no raholt.no råholt.no sandnessjoen.no sandnessjøen.no skedsmokorset.no slattum.no spjelkavik.no stathelle.no stavern.no stjordalshalsen.no stjørdalshalsen.no tananger.no tranby.no vossevangen.no // communities afjord.no åfjord.no agdenes.no al.no ål.no alesund.no ålesund.no alstahaug.no alta.no áltá.no alaheadju.no álaheadju.no alvdal.no amli.no åmli.no amot.no åmot.no andebu.no andoy.no andøy.no andasuolo.no ardal.no årdal.no aremark.no arendal.no ås.no aseral.no åseral.no asker.no askim.no askvoll.no askoy.no askøy.no asnes.no åsnes.no audnedaln.no aukra.no aure.no aurland.no aurskog-holand.no aurskog-høland.no austevoll.no austrheim.no averoy.no averøy.no balestrand.no ballangen.no balat.no bálát.no balsfjord.no bahccavuotna.no báhccavuotna.no bamble.no bardu.no beardu.no beiarn.no bajddar.no bájddar.no baidar.no báidár.no berg.no bergen.no berlevag.no berlevåg.no bearalvahki.no bearalváhki.no bindal.no birkenes.no bjarkoy.no bjarkøy.no bjerkreim.no bjugn.no bodo.no bodø.no badaddja.no bådåddjå.no budejju.no bokn.no bremanger.no bronnoy.no brønnøy.no bygland.no bykle.no barum.no bærum.no bo.telemark.no bø.telemark.no bo.nordland.no bø.nordland.no bievat.no bievát.no bomlo.no bømlo.no batsfjord.no båtsfjord.no bahcavuotna.no báhcavuotna.no dovre.no drammen.no drangedal.no dyroy.no dyrøy.no donna.no dønna.no eid.no eidfjord.no eidsberg.no eidskog.no eidsvoll.no eigersund.no elverum.no enebakk.no engerdal.no etne.no etnedal.no evenes.no evenassi.no evenášši.no evje-og-hornnes.no farsund.no fauske.no fuossko.no fuoisku.no fedje.no fet.no finnoy.no finnøy.no fitjar.no fjaler.no fjell.no flakstad.no flatanger.no flekkefjord.no flesberg.no flora.no fla.no flå.no folldal.no forsand.no fosnes.no frei.no frogn.no froland.no frosta.no frana.no fræna.no froya.no frøya.no fusa.no fyresdal.no forde.no førde.no gamvik.no gangaviika.no gáŋgaviika.no gaular.no gausdal.no gildeskal.no gildeskål.no giske.no gjemnes.no gjerdrum.no gjerstad.no gjesdal.no gjovik.no gjøvik.no gloppen.no gol.no gran.no grane.no granvin.no gratangen.no grimstad.no grong.no kraanghke.no kråanghke.no grue.no gulen.no hadsel.no halden.no halsa.no hamar.no hamaroy.no habmer.no hábmer.no hapmir.no hápmir.no hammerfest.no hammarfeasta.no hámmárfeasta.no haram.no hareid.no harstad.no hasvik.no aknoluokta.no ákŋoluokta.no hattfjelldal.no aarborte.no haugesund.no hemne.no hemnes.no hemsedal.no heroy.more-og-romsdal.no herøy.møre-og-romsdal.no heroy.nordland.no herøy.nordland.no hitra.no hjartdal.no hjelmeland.no hobol.no hobøl.no hof.no hol.no hole.no holmestrand.no holtalen.no holtålen.no hornindal.no horten.no hurdal.no hurum.no hvaler.no hyllestad.no hagebostad.no hægebostad.no hoyanger.no høyanger.no hoylandet.no høylandet.no ha.no hå.no ibestad.no inderoy.no inderøy.no iveland.no jevnaker.no jondal.no jolster.no jølster.no karasjok.no karasjohka.no kárášjohka.no karlsoy.no galsa.no gálsá.no karmoy.no karmøy.no kautokeino.no guovdageaidnu.no klepp.no klabu.no klæbu.no kongsberg.no kongsvinger.no kragero.no kragerø.no kristiansand.no kristiansund.no krodsherad.no krødsherad.no kvalsund.no rahkkeravju.no ráhkkerávju.no kvam.no kvinesdal.no kvinnherad.no kviteseid.no kvitsoy.no kvitsøy.no kvafjord.no kvæfjord.no giehtavuoatna.no kvanangen.no kvænangen.no navuotna.no návuotna.no kafjord.no kåfjord.no gaivuotna.no gáivuotna.no larvik.no lavangen.no lavagis.no loabat.no loabát.no lebesby.no davvesiida.no leikanger.no leirfjord.no leka.no leksvik.no lenvik.no leangaviika.no leaŋgaviika.no lesja.no levanger.no lier.no lierne.no lillehammer.no lillesand.no lindesnes.no lindas.no lindås.no lom.no loppa.no lahppi.no láhppi.no lund.no lunner.no luroy.no lurøy.no luster.no lyngdal.no lyngen.no ivgu.no lardal.no lerdal.no lærdal.no lodingen.no lødingen.no lorenskog.no lørenskog.no loten.no løten.no malvik.no masoy.no måsøy.no muosat.no muosát.no mandal.no marker.no marnardal.no masfjorden.no meland.no meldal.no melhus.no meloy.no meløy.no meraker.no meråker.no moareke.no moåreke.no midsund.no midtre-gauldal.no modalen.no modum.no molde.no moskenes.no moss.no mosvik.no malselv.no målselv.no malatvuopmi.no málatvuopmi.no namdalseid.no aejrie.no namsos.no namsskogan.no naamesjevuemie.no nååmesjevuemie.no laakesvuemie.no nannestad.no narvik.no narviika.no naustdal.no nedre-eiker.no nes.akershus.no nes.buskerud.no nesna.no nesodden.no nesseby.no unjarga.no unjárga.no nesset.no nissedal.no nittedal.no nord-aurdal.no nord-fron.no nord-odal.no norddal.no nordkapp.no davvenjarga.no davvenjárga.no nordre-land.no nordreisa.no raisa.no ráisa.no nore-og-uvdal.no notodden.no naroy.no nærøy.no notteroy.no nøtterøy.no odda.no oksnes.no øksnes.no oppdal.no oppegard.no oppegård.no orkdal.no orland.no ørland.no orskog.no ørskog.no orsta.no ørsta.no os.hedmark.no os.hordaland.no osen.no osteroy.no osterøy.no ostre-toten.no østre-toten.no overhalla.no ovre-eiker.no øvre-eiker.no oyer.no øyer.no oygarden.no øygarden.no oystre-slidre.no øystre-slidre.no porsanger.no porsangu.no porsáŋgu.no porsgrunn.no radoy.no radøy.no rakkestad.no rana.no ruovat.no randaberg.no rauma.no rendalen.no rennebu.no rennesoy.no rennesøy.no rindal.no ringebu.no ringerike.no ringsaker.no rissa.no risor.no risør.no roan.no rollag.no rygge.no ralingen.no rælingen.no rodoy.no rødøy.no romskog.no rømskog.no roros.no røros.no rost.no røst.no royken.no røyken.no royrvik.no røyrvik.no rade.no råde.no salangen.no siellak.no saltdal.no salat.no sálát.no sálat.no samnanger.no sande.more-og-romsdal.no sande.møre-og-romsdal.no sande.vestfold.no sandefjord.no sandnes.no sandoy.no sandøy.no sarpsborg.no sauda.no sauherad.no sel.no selbu.no selje.no seljord.no sigdal.no siljan.no sirdal.no skaun.no skedsmo.no ski.no skien.no skiptvet.no skjervoy.no skjervøy.no skierva.no skiervá.no skjak.no skjåk.no skodje.no skanland.no skånland.no skanit.no skánit.no smola.no smøla.no snillfjord.no snasa.no snåsa.no snoasa.no snaase.no snåase.no sogndal.no sokndal.no sola.no solund.no songdalen.no sortland.no spydeberg.no stange.no stavanger.no steigen.no steinkjer.no stjordal.no stjørdal.no stokke.no stor-elvdal.no stord.no stordal.no storfjord.no omasvuotna.no strand.no stranda.no stryn.no sula.no suldal.no sund.no sunndal.no surnadal.no sveio.no svelvik.no sykkylven.no sogne.no søgne.no somna.no sømna.no sondre-land.no søndre-land.no sor-aurdal.no sør-aurdal.no sor-fron.no sør-fron.no sor-odal.no sør-odal.no sor-varanger.no sør-varanger.no matta-varjjat.no mátta-várjjat.no sorfold.no sørfold.no sorreisa.no sørreisa.no sorum.no sørum.no tana.no deatnu.no time.no tingvoll.no tinn.no tjeldsund.no dielddanuorri.no tjome.no tjøme.no tokke.no tolga.no torsken.no tranoy.no tranøy.no tromso.no tromsø.no tromsa.no romsa.no trondheim.no troandin.no trysil.no trana.no træna.no trogstad.no trøgstad.no tvedestrand.no tydal.no tynset.no tysfjord.no divtasvuodna.no divttasvuotna.no tysnes.no tysvar.no tysvær.no tonsberg.no tønsberg.no ullensaker.no ullensvang.no ulvik.no utsira.no vadso.no vadsø.no cahcesuolo.no čáhcesuolo.no vaksdal.no valle.no vang.no vanylven.no vardo.no vardø.no varggat.no várggát.no vefsn.no vaapste.no vega.no vegarshei.no vegårshei.no vennesla.no verdal.no verran.no vestby.no vestnes.no vestre-slidre.no vestre-toten.no vestvagoy.no vestvågøy.no vevelstad.no vik.no vikna.no vindafjord.no volda.no voss.no varoy.no værøy.no vagan.no vågan.no voagat.no vagsoy.no vågsøy.no vaga.no vågå.no valer.ostfold.no våler.østfold.no valer.hedmark.no våler.hedmark.no // np : http://www.mos.com.np/register.html *.np // nr : http://cenpac.net.nr/dns/index.html // Confirmed by registry 2008-06-17 nr biz.nr info.nr gov.nr edu.nr org.nr net.nr com.nr // nu : http://en.wikipedia.org/wiki/.nu nu // nz : http://en.wikipedia.org/wiki/.nz // Confirmed by registry 2014-05-19 nz ac.nz co.nz cri.nz geek.nz gen.nz govt.nz health.nz iwi.nz kiwi.nz maori.nz mil.nz māori.nz net.nz org.nz parliament.nz school.nz // om : http://en.wikipedia.org/wiki/.om om co.om com.om edu.om gov.om med.om museum.om net.om org.om pro.om // org : http://en.wikipedia.org/wiki/.org org // pa : http://www.nic.pa/ // Some additional second level "domains" resolve directly as hostnames, such as // pannet.pa, so we add a rule for "pa". pa ac.pa gob.pa com.pa org.pa sld.pa edu.pa net.pa ing.pa abo.pa med.pa nom.pa // pe : https://www.nic.pe/InformeFinalComision.pdf pe edu.pe gob.pe nom.pe mil.pe org.pe com.pe net.pe // pf : http://www.gobin.info/domainname/formulaire-pf.pdf pf com.pf org.pf edu.pf // pg : http://en.wikipedia.org/wiki/.pg *.pg // ph : http://www.domains.ph/FAQ2.asp // Submitted by registry 2008-06-13 ph com.ph net.ph org.ph gov.ph edu.ph ngo.ph mil.ph i.ph // pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK pk com.pk net.pk edu.pk org.pk fam.pk biz.pk web.pk gov.pk gob.pk gok.pk gon.pk gop.pk gos.pk info.pk // pl http://www.dns.pl/english/index.html // confirmed on 26.09.2014 from Bogna Tchórzewska pl com.pl net.pl org.pl info.pl waw.pl gov.pl // pl functional domains (http://www.dns.pl/english/index.html) aid.pl agro.pl atm.pl auto.pl biz.pl edu.pl gmina.pl gsm.pl mail.pl miasta.pl media.pl mil.pl nieruchomosci.pl nom.pl pc.pl powiat.pl priv.pl realestate.pl rel.pl sex.pl shop.pl sklep.pl sos.pl szkola.pl targi.pl tm.pl tourism.pl travel.pl turystyka.pl // Government domains (administred by ippt.gov.pl) uw.gov.pl um.gov.pl ug.gov.pl upow.gov.pl starostwo.gov.pl so.gov.pl sr.gov.pl po.gov.pl pa.gov.pl // pl regional domains (http://www.dns.pl/english/index.html) augustow.pl babia-gora.pl bedzin.pl beskidy.pl bialowieza.pl bialystok.pl bielawa.pl bieszczady.pl boleslawiec.pl bydgoszcz.pl bytom.pl cieszyn.pl czeladz.pl czest.pl dlugoleka.pl elblag.pl elk.pl glogow.pl gniezno.pl gorlice.pl grajewo.pl ilawa.pl jaworzno.pl jelenia-gora.pl jgora.pl kalisz.pl kazimierz-dolny.pl karpacz.pl kartuzy.pl kaszuby.pl katowice.pl kepno.pl ketrzyn.pl klodzko.pl kobierzyce.pl kolobrzeg.pl konin.pl konskowola.pl kutno.pl lapy.pl lebork.pl legnica.pl lezajsk.pl limanowa.pl lomza.pl lowicz.pl lubin.pl lukow.pl malbork.pl malopolska.pl mazowsze.pl mazury.pl mielec.pl mielno.pl mragowo.pl naklo.pl nowaruda.pl nysa.pl olawa.pl olecko.pl olkusz.pl olsztyn.pl opoczno.pl opole.pl ostroda.pl ostroleka.pl ostrowiec.pl ostrowwlkp.pl pila.pl pisz.pl podhale.pl podlasie.pl polkowice.pl pomorze.pl pomorskie.pl prochowice.pl pruszkow.pl przeworsk.pl pulawy.pl radom.pl rawa-maz.pl rybnik.pl rzeszow.pl sanok.pl sejny.pl slask.pl slupsk.pl sosnowiec.pl stalowa-wola.pl skoczow.pl starachowice.pl stargard.pl suwalki.pl swidnica.pl swiebodzin.pl swinoujscie.pl szczecin.pl szczytno.pl tarnobrzeg.pl tgory.pl turek.pl tychy.pl ustka.pl walbrzych.pl warmia.pl warszawa.pl wegrow.pl wielun.pl wlocl.pl wloclawek.pl wodzislaw.pl wolomin.pl wroclaw.pl zachpomor.pl zagan.pl zarow.pl zgora.pl zgorzelec.pl // pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf pm // pn : http://www.government.pn/PnRegistry/policies.htm pn gov.pn co.pn org.pn edu.pn net.pn // post : http://en.wikipedia.org/wiki/.post post // pr : http://www.nic.pr/index.asp?f=1 pr com.pr net.pr org.pr gov.pr edu.pr isla.pr pro.pr biz.pr info.pr name.pr // these aren't mentioned on nic.pr, but on http://en.wikipedia.org/wiki/.pr est.pr prof.pr ac.pr // pro : http://www.nic.pro/support_faq.htm pro aca.pro bar.pro cpa.pro jur.pro law.pro med.pro eng.pro // ps : http://en.wikipedia.org/wiki/.ps // http://www.nic.ps/registration/policy.html#reg ps edu.ps gov.ps sec.ps plo.ps com.ps org.ps net.ps // pt : http://online.dns.pt/dns/start_dns pt net.pt gov.pt org.pt edu.pt int.pt publ.pt com.pt nome.pt // pw : http://en.wikipedia.org/wiki/.pw pw co.pw ne.pw or.pw ed.pw go.pw belau.pw // py : http://www.nic.py/pautas.html#seccion_9 // Confirmed by registry 2012-10-03 py com.py coop.py edu.py gov.py mil.py net.py org.py // qa : http://domains.qa/en/ qa com.qa edu.qa gov.qa mil.qa name.qa net.qa org.qa sch.qa // re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs re com.re asso.re nom.re // ro : http://www.rotld.ro/ ro com.ro org.ro tm.ro nt.ro nom.ro info.ro rec.ro arts.ro firm.ro store.ro www.ro // rs : http://en.wikipedia.org/wiki/.rs rs co.rs org.rs edu.rs ac.rs gov.rs in.rs // ru : http://www.cctld.ru/ru/docs/aktiv_8.php // Industry domains ru ac.ru com.ru edu.ru int.ru net.ru org.ru pp.ru // Geographical domains adygeya.ru altai.ru amur.ru arkhangelsk.ru astrakhan.ru bashkiria.ru belgorod.ru bir.ru bryansk.ru buryatia.ru cbg.ru chel.ru chelyabinsk.ru chita.ru chukotka.ru chuvashia.ru dagestan.ru dudinka.ru e-burg.ru grozny.ru irkutsk.ru ivanovo.ru izhevsk.ru jar.ru joshkar-ola.ru kalmykia.ru kaluga.ru kamchatka.ru karelia.ru kazan.ru kchr.ru kemerovo.ru khabarovsk.ru khakassia.ru khv.ru kirov.ru koenig.ru komi.ru kostroma.ru krasnoyarsk.ru kuban.ru kurgan.ru kursk.ru lipetsk.ru magadan.ru mari.ru mari-el.ru marine.ru mordovia.ru // mosreg.ru Bug 1090800 - removed at request of Aleksey Konstantinov msk.ru murmansk.ru nalchik.ru nnov.ru nov.ru novosibirsk.ru nsk.ru omsk.ru orenburg.ru oryol.ru palana.ru penza.ru perm.ru ptz.ru rnd.ru ryazan.ru sakhalin.ru samara.ru saratov.ru simbirsk.ru smolensk.ru spb.ru stavropol.ru stv.ru surgut.ru tambov.ru tatarstan.ru tom.ru tomsk.ru tsaritsyn.ru tsk.ru tula.ru tuva.ru tver.ru tyumen.ru udm.ru udmurtia.ru ulan-ude.ru vladikavkaz.ru vladimir.ru vladivostok.ru volgograd.ru vologda.ru voronezh.ru vrn.ru vyatka.ru yakutia.ru yamal.ru yaroslavl.ru yekaterinburg.ru yuzhno-sakhalinsk.ru // More geographical domains amursk.ru baikal.ru cmw.ru fareast.ru jamal.ru kms.ru k-uralsk.ru kustanai.ru kuzbass.ru magnitka.ru mytis.ru nakhodka.ru nkz.ru norilsk.ru oskol.ru pyatigorsk.ru rubtsovsk.ru snz.ru syzran.ru vdonsk.ru zgrad.ru // State domains gov.ru mil.ru // Technical domains test.ru // rw : http://www.nic.rw/cgi-bin/policy.pl rw gov.rw net.rw edu.rw ac.rw com.rw co.rw int.rw mil.rw gouv.rw // sa : http://www.nic.net.sa/ sa com.sa net.sa org.sa gov.sa med.sa pub.sa edu.sa sch.sa // sb : http://www.sbnic.net.sb/ // Submitted by registry 2008-06-08 sb com.sb edu.sb gov.sb net.sb org.sb // sc : http://www.nic.sc/ sc com.sc gov.sc net.sc org.sc edu.sc // sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm // Submitted by registry 2008-06-17 sd com.sd net.sd org.sd edu.sd med.sd tv.sd gov.sd info.sd // se : http://en.wikipedia.org/wiki/.se // Submitted by registry 2014-03-18 se a.se ac.se b.se bd.se brand.se c.se d.se e.se f.se fh.se fhsk.se fhv.se g.se h.se i.se k.se komforb.se kommunalforbund.se komvux.se l.se lanbib.se m.se n.se naturbruksgymn.se o.se org.se p.se parti.se pp.se press.se r.se s.se t.se tm.se u.se w.se x.se y.se z.se // sg : http://www.nic.net.sg/page/registration-policies-procedures-and-guidelines sg com.sg net.sg org.sg gov.sg edu.sg per.sg // sh : http://www.nic.sh/registrar.html sh com.sh net.sh gov.sh org.sh mil.sh // si : http://en.wikipedia.org/wiki/.si si // sj : No registrations at this time. // Submitted by registry 2008-06-16 sj // sk : http://en.wikipedia.org/wiki/.sk // list of 2nd level domains ? sk // sl : http://www.nic.sl // Submitted by registry 2008-06-12 sl com.sl net.sl edu.sl gov.sl org.sl // sm : http://en.wikipedia.org/wiki/.sm sm // sn : http://en.wikipedia.org/wiki/.sn sn art.sn com.sn edu.sn gouv.sn org.sn perso.sn univ.sn // so : http://www.soregistry.com/ so com.so net.so org.so // sr : http://en.wikipedia.org/wiki/.sr sr // st : http://www.nic.st/html/policyrules/ st co.st com.st consulado.st edu.st embaixada.st gov.st mil.st net.st org.st principe.st saotome.st store.st // su : http://en.wikipedia.org/wiki/.su su adygeya.su arkhangelsk.su balashov.su bashkiria.su bryansk.su dagestan.su grozny.su ivanovo.su kalmykia.su kaluga.su karelia.su khakassia.su krasnodar.su kurgan.su lenug.su mordovia.su msk.su murmansk.su nalchik.su nov.su obninsk.su penza.su pokrovsk.su sochi.su spb.su togliatti.su troitsk.su tula.su tuva.su vladikavkaz.su vladimir.su vologda.su // sv : http://www.svnet.org.sv/niveldos.pdf sv com.sv edu.sv gob.sv org.sv red.sv // sx : http://en.wikipedia.org/wiki/.sx // Confirmed by registry 2012-05-31 sx gov.sx // sy : http://en.wikipedia.org/wiki/.sy // see also: http://www.gobin.info/domainname/sy.doc sy edu.sy gov.sy net.sy mil.sy com.sy org.sy // sz : http://en.wikipedia.org/wiki/.sz // http://www.sispa.org.sz/ sz co.sz ac.sz org.sz // tc : http://en.wikipedia.org/wiki/.tc tc // td : http://en.wikipedia.org/wiki/.td td // tel: http://en.wikipedia.org/wiki/.tel // http://www.telnic.org/ tel // tf : http://en.wikipedia.org/wiki/.tf tf // tg : http://en.wikipedia.org/wiki/.tg // http://www.nic.tg/ tg // th : http://en.wikipedia.org/wiki/.th // Submitted by registry 2008-06-17 th ac.th co.th go.th in.th mi.th net.th or.th // tj : http://www.nic.tj/policy.html tj ac.tj biz.tj co.tj com.tj edu.tj go.tj gov.tj int.tj mil.tj name.tj net.tj nic.tj org.tj test.tj web.tj // tk : http://en.wikipedia.org/wiki/.tk tk // tl : http://en.wikipedia.org/wiki/.tl tl gov.tl // tm : http://www.nic.tm/local.html tm com.tm co.tm org.tm net.tm nom.tm gov.tm mil.tm edu.tm // tn : http://en.wikipedia.org/wiki/.tn // http://whois.ati.tn/ tn com.tn ens.tn fin.tn gov.tn ind.tn intl.tn nat.tn net.tn org.tn info.tn perso.tn tourism.tn edunet.tn rnrt.tn rns.tn rnu.tn mincom.tn agrinet.tn defense.tn turen.tn // to : http://en.wikipedia.org/wiki/.to // Submitted by registry 2008-06-17 to com.to gov.to net.to org.to edu.to mil.to // tp : No registrations at this time. // Submitted by Ryan Sleevi 2014-01-03 tp // subTLDs: https://www.nic.tr/forms/eng/policies.pdf // and: https://www.nic.tr/forms/politikalar.pdf // Submitted by 2014-07-19 tr com.tr info.tr biz.tr net.tr org.tr web.tr gen.tr tv.tr av.tr dr.tr bbs.tr name.tr tel.tr gov.tr bel.tr pol.tr mil.tr k12.tr edu.tr kep.tr // Used by Northern Cyprus nc.tr // Used by government agencies of Northern Cyprus gov.nc.tr // travel : http://en.wikipedia.org/wiki/.travel travel // tt : http://www.nic.tt/ tt co.tt com.tt org.tt net.tt biz.tt info.tt pro.tt int.tt coop.tt jobs.tt mobi.tt travel.tt museum.tt aero.tt name.tt gov.tt edu.tt // tv : http://en.wikipedia.org/wiki/.tv // Not listing any 2LDs as reserved since none seem to exist in practice, // Wikipedia notwithstanding. tv // tw : http://en.wikipedia.org/wiki/.tw tw edu.tw gov.tw mil.tw com.tw net.tw org.tw idv.tw game.tw ebiz.tw club.tw 網路.tw 組織.tw 商業.tw // tz : http://www.tznic.or.tz/index.php/domains // Confirmed by registry 2013-01-22 tz ac.tz co.tz go.tz hotel.tz info.tz me.tz mil.tz mobi.tz ne.tz or.tz sc.tz tv.tz // ua : https://hostmaster.ua/policy/?ua // Submitted by registry 2012-04-27 ua // ua 2LD com.ua edu.ua gov.ua in.ua net.ua org.ua // ua geographic names // https://hostmaster.ua/2ld/ cherkassy.ua cherkasy.ua chernigov.ua chernihiv.ua chernivtsi.ua chernovtsy.ua ck.ua cn.ua cr.ua crimea.ua cv.ua dn.ua dnepropetrovsk.ua dnipropetrovsk.ua dominic.ua donetsk.ua dp.ua if.ua ivano-frankivsk.ua kh.ua kharkiv.ua kharkov.ua kherson.ua khmelnitskiy.ua khmelnytskyi.ua kiev.ua kirovograd.ua km.ua kr.ua krym.ua ks.ua kv.ua kyiv.ua lg.ua lt.ua lugansk.ua lutsk.ua lv.ua lviv.ua mk.ua mykolaiv.ua nikolaev.ua od.ua odesa.ua odessa.ua pl.ua poltava.ua rivne.ua rovno.ua rv.ua sb.ua sebastopol.ua sevastopol.ua sm.ua sumy.ua te.ua ternopil.ua uz.ua uzhgorod.ua vinnica.ua vinnytsia.ua vn.ua volyn.ua yalta.ua zaporizhzhe.ua zaporizhzhia.ua zhitomir.ua zhytomyr.ua zp.ua zt.ua // Private registries in .ua co.ua pp.ua // ug : https://www.registry.co.ug/ ug co.ug or.ug ac.ug sc.ug go.ug ne.ug com.ug org.ug // uk : http://en.wikipedia.org/wiki/.uk // Submitted by registry uk ac.uk co.uk gov.uk ltd.uk me.uk net.uk nhs.uk org.uk plc.uk police.uk *.sch.uk // us : http://en.wikipedia.org/wiki/.us us dni.us fed.us isa.us kids.us nsn.us // us geographic names ak.us al.us ar.us as.us az.us ca.us co.us ct.us dc.us de.us fl.us ga.us gu.us hi.us ia.us id.us il.us in.us ks.us ky.us la.us ma.us md.us me.us mi.us mn.us mo.us ms.us mt.us nc.us nd.us ne.us nh.us nj.us nm.us nv.us ny.us oh.us ok.us or.us pa.us pr.us ri.us sc.us sd.us tn.us tx.us ut.us vi.us vt.us va.us wa.us wi.us wv.us wy.us // The registrar notes several more specific domains available in each state, // such as state.*.us, dst.*.us, etc., but resolution of these is somewhat // haphazard; in some states these domains resolve as addresses, while in others // only subdomains are available, or even nothing at all. We include the // most common ones where it's clear that different sites are different // entities. k12.ak.us k12.al.us k12.ar.us k12.as.us k12.az.us k12.ca.us k12.co.us k12.ct.us k12.dc.us k12.de.us k12.fl.us k12.ga.us k12.gu.us // k12.hi.us Bug 614565 - Hawaii has a state-wide DOE login k12.ia.us k12.id.us k12.il.us k12.in.us k12.ks.us k12.ky.us k12.la.us k12.ma.us k12.md.us k12.me.us k12.mi.us k12.mn.us k12.mo.us k12.ms.us k12.mt.us k12.nc.us // k12.nd.us Bug 1028347 - Removed at request of Travis Rosso k12.ne.us k12.nh.us k12.nj.us k12.nm.us k12.nv.us k12.ny.us k12.oh.us k12.ok.us k12.or.us k12.pa.us k12.pr.us k12.ri.us k12.sc.us // k12.sd.us Bug 934131 - Removed at request of James Booze k12.tn.us k12.tx.us k12.ut.us k12.vi.us k12.vt.us k12.va.us k12.wa.us k12.wi.us // k12.wv.us Bug 947705 - Removed at request of Verne Britton k12.wy.us cc.ak.us cc.al.us cc.ar.us cc.as.us cc.az.us cc.ca.us cc.co.us cc.ct.us cc.dc.us cc.de.us cc.fl.us cc.ga.us cc.gu.us cc.hi.us cc.ia.us cc.id.us cc.il.us cc.in.us cc.ks.us cc.ky.us cc.la.us cc.ma.us cc.md.us cc.me.us cc.mi.us cc.mn.us cc.mo.us cc.ms.us cc.mt.us cc.nc.us cc.nd.us cc.ne.us cc.nh.us cc.nj.us cc.nm.us cc.nv.us cc.ny.us cc.oh.us cc.ok.us cc.or.us cc.pa.us cc.pr.us cc.ri.us cc.sc.us cc.sd.us cc.tn.us cc.tx.us cc.ut.us cc.vi.us cc.vt.us cc.va.us cc.wa.us cc.wi.us cc.wv.us cc.wy.us lib.ak.us lib.al.us lib.ar.us lib.as.us lib.az.us lib.ca.us lib.co.us lib.ct.us lib.dc.us lib.de.us lib.fl.us lib.ga.us lib.gu.us lib.hi.us lib.ia.us lib.id.us lib.il.us lib.in.us lib.ks.us lib.ky.us lib.la.us lib.ma.us lib.md.us lib.me.us lib.mi.us lib.mn.us lib.mo.us lib.ms.us lib.mt.us lib.nc.us lib.nd.us lib.ne.us lib.nh.us lib.nj.us lib.nm.us lib.nv.us lib.ny.us lib.oh.us lib.ok.us lib.or.us lib.pa.us lib.pr.us lib.ri.us lib.sc.us lib.sd.us lib.tn.us lib.tx.us lib.ut.us lib.vi.us lib.vt.us lib.va.us lib.wa.us lib.wi.us // lib.wv.us Bug 941670 - Removed at request of Larry W Arnold lib.wy.us // k12.ma.us contains school districts in Massachusetts. The 4LDs are // managed indepedently except for private (PVT), charter (CHTR) and // parochial (PAROCH) schools. Those are delegated dorectly to the // 5LD operators. pvt.k12.ma.us chtr.k12.ma.us paroch.k12.ma.us // uy : http://www.nic.org.uy/ uy com.uy edu.uy gub.uy mil.uy net.uy org.uy // uz : http://www.reg.uz/ uz co.uz com.uz net.uz org.uz // va : http://en.wikipedia.org/wiki/.va va // vc : http://en.wikipedia.org/wiki/.vc // Submitted by registry 2008-06-13 vc com.vc net.vc org.vc gov.vc mil.vc edu.vc // ve : https://registro.nic.ve/ // Confirmed by registry 2012-10-04 // Updated 2014-05-20 - Bug 940478 ve arts.ve co.ve com.ve e12.ve edu.ve firm.ve gob.ve gov.ve info.ve int.ve mil.ve net.ve org.ve rec.ve store.ve tec.ve web.ve // vg : http://en.wikipedia.org/wiki/.vg vg // vi : http://www.nic.vi/newdomainform.htm // http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other // TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they // are available for registration (which they do not seem to be). vi co.vi com.vi k12.vi net.vi org.vi // vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp vn com.vn net.vn org.vn edu.vn gov.vn int.vn ac.vn biz.vn info.vn name.vn pro.vn health.vn // vu : http://en.wikipedia.org/wiki/.vu // http://www.vunic.vu/ vu com.vu edu.vu net.vu org.vu // wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf wf // ws : http://en.wikipedia.org/wiki/.ws // http://samoanic.ws/index.dhtml ws com.ws net.ws org.ws gov.ws edu.ws // yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf yt // IDN ccTLDs // Please sort by ISO 3166 ccTLD, then punicode string // when submitting patches and follow this format: // ("" ) : // [optional sponsoring org] // // xn--mgbaam7a8h ("Emerat" Arabic) : AE // http://nic.ae/english/arabicdomain/rules.jsp امارات // xn--54b7fta0cc ("Bangla" Bangla) : BD বাংলা // xn--fiqs8s ("China" Chinese-Han-Simplified <.Zhongguo>) : CN // CNNIC // http://cnnic.cn/html/Dir/2005/10/11/3218.htm 中国 // xn--fiqz9s ("China" Chinese-Han-Traditional <.Zhongguo>) : CN // CNNIC // http://cnnic.cn/html/Dir/2005/10/11/3218.htm 中國 // xn--lgbbat1ad8j ("Algeria / Al Jazair" Arabic) : DZ الجزائر // xn--wgbh1c ("Egypt" Arabic .masr) : EG // http://www.dotmasr.eg/ مصر // xn--node ("ge" Georgian (Mkhedruli)) : GE გე // xn--j6w193g ("Hong Kong" Chinese-Han) : HK // https://www2.hkirc.hk/register/rules.jsp 香港 // xn--h2brj9c ("Bharat" Devanagari) : IN // India भारत // xn--mgbbh1a71e ("Bharat" Arabic) : IN // India بھارت // xn--fpcrj9c3d ("Bharat" Telugu) : IN // India భారత్ // xn--gecrj9c ("Bharat" Gujarati) : IN // India ભારત // xn--s9brj9c ("Bharat" Gurmukhi) : IN // India ਭਾਰਤ // xn--45brj9c ("Bharat" Bengali) : IN // India ভারত // xn--xkc2dl3a5ee0h ("India" Tamil) : IN // India இந்தியா // xn--mgba3a4f16a ("Iran" Persian) : IR ایران // xn--mgba3a4fra ("Iran" Arabic) : IR ايران // xn--mgbayh7gpa ("al-Ordon" Arabic) : JO // National Information Technology Center (NITC) // Royal Scientific Society, Al-Jubeiha الاردن // xn--3e0b707e ("Republic of Korea" Hangul) : KR 한국 // xn--80ao21a ("Kaz" Kazakh) : KZ қаз // xn--fzc2c9e2c ("Lanka" Sinhalese-Sinhala) : LK // http://nic.lk ලංකා // xn--xkc2al3hye2a ("Ilangai" Tamil) : LK // http://nic.lk இலங்கை // xn--mgbc0a9azcg ("Morocco / al-Maghrib" Arabic) : MA المغرب // xn--l1acc ("mon" Mongolian) : MN мон // xn--mgbx4cd0ab ("Malaysia" Malay) : MY مليسيا // xn--mgb9awbf ("Oman" Arabic) : OM عمان // xn--ygbi2ammx ("Falasteen" Arabic) : PS // The Palestinian National Internet Naming Authority (PNINA) // http://www.pnina.ps فلسطين // xn--90a3ac ("srb" Cyrillic) : RS // http://www.rnids.rs/en/the-.срб-domain срб пр.срб орг.срб обр.срб од.срб упр.срб ак.срб // xn--p1ai ("rf" Russian-Cyrillic) : RU // http://www.cctld.ru/en/docs/rulesrf.php рф // xn--wgbl6a ("Qatar" Arabic) : QA // http://www.ict.gov.qa/ قطر // xn--mgberp4a5d4ar ("AlSaudiah" Arabic) : SA // http://www.nic.net.sa/ السعودية // xn--mgberp4a5d4a87g ("AlSaudiah" Arabic) variant : SA السعودیة // xn--mgbqly7c0a67fbc ("AlSaudiah" Arabic) variant : SA السعودیۃ // xn--mgbqly7cvafr ("AlSaudiah" Arabic) variant : SA السعوديه // xn--ogbpf8fl ("Syria" Arabic) : SY سورية // xn--mgbtf8fl ("Syria" Arabic) variant : SY سوريا // xn--yfro4i67o Singapore ("Singapore" Chinese-Han) : SG 新加坡 // xn--clchc0ea0b2g2a9gcd ("Singapore" Tamil) : SG சிங்கப்பூர் // xn--o3cw4h ("Thai" Thai) : TH // http://www.thnic.co.th ไทย // xn--pgbs0dh ("Tunis") : TN // http://nic.tn تونس // xn--kpry57d ("Taiwan" Chinese-Han-Traditional) : TW // http://www.twnic.net/english/dn/dn_07a.htm 台灣 // xn--kprw13d ("Taiwan" Chinese-Han-Simplified) : TW // http://www.twnic.net/english/dn/dn_07a.htm 台湾 // xn--nnx388a ("Taiwan") variant : TW 臺灣 // xn--j1amh ("ukr" Cyrillic) : UA укр // xn--mgb2ddes ("AlYemen" Arabic) : YE اليمن // xxx : http://icmregistry.com xxx // ye : http://www.y.net.ye/services/domain_name.htm *.ye // za : http://www.zadna.org.za/slds.html *.za // zm : http://en.wikipedia.org/wiki/.zm *.zm // zw : http://en.wikipedia.org/wiki/.zw *.zw // List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2015-01-27T00:02:07Z // abb : 2014-10-24 ABB Ltd abb // abbott : 2014-07-24 Abbott Laboratories, Inc. abbott // abogado : 2014-04-24 Top Level Domain Holdings Limited abogado // academy : 2013-11-07 Half Oaks, LLC academy // accenture : 2014-08-15 Accenture plc accenture // accountant : 2014-11-20 dot Accountant Limited accountant // accountants : 2014-03-20 Knob Town, LLC accountants // aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG aco // active : 2014-05-01 The Active Network, Inc active // actor : 2013-12-12 United TLD Holdco Ltd. actor // ads : 2014-12-04 Charleston Road Registry Inc. ads // adult : 2014-10-16 ICM Registry AD LLC adult // afl : 2014-10-02 Australian Football League afl // africa : 2014-03-24 ZA Central Registry NPC trading as Registry.Africa africa // agency : 2013-11-14 Steel Falls, LLC agency // aig : 2014-12-18 American International Group, Inc. aig // airforce : 2014-03-06 United TLD Holdco Ltd. airforce // airtel : 2014-10-24 Bharti Airtel Limited airtel // alibaba : 2015-01-15 Alibaba Group Holding Limited alibaba // alipay : 2015-01-15 Alibaba Group Holding Limited alipay // allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft allfinanz // alsace : 2014-07-02 REGION D ALSACE alsace // amsterdam : 2014-07-24 Gemeente Amsterdam amsterdam // analytics : 2014-12-18 Campus IP LLC analytics // android : 2014-08-07 Charleston Road Registry Inc. android // anquan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. anquan // apartments : 2014-12-11 June Maple, LLC apartments // aquarelle : 2014-07-24 Aquarelle.com aquarelle // aramco : 2014-11-20 Aramco Services Company aramco // archi : 2014-02-06 STARTING DOT LIMITED archi // army : 2014-03-06 United TLD Holdco Ltd. army // arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E. arte // associates : 2014-03-06 Baxter Hill, LLC associates // attorney : 2014-03-20 attorney // auction : 2014-03-20 auction // audio : 2014-03-20 Uniregistry, Corp. audio // author : 2014-12-18 Amazon EU S.à r.l. author // auto : 2014-11-13 Uniregistry, Corp. auto // autos : 2014-01-09 DERAutos, LLC autos // avianca : 2015-01-08 Aerovias del Continente Americano S.A. Avianca avianca // axa : 2013-12-19 AXA SA axa // azure : 2014-12-18 Microsoft Corporation azure // baidu : 2015-01-08 Baidu, Inc. baidu // band : 2014-06-12 band // bank : 2014-09-25 fTLD Registry Services LLC bank // bar : 2013-12-12 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable bar // barcelona : 2014-07-24 Municipi de Barcelona barcelona // barclaycard : 2014-11-20 Barclays Bank PLC barclaycard // barclays : 2014-11-20 Barclays Bank PLC barclays // bargains : 2013-11-14 Half Hallow, LLC bargains // bauhaus : 2014-04-17 Werkhaus GmbH bauhaus // bayern : 2014-01-23 Bayern Connect GmbH bayern // bbc : 2014-12-18 British Broadcasting Corporation bbc // bbva : 2014-10-02 BANCO BILBAO VIZCAYA ARGENTARIA, S.A. bbva // bcn : 2014-07-24 Municipi de Barcelona bcn // beer : 2014-01-09 Top Level Domain Holdings Limited beer // bentley : 2014-12-18 Bentley Motors Limited bentley // berlin : 2013-10-31 dotBERLIN GmbH & Co. KG berlin // best : 2013-12-19 BestTLD Pty Ltd best // bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited bharti // bible : 2014-06-19 American Bible Society bible // bid : 2013-12-19 dot Bid Limited bid // bike : 2013-08-27 Grand Hollow, LLC bike // bing : 2014-12-18 Microsoft Corporation bing // bingo : 2014-12-04 Sand Cedar, LLC bingo // bio : 2014-03-06 STARTING DOT LIMITED bio // black : 2014-01-16 Afilias Limited black // blackfriday : 2014-01-16 Uniregistry, Corp. blackfriday // bloomberg : 2014-07-17 Bloomberg IP Holdings LLC bloomberg // blue : 2013-11-07 Afilias Limited blue // bms : 2014-10-30 Bristol-Myers Squibb Company bms // bmw : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft bmw // bnl : 2014-07-24 Banca Nazionale del Lavoro bnl // bnpparibas : 2014-05-29 BNP Paribas bnpparibas // boats : 2014-12-04 DERBoats, LLC boats // bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br bom // bond : 2014-06-05 Bond University Limited bond // boo : 2014-01-30 Charleston Road Registry Inc. boo // boots : 2015-01-08 THE BOOTS COMPANY PLC boots // bot : 2014-12-18 Amazon EU S.à r.l. bot // boutique : 2013-11-14 Over Galley, LLC boutique // bradesco : 2014-12-18 Banco Bradesco S.A. bradesco // bridgestone : 2014-12-18 Bridgestone Corporation bridgestone // broadway : 2014-12-22 Celebrate Broadway, Inc. broadway // broker : 2014-12-11 IG Group Holdings PLC broker // brussels : 2014-02-06 DNS.be vzw brussels // budapest : 2013-11-21 Top Level Domain Holdings Limited budapest // build : 2013-11-07 Plan Bee LLC build // builders : 2013-11-07 Atomic Madison, LLC builders // business : 2013-11-07 Spring Cross, LLC business // buy : 2014-12-18 Amazon EU S.à r.l. buy // buzz : 2013-10-02 DOTSTRATEGY CO. buzz // bzh : 2014-02-27 Association www.bzh bzh // cab : 2013-10-24 Half Sunset, LLC cab // cal : 2014-07-24 Charleston Road Registry Inc. cal // call : 2014-12-18 Amazon EU S.à r.l. call // camera : 2013-08-27 Atomic Maple, LLC camera // camp : 2013-11-07 Delta Dynamite, LLC camp // cancerresearch : 2014-05-15 Australian Cancer Research Foundation cancerresearch // canon : 2014-09-12 Canon Inc. canon // capetown : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry capetown // capital : 2014-03-06 Delta Mill, LLC capital // car : 2015-01-22 Charleston Road Registry Inc. car // caravan : 2013-12-12 Caravan International, Inc. caravan // cards : 2013-12-05 Foggy Hollow, LLC cards // care : 2014-03-06 Goose Cross care // career : 2013-10-09 dotCareer LLC career // careers : 2013-10-02 Wild Corner, LLC careers // cars : 2014-11-13 Uniregistry, Corp. cars // cartier : 2014-06-23 Richemont DNS Inc. cartier // casa : 2013-11-21 Top Level Domain Holdings Limited casa // cash : 2014-03-06 Delta Lake, LLC cash // casino : 2014-12-18 Binky Sky, LLC casino // catering : 2013-12-05 New Falls. LLC catering // cba : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA cba // cbn : 2014-08-22 The Christian Broadcasting Network, Inc. cbn // center : 2013-11-07 Tin Mill, LLC center // ceo : 2013-11-07 CEOTLD Pty Ltd ceo // cern : 2014-06-05 European Organization for Nuclear Research (\ cern // cfa : 2014-08-28 CFA Institute cfa // cfd : 2014-12-11 IG Group Holdings PLC cfd // channel : 2014-05-08 Charleston Road Registry Inc. channel // chat : 2014-12-04 Sand Fields, LLC chat // cheap : 2013-11-14 Sand Cover, LLC cheap // chloe : 2014-10-16 Richemont DNS Inc. chloe // christmas : 2013-11-21 Uniregistry, Corp. christmas // chrome : 2014-07-24 Charleston Road Registry Inc. chrome // church : 2014-02-06 Holly Fileds, LLC church // circle : 2014-12-18 Amazon EU S.à r.l. circle // cisco : 2014-12-22 Cisco Technology, Inc. cisco // citic : 2014-01-09 CITIC Group Corporation citic // city : 2014-05-29 Snow Sky, LLC city // cityeats : 2014-12-11 Lifestyle Domain Holdings, Inc. cityeats // claims : 2014-03-20 Black Corner, LLC claims // cleaning : 2013-12-05 Fox Shadow, LLC cleaning // click : 2014-06-05 Uniregistry, Corp. click // clinic : 2014-03-20 Goose Park, LLC clinic // clothing : 2013-08-27 Steel Lake, LLC clothing // club : 2013-11-08 .CLUB DOMAINS, LLC club // coach : 2014-10-09 Koko Island, LLC coach // codes : 2013-10-31 Puff Willow, LLC codes // coffee : 2013-10-17 Trixy Cover, LLC coffee // college : 2014-01-16 XYZ.COM LLC college // cologne : 2014-02-05 NetCologne Gesellschaft für Telekommunikation mbH cologne // commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA commbank // community : 2013-12-05 Fox Orchard, LLC community // company : 2013-11-07 Silver Avenue, LLC company // computer : 2013-10-24 Pine Mill, LLC computer // comsec : 2015-01-08 VeriSign, Inc. comsec // condos : 2013-12-05 Pine House, LLC condos // construction : 2013-09-16 Fox Dynamite, LLC construction // consulting : 2013-12-05 consulting // contact : 2015-01-08 Top Level Spectrum, Inc. contact // contractors : 2013-09-10 Magic Woods, LLC contractors // cooking : 2013-11-21 Top Level Domain Holdings Limited cooking // cool : 2013-11-14 Koko Lake, LLC cool // corsica : 2014-09-25 Collectivité Territoriale de Corse corsica // country : 2013-12-19 Top Level Domain Holdings Limited country // courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD courses // credit : 2014-03-20 Snow Shadow, LLC credit // creditcard : 2014-03-20 Binky Frostbite, LLC creditcard // creditunion : 2015-01-22 CUNA Performance Resources, LLC creditunion // cricket : 2014-10-09 dot Cricket Limited cricket // crown : 2014-10-24 Crown Equipment Corporation crown // crs : 2014-04-03 Federated Co-operatives Limited crs // cruises : 2013-12-05 Spring Way, LLC cruises // csc : 2014-09-25 Alliance-One Services, Inc. csc // cuisinella : 2014-04-03 SALM S.A.S. cuisinella // cymru : 2014-05-08 Nominet UK cymru // cyou : 2015-01-22 Beijing Gamease Age Digital Technology Co., Ltd. cyou // dabur : 2014-02-06 Dabur India Limited dabur // dad : 2014-01-23 Charleston Road Registry Inc. dad // dance : 2013-10-24 United TLD Holdco Ltd. dance // date : 2014-11-20 dot Date Limited date // dating : 2013-12-05 Pine Fest, LLC dating // datsun : 2014-03-27 NISSAN MOTOR CO., LTD. datsun // day : 2014-01-30 Charleston Road Registry Inc. day // dclk : 2014-11-20 Charleston Road Registry Inc. dclk // dealer : 2014-12-22 Dealer Dot Com, Inc. dealer // deals : 2014-05-22 Sand Sunset, LLC deals // degree : 2014-03-06 degree // delivery : 2014-09-11 Steel Station, LLC delivery // dell : 2014-10-24 Dell Inc. dell // democrat : 2013-10-24 United TLD Holdco Ltd. democrat // dental : 2014-03-20 Tin Birch, LLC dental // dentist : 2014-03-20 dentist // desi : 2013-11-14 Desi Networks LLC desi // design : 2014-11-07 Top Level Design, LLC design // dev : 2014-10-16 Charleston Road Registry Inc. dev // diamonds : 2013-09-22 John Edge, LLC diamonds // diet : 2014-06-26 Uniregistry, Corp. diet // digital : 2014-03-06 Dash Park, LLC digital // direct : 2014-04-10 Half Trail, LLC direct // directory : 2013-09-20 Extra Madison, LLC directory // discount : 2014-03-06 Holly Hill, LLC discount // dnp : 2013-12-13 Dai Nippon Printing Co., Ltd. dnp // docs : 2014-10-16 Charleston Road Registry Inc. docs // dog : 2014-12-04 Koko Mill, LLC dog // doha : 2014-09-18 Communications Regulatory Authority (CRA) doha // domains : 2013-10-17 Sugar Cross, LLC domains // doosan : 2014-04-03 Doosan Corporation doosan // download : 2014-11-20 dot Support Limited download // dubai : 2015-01-01 Dubai Smart Government Department dubai // durban : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry durban // dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG dvag // earth : 2014-12-04 Interlink Co., Ltd. earth // eat : 2014-01-23 Charleston Road Registry Inc. eat // edeka : 2014-12-18 EDEKA Verband kaufmännischer Genossenschaften e.V. edeka // education : 2013-11-07 Brice Way, LLC education // email : 2013-10-31 Spring Madison, LLC email // emerck : 2014-04-03 Merck KGaA emerck // energy : 2014-09-11 Binky Birch, LLC energy // engineer : 2014-03-06 United TLD Holdco Ltd. engineer // engineering : 2014-03-06 Romeo Canyon engineering // enterprises : 2013-09-20 Snow Oaks, LLC enterprises // epson : 2014-12-04 Seiko Epson Corporation epson // equipment : 2013-08-27 Corn Station, LLC equipment // erni : 2014-04-03 ERNI Group Holding AG erni // esq : 2014-05-08 Charleston Road Registry Inc. esq // estate : 2013-08-27 Trixy Park, LLC estate // eurovision : 2014-04-24 European Broadcasting Union (EBU) eurovision // eus : 2013-12-12 Puntueus Fundazioa eus // events : 2013-12-05 Pioneer Maple, LLC events // everbank : 2014-05-15 EverBank everbank // exchange : 2014-03-06 Spring Falls, LLC exchange // expert : 2013-11-21 Magic Pass, LLC expert // exposed : 2013-12-05 Victor Beach, LLC exposed // fage : 2014-12-18 Fage International S.A. fage // fail : 2014-03-06 Atomic Pipe, LLC fail // fairwinds : 2014-11-13 FairWinds Partners, LLC fairwinds // faith : 2014-11-20 dot Faith Limited faith // fan : 2014-03-06 fan // fans : 2014-11-07 Asiamix Digital Limited fans // farm : 2013-11-07 Just Maple, LLC farm // fashion : 2014-07-03 Top Level Domain Holdings Limited fashion // fast : 2014-12-18 Amazon EU S.à r.l. fast // feedback : 2013-12-19 Top Level Spectrum, Inc. feedback // ferrero : 2014-12-18 Ferrero Trading Lux S.A. ferrero // film : 2015-01-08 Motion Picture Domain Registry Pty Ltd film // final : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br final // finance : 2014-03-20 Cotton Cypress, LLC finance // financial : 2014-03-06 Just Cover, LLC financial // firestone : 2014-12-18 Bridgestone Corporation firestone // firmdale : 2014-03-27 Firmdale Holdings Limited firmdale // fish : 2013-12-12 Fox Woods, LLC fish // fishing : 2013-11-21 Top Level Domain Holdings Limited fishing // fit : 2014-11-07 Top Level Domain Holdings Limited fit // fitness : 2014-03-06 Brice Orchard, LLC fitness // flights : 2013-12-05 Fox Station, LLC flights // florist : 2013-11-07 Half Cypress, LLC florist // flowers : 2014-10-09 Uniregistry, Corp. flowers // flsmidth : 2014-07-24 FLSmidth A/S flsmidth // fly : 2014-05-08 Charleston Road Registry Inc. fly // foo : 2014-01-23 Charleston Road Registry Inc. foo // football : 2014-12-18 Foggy Farms, LLC football // ford : 2014-11-13 Ford Motor Company ford // forex : 2014-12-11 IG Group Holdings PLC forex // forsale : 2014-05-22 forsale // foundation : 2013-12-05 John Dale, LLC foundation // frl : 2014-05-15 FRLregistry B.V. frl // frogans : 2013-12-19 OP3FT frogans // fund : 2014-03-20 John Castle, LLC fund // furniture : 2014-03-20 Lone Fields, LLC furniture // futbol : 2013-09-20 futbol // gal : 2013-11-07 Asociación puntoGAL gal // gallery : 2013-09-13 Sugar House, LLC gallery // garden : 2014-06-26 Top Level Domain Holdings Limited garden // gbiz : 2014-07-17 Charleston Road Registry Inc. gbiz // gdn : 2014-07-31 Joint Stock Company \ gdn // gea : 2014-12-04 GEA Group Aktiengesellschaft gea // gent : 2014-01-23 COMBELL GROUP NV/SA gent // ggee : 2014-01-09 GMO Internet, Inc. ggee // gift : 2013-10-17 Uniregistry, Corp. gift // gifts : 2014-07-03 Goose Sky, LLC gifts // gives : 2014-03-06 United TLD Holdco Ltd. gives // giving : 2014-11-13 Giving Limited giving // glass : 2013-11-07 Black Cover, LLC glass // gle : 2014-07-24 Charleston Road Registry Inc. gle // global : 2014-04-17 Dot GLOBAL AS global // globo : 2013-12-19 Globo Comunicação e Participações S.A globo // gmail : 2014-05-01 Charleston Road Registry Inc. gmail // gmo : 2014-01-09 GMO Internet, Inc. gmo // gmx : 2014-04-24 1&1 Mail & Media GmbH gmx // gold : 2015-01-22 June Edge, LLC gold // goldpoint : 2014-11-20 YODOBASHI CAMERA CO.,LTD. goldpoint // golf : 2014-12-18 Lone falls, LLC golf // goo : 2014-12-18 NTT Resonant Inc. goo // goog : 2014-11-20 Charleston Road Registry Inc. goog // google : 2014-07-24 Charleston Road Registry Inc. google // gop : 2014-01-16 Republican State Leadership Committee, Inc. gop // got : 2014-12-18 Amazon EU S.à r.l. got // graphics : 2013-09-13 Over Madison, LLC graphics // gratis : 2014-03-20 Pioneer Tigers, LLC gratis // green : 2014-05-08 Afilias Limited green // gripe : 2014-03-06 Corn Sunset, LLC gripe // group : 2014-08-15 Romeo Town, LLC group // gucci : 2014-11-13 Guccio Gucci S.p.a. gucci // guge : 2014-08-28 Charleston Road Registry Inc. guge // guide : 2013-09-13 Snow Moon, LLC guide // guitars : 2013-11-14 Uniregistry, Corp. guitars // guru : 2013-08-27 Pioneer Cypress, LLC guru // hamburg : 2014-02-20 Hamburg Top-Level-Domain GmbH hamburg // hangout : 2014-11-13 Charleston Road Registry Inc. hangout // haus : 2013-12-05 haus // healthcare : 2014-06-12 Silver Glen, LLC healthcare // help : 2014-06-26 Uniregistry, Corp. help // here : 2014-02-06 Charleston Road Registry Inc. here // hermes : 2014-07-10 HERMES INTERNATIONAL hermes // hiphop : 2014-03-06 Uniregistry, Corp. hiphop // hitachi : 2014-10-31 Hitachi, Ltd. hitachi // hiv : 2014-03-13 dotHIV gemeinnuetziger e.V. hiv // holdings : 2013-08-27 John Madison, LLC holdings // holiday : 2013-11-07 Goose Woods, LLC holiday // homes : 2014-01-09 DERHomes, LLC homes // honda : 2014-12-18 Honda Motor Co., Ltd. honda // horse : 2013-11-21 Top Level Domain Holdings Limited horse // host : 2014-04-17 DotHost Inc. host // hosting : 2014-05-29 Uniregistry, Corp. hosting // hotmail : 2014-12-18 Microsoft Corporation hotmail // house : 2013-11-07 Sugar Park, LLC house // how : 2014-01-23 Charleston Road Registry Inc. how // hsbc : 2014-10-24 HSBC Holdings PLC hsbc // ibm : 2014-07-31 International Business Machines Corporation ibm // ice : 2014-10-30 IntercontinentalExchange, Inc. ice // icu : 2015-01-08 One.com A/S icu // ifm : 2014-01-30 ifm electronic gmbh ifm // iinet : 2014-07-03 Connect West Pty. Ltd. iinet // immo : 2014-07-10 Auburn Bloom, LLC immo // immobilien : 2013-11-07 United TLD Holdco Ltd. immobilien // industries : 2013-12-05 Outer House, LLC industries // infiniti : 2014-03-27 NISSAN MOTOR CO., LTD. infiniti // ing : 2014-01-23 Charleston Road Registry Inc. ing // ink : 2013-12-05 Top Level Design, LLC ink // institute : 2013-11-07 Outer Maple, LLC institute // insure : 2014-03-20 Pioneer Willow, LLC insure // international : 2013-11-07 Wild Way, LLC international // investments : 2014-03-20 Holly Glen, LLC investments // ipiranga : 2014-08-28 Ipiranga Produtos de Petroleo S.A. ipiranga // irish : 2014-08-07 Dot-Irish LLC irish // ist : 2014-08-28 Istanbul Metropolitan Municipality ist // istanbul : 2014-08-28 Istanbul Metropolitan Municipality istanbul // itau : 2014-10-02 Itau Unibanco Holding S.A. itau // iwc : 2014-06-23 Richemont DNS Inc. iwc // jaguar : 2014-11-13 Jaguar Land Rover Ltd jaguar // java : 2014-06-19 Oracle Corporation java // jcb : 2014-11-20 JCB Co., Ltd. jcb // jetzt : 2014-01-09 New TLD Company AB jetzt // jlc : 2014-12-04 Richemont DNS Inc. jlc // joburg : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry joburg // jot : 2014-12-18 Amazon EU S.à r.l. jot // joy : 2014-12-18 Amazon EU S.à r.l. joy // jprs : 2014-09-18 Japan Registry Services Co., Ltd. jprs // juegos : 2014-03-20 Uniregistry, Corp. juegos // kaufen : 2013-11-07 United TLD Holdco Ltd. kaufen // kddi : 2014-09-12 KDDI CORPORATION kddi // kfh : 2014-12-04 Kuwait Finance House kfh // kim : 2013-09-23 Afilias Limited kim // kinder : 2014-11-07 Ferrero Trading Lux S.A. kinder // kitchen : 2013-09-20 Just Goodbye, LLC kitchen // kiwi : 2013-09-20 DOT KIWI LIMITED kiwi // koeln : 2014-01-09 NetCologne Gesellschaft für Telekommunikation mbH koeln // komatsu : 2015-01-08 Komatsu Ltd. komatsu // kpn : 2015-01-08 Koninklijke KPN N.V. kpn // krd : 2013-12-05 KRG Department of Information Technology krd // kred : 2013-12-19 KredTLD Pty Ltd kred // kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen kyoto // lacaixa : 2014-01-09 CAIXA D'ESTALVIS I PENSIONS DE BARCELONA lacaixa // land : 2013-09-10 Pine Moon, LLC land // landrover : 2014-11-13 Jaguar Land Rover Ltd landrover // lat : 2014-10-16 ECOM-LAC Federaciòn de Latinoamèrica y el Caribe para Internet y el Comercio Electrònico lat // latrobe : 2014-06-16 La Trobe University latrobe // law : 2015-01-22 Minds + Machines Group Limited law // lawyer : 2014-03-20 lawyer // lds : 2014-03-20 IRI Domain Management, LLC (\ lds // lease : 2014-03-06 Victor Trail, LLC lease // leclerc : 2014-08-07 A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc leclerc // legal : 2014-10-16 Blue Falls, LLC legal // lgbt : 2014-05-08 Afilias Limited lgbt // liaison : 2014-10-02 Liaison Technologies, Incorporated liaison // lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG lidl // life : 2014-02-06 Trixy Oaks, LLC life // lifeinsurance : 2015-01-15 American Council of Life Insurers lifeinsurance // lifestyle : 2014-12-11 Lifestyle Domain Holdings, Inc. lifestyle // lighting : 2013-08-27 John McCook, LLC lighting // like : 2014-12-18 Amazon EU S.à r.l. like // limited : 2014-03-06 Big Fest, LLC limited // limo : 2013-10-17 Hidden Frostbite, LLC limo // lincoln : 2014-11-13 Ford Motor Company lincoln // linde : 2014-12-04 Linde Aktiengesellschaft linde // link : 2013-11-14 Uniregistry, Corp. link // live : 2014-12-04 Half Woods, LLC live // loan : 2014-11-20 dot Loan Limited loan // loans : 2014-03-20 June Woods, LLC loans // london : 2013-11-14 Dot London Domains Limited london // lotte : 2014-11-07 Lotte Holdings Co., Ltd. lotte // lotto : 2014-04-10 Afilias Limited lotto // love : 2014-12-22 Merchant Law Group LLP love // ltd : 2014-09-25 Over Corner, LLC ltd // ltda : 2014-04-17 DOMAIN ROBOT SERVICOS DE HOSPEDAGEM NA INTERNET LTDA ltda // lupin : 2014-11-07 LUPIN LIMITED lupin // luxe : 2014-01-09 Top Level Domain Holdings Limited luxe // luxury : 2013-10-17 Luxury Partners, LLC luxury // madrid : 2014-05-01 Comunidad de Madrid madrid // maif : 2014-10-02 Mutuelle Assurance Instituteur France (MAIF) maif // maison : 2013-12-05 Victor Frostbite, LLC maison // makeup : 2015-01-15 L'Oréal makeup // man : 2014-12-04 MAN SE man // management : 2013-11-07 John Goodbye, LLC management // mango : 2013-10-24 PUNTO FA S.L. mango // market : 2014-03-06 market // marketing : 2013-11-07 Fern Pass, LLC marketing // markets : 2014-12-11 IG Group Holdings PLC markets // marriott : 2014-10-09 Marriott Worldwide Corporation marriott // media : 2014-03-06 Grand Glen, LLC media // meet : 2014-01-16 Afilias Limited meet // melbourne : 2014-05-29 The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation melbourne // meme : 2014-01-30 Charleston Road Registry Inc. meme // memorial : 2014-10-16 Dog Beach, LLC memorial // menu : 2013-09-11 Wedding TLD2, LLC menu // meo : 2014-11-07 PT Comunicacoes S.A. meo // miami : 2013-12-19 Top Level Domain Holdings Limited miami // microsoft : 2014-12-18 Microsoft Corporation microsoft // mini : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft mini // mma : 2014-11-07 MMA IARD mma // mobily : 2014-12-18 GreenTech Consultancy Company W.L.L. mobily // moda : 2013-11-07 United TLD Holdco Ltd. moda // moe : 2013-11-13 Interlink Co., Ltd. moe // moi : 2014-12-18 Amazon EU S.à r.l. moi // monash : 2013-09-30 Monash University monash // money : 2014-10-16 Outer McCook, LLC money // montblanc : 2014-06-23 Richemont DNS Inc. montblanc // mormon : 2013-12-05 IRI Domain Management, LLC (\ mormon // mortgage : 2014-03-20 mortgage // moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) moscow // motorcycles : 2014-01-09 DERMotorcycles, LLC motorcycles // mov : 2014-01-30 Charleston Road Registry Inc. mov // movistar : 2014-10-16 Telefónica S.A. movistar // mtn : 2014-12-04 MTN Dubai Limited mtn // mtpc : 2014-11-20 Mitsubishi Tanabe Pharma Corporation mtpc // nadex : 2014-12-11 IG Group Holdings PLC nadex // nagoya : 2013-10-24 GMO Registry, Inc. nagoya // navy : 2014-03-06 United TLD Holdco Ltd. navy // nec : 2015-01-08 NEC Corporation nec // netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA netbank // network : 2013-11-14 Trixy Manor, LLC network // neustar : 2013-12-05 NeuStar, Inc. neustar // new : 2014-01-30 Charleston Road Registry Inc. new // news : 2014-12-18 Hidden Bloom, LLC news // nexus : 2014-07-24 Charleston Road Registry Inc. nexus // ngo : 2014-03-06 Public Interest Registry ngo // nhk : 2014-02-13 Japan Broadcasting Corporation (NHK) nhk // nico : 2014-12-04 DWANGO Co., Ltd. nico // ninja : 2013-11-07 United TLD Holdco Ltd. ninja // nissan : 2014-03-27 NISSAN MOTOR CO., LTD. nissan // nokia : 2015-01-08 Nokia Corporation nokia // norton : 2014-12-04 Symantec Corporation norton // nowruz : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. nowruz // nra : 2014-05-22 NRA Holdings Company, INC. nra // nrw : 2013-11-21 Minds + Machines GmbH nrw // ntt : 2014-10-31 NIPPON TELEGRAPH AND TELEPHONE CORPORATION ntt // nyc : 2014-01-23 The City of New York by and through the New York City Department of Information Technology & Telecommunications nyc // obi : 2014-09-25 OBI Group Holding SE & Co. KGaA obi // okinawa : 2013-12-05 BusinessRalliart Inc. okinawa // omega : 2015-01-08 The Swatch Group Ltd omega // one : 2014-11-07 One.com A/S one // ong : 2014-03-06 Public Interest Registry ong // onl : 2013-09-16 I-Registry Ltd. onl // online : 2015-01-15 DotOnline Inc. online // ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED ooo // oracle : 2014-06-19 Oracle Corporation oracle // organic : 2014-03-27 Afilias Limited organic // osaka : 2014-09-04 Interlink Co., Ltd. osaka // otsuka : 2013-10-11 Otsuka Holdings Co., Ltd. otsuka // ovh : 2014-01-16 OVH SAS ovh // page : 2014-12-04 Charleston Road Registry Inc. page // panerai : 2014-11-07 Richemont DNS Inc. panerai // paris : 2014-01-30 City of Paris paris // pars : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. pars // partners : 2013-12-05 Magic Glen, LLC partners // parts : 2013-12-05 Sea Goodbye, LLC parts // party : 2014-09-11 Blue Sky Registry Limited party // pharmacy : 2014-06-19 National Association of Boards of Pharmacy pharmacy // philips : 2014-11-07 Koninklijke Philips N.V. philips // photo : 2013-11-14 Uniregistry, Corp. photo // photography : 2013-09-20 Sugar Glen, LLC photography // photos : 2013-10-17 Sea Corner, LLC photos // physio : 2014-05-01 PhysBiz Pty Ltd physio // piaget : 2014-10-16 Richemont DNS Inc. piaget // pics : 2013-11-14 Uniregistry, Corp. pics // pictet : 2014-06-26 Pictet Europe S.A. pictet // pictures : 2014-03-06 Foggy Sky, LLC pictures // pid : 2015-01-08 Top Level Spectrum, Inc. pid // pin : 2014-12-18 Amazon EU S.à r.l. pin // pink : 2013-10-01 Afilias Limited pink // pizza : 2014-06-26 Foggy Moon, LLC pizza // place : 2014-04-24 Snow Galley, LLC place // plumbing : 2013-09-10 Spring Tigers, LLC plumbing // pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG pohl // poker : 2014-07-03 Afilias Domains No. 5 Limited poker // porn : 2014-10-16 ICM Registry PN LLC porn // praxi : 2013-12-05 Praxi S.p.A. praxi // press : 2014-04-03 DotPress Inc. press // prod : 2014-01-23 Charleston Road Registry Inc. prod // productions : 2013-12-05 Magic Birch, LLC productions // prof : 2014-07-24 Charleston Road Registry Inc. prof // promo : 2014-12-18 Play.PROMO Oy promo // properties : 2013-12-05 Big Pass, LLC properties // property : 2014-05-22 Uniregistry, Corp. property // pub : 2013-12-12 United TLD Holdco Ltd. pub // qpon : 2013-11-14 dotCOOL, Inc. qpon // quebec : 2013-12-19 PointQuébec Inc quebec // racing : 2014-12-04 Premier Registry Limited racing // read : 2014-12-18 Amazon EU S.à r.l. read // realtor : 2014-05-29 Real Estate Domains LLC realtor // recipes : 2013-10-17 Grand Island, LLC recipes // red : 2013-11-07 Afilias Limited red // redstone : 2014-10-31 Redstone Haute Couture Co., Ltd. redstone // rehab : 2014-03-06 United TLD Holdco Ltd. rehab // reise : 2014-03-13 dotreise GmbH reise // reisen : 2014-03-06 New Cypress, LLC reisen // reit : 2014-09-04 National Association of Real Estate Investment Trusts, Inc. reit // ren : 2013-12-12 Beijing Qianxiang Wangjing Technology Development Co., Ltd. ren // rent : 2014-12-04 DERRent, LLC rent // rentals : 2013-12-05 Big Hollow,LLC rentals // repair : 2013-11-07 Lone Sunset, LLC repair // report : 2013-12-05 Binky Glen, LLC report // republican : 2014-03-20 United TLD Holdco Ltd. republican // rest : 2013-12-19 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable rest // restaurant : 2014-07-03 Snow Avenue, LLC restaurant // review : 2014-11-20 dot Review Limited review // reviews : 2013-09-13 reviews // rich : 2013-11-21 I-Registry Ltd. rich // ricoh : 2014-11-20 Ricoh Company, Ltd. ricoh // rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO rio // rip : 2014-07-10 United TLD Holdco Ltd. rip // rocher : 2014-12-18 Ferrero Trading Lux S.A. rocher // rocks : 2013-11-14 rocks // rodeo : 2013-12-19 Top Level Domain Holdings Limited rodeo // room : 2014-12-18 Amazon EU S.à r.l. room // rsvp : 2014-05-08 Charleston Road Registry Inc. rsvp // ruhr : 2013-10-02 regiodot GmbH & Co. KG ruhr // ryukyu : 2014-01-09 BusinessRalliart Inc. ryukyu // saarland : 2013-12-12 dotSaarland GmbH saarland // safe : 2014-12-18 Amazon EU S.à r.l. safe // safety : 2015-01-08 Safety Registry Services, LLC. safety // sakura : 2014-12-18 SAKURA Internet Inc. sakura // sale : 2014-10-16 sale // salon : 2014-12-11 Outer Orchard, LLC salon // samsung : 2014-04-03 SAMSUNG SDS CO., LTD samsung // sandvik : 2014-11-13 Sandvik AB sandvik // sandvikcoromant : 2014-11-07 Sandvik AB sandvikcoromant // sanofi : 2014-10-09 Sanofi sanofi // sap : 2014-03-27 SAP AG sap // sapo : 2014-11-07 PT Comunicacoes S.A. sapo // sarl : 2014-07-03 Delta Orchard, LLC sarl // saxo : 2014-10-31 Saxo Bank A/S saxo // sbs : 2014-11-07 SPECIAL BROADCASTING SERVICE CORPORATION sbs // sca : 2014-03-13 SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ) sca // scb : 2014-02-20 The Siam Commercial Bank Public Company Limited (\ scb // schmidt : 2014-04-03 SALM S.A.S. schmidt // scholarships : 2014-04-24 Scholarships.com, LLC scholarships // school : 2014-12-18 Little Galley, LLC school // schule : 2014-03-06 Outer Moon, LLC schule // schwarz : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG schwarz // science : 2014-09-11 dot Science Limited science // scor : 2014-10-31 SCOR SE scor // scot : 2014-01-23 Dot Scot Registry Limited scot // seat : 2014-05-22 SEAT, S.A. (Sociedad Unipersonal) seat // seek : 2014-12-04 Seek Limited seek // sener : 2014-10-24 Sener Ingeniería y Sistemas, S.A. sener // services : 2014-02-27 Fox Castle, LLC services // sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG sew // sex : 2014-11-13 ICM Registry SX LLC sex // sexy : 2013-09-11 Uniregistry, Corp. sexy // sharp : 2014-05-01 Sharp Corporation sharp // shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. shia // shiksha : 2013-11-14 Afilias Limited shiksha // shoes : 2013-10-02 Binky Galley, LLC shoes // shouji : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. shouji // shriram : 2014-01-23 Shriram Capital Ltd. shriram // singles : 2013-08-27 Fern Madison, LLC singles // site : 2015-01-15 DotSite Inc. site // skin : 2015-01-15 L'Oréal skin // sky : 2014-06-19 Sky IP International Ltd, a company incorporated in England and Wales, operating via its registered Swiss branch sky // skype : 2014-12-18 Microsoft Corporation skype // smile : 2014-12-18 Amazon EU S.à r.l. smile // social : 2013-11-07 United TLD Holdco Ltd. social // software : 2014-03-20 software // sohu : 2013-12-19 Sohu.com Limited sohu // solar : 2013-11-07 Ruby Town, LLC solar // solutions : 2013-11-07 Silver Cover, LLC solutions // sony : 2015-01-08 Sony Corporation sony // soy : 2014-01-23 Charleston Road Registry Inc. soy // space : 2014-04-03 DotSpace Inc. space // spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG spiegel // spreadbetting : 2014-12-11 IG Group Holdings PLC spreadbetting // stada : 2014-11-13 STADA Arzneimittel AG stada // star : 2015-01-08 Star India Private Limited star // statoil : 2014-12-04 Statoil ASA statoil // stc : 2014-10-09 Saudi Telecom Company stc // stcgroup : 2014-10-09 Saudi Telecom Company stcgroup // stockholm : 2014-12-18 Stockholms kommun stockholm // storage : 2014-12-22 Self Storage Company LLC storage // study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD study // style : 2014-12-04 Binky Moon, LLC style // sucks : 2014-12-22 Vox Populi Registry Inc. sucks // supplies : 2013-12-19 Atomic Fields, LLC supplies // supply : 2013-12-19 Half Falls, LLC supply // support : 2013-10-24 Grand Orchard, LLC support // surf : 2014-01-09 Top Level Domain Holdings Limited surf // surgery : 2014-03-20 Tin Avenue, LLC surgery // suzuki : 2014-02-20 SUZUKI MOTOR CORPORATION suzuki // swatch : 2015-01-08 The Swatch Group Ltd swatch // swiss : 2014-10-16 Swiss Confederation swiss // sydney : 2014-09-18 State of New South Wales, Department of Premier and Cabinet sydney // symantec : 2014-12-04 Symantec Corporation symantec // systems : 2013-11-07 Dash Cypress, LLC systems // tab : 2014-12-04 Tabcorp Holdings Limited tab // taipei : 2014-07-10 Taipei City Government taipei // taobao : 2015-01-15 Alibaba Group Holding Limited taobao // tatar : 2014-04-24 Limited Liability Company \ tatar // tattoo : 2013-08-30 Uniregistry, Corp. tattoo // tax : 2014-03-20 Storm Orchard, LLC tax // tci : 2014-09-12 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. tci // technology : 2013-09-13 Auburn Falls technology // telefonica : 2014-10-16 Telefónica S.A. telefonica // temasek : 2014-08-07 Temasek Holdings (Private) Limited temasek // tennis : 2014-12-04 Cotton Bloom, LLC tennis // tienda : 2013-11-14 Victor Manor, LLC tienda // tips : 2013-09-20 Corn Willow, LLC tips // tires : 2014-11-07 Dog Edge, LLC tires // tirol : 2014-04-24 punkt Tirol GmbH tirol // tmall : 2015-01-15 Alibaba Group Holding Limited tmall // today : 2013-09-20 Pearl Woods, LLC today // tokyo : 2013-11-13 GMO Registry, Inc. tokyo // tools : 2013-11-21 Pioneer North, LLC tools // top : 2014-03-20 Jiangsu Bangning Science & Technology Co.,Ltd. top // toray : 2014-12-18 Toray Industries, Inc. toray // toshiba : 2014-04-10 TOSHIBA Corporation toshiba // tours : 2015-01-22 Sugar Station, LLC tours // town : 2014-03-06 Koko Moon, LLC town // toys : 2014-03-06 Pioneer Orchard, LLC toys // trade : 2014-01-23 Elite Registry Limited trade // trading : 2014-12-11 IG Group Holdings PLC trading // training : 2013-11-07 Wild Willow, LLC training // trust : 2014-10-16 trust // tui : 2014-07-03 TUI AG tui // tushu : 2014-12-18 Amazon EU S.à r.l. tushu // ubs : 2014-12-11 UBS AG ubs // university : 2014-03-06 Little Station, LLC university // uno : 2013-09-11 Dot Latin LLC uno // uol : 2014-05-01 UBN INTERNET LTDA. uol // vacations : 2013-12-05 Atomic Tigers, LLC vacations // vana : 2014-12-11 Lifestyle Domain Holdings, Inc. vana // vegas : 2014-01-16 Dot Vegas, Inc. vegas // ventures : 2013-08-27 Binky Lake, LLC ventures // versicherung : 2014-03-20 dotversicherung-registry GmbH versicherung // vet : 2014-03-06 vet // viajes : 2013-10-17 Black Madison, LLC viajes // video : 2014-10-16 video // villas : 2013-12-05 New Sky, LLC villas // vip : 2015-01-22 Minds + Machines Group Limited vip // virgin : 2014-09-25 Virgin Enterprises Limited virgin // vision : 2013-12-05 Koko Station, LLC vision // vista : 2014-09-18 Vistaprint Limited vista // vistaprint : 2014-09-18 Vistaprint Limited vistaprint // viva : 2014-11-07 Saudi Telecom Company viva // vlaanderen : 2014-02-06 DNS.be vzw vlaanderen // vodka : 2013-12-19 Top Level Domain Holdings Limited vodka // vote : 2013-11-21 Monolith Registry LLC vote // voting : 2013-11-13 Valuetainment Corp. voting // voto : 2013-11-21 Monolith Registry LLC voto // voyage : 2013-08-27 Ruby House, LLC voyage // wales : 2014-05-08 Nominet UK wales // walter : 2014-11-13 Sandvik AB walter // wang : 2013-10-24 Zodiac Leo Limited wang // wanggou : 2014-12-18 Amazon EU S.à r.l. wanggou // watch : 2013-11-14 Sand Shadow, LLC watch // watches : 2014-12-22 Richemont DNS Inc. watches // weather : 2015-01-08 The Weather Channel, LLC weather // webcam : 2014-01-23 dot Webcam Limited webcam // website : 2014-04-03 DotWebsite Inc. website // wed : 2013-10-01 Atgron, Inc. wed // wedding : 2014-04-24 Top Level Domain Holdings Limited wedding // whoswho : 2014-02-20 Who's Who Registry whoswho // wien : 2013-10-28 punkt.wien GmbH wien // wiki : 2013-11-07 Top Level Design, LLC wiki // williamhill : 2014-03-13 William Hill Organization Limited williamhill // win : 2014-11-20 First Registry Limited win // windows : 2014-12-18 Microsoft Corporation windows // wme : 2014-02-13 William Morris Endeavor Entertainment, LLC wme // work : 2013-12-19 Top Level Domain Holdings Limited work // works : 2013-11-14 Little Dynamite, LLC works // world : 2014-06-12 Bitter Fields, LLC world // wtc : 2013-12-19 World Trade Centers Association, Inc. wtc // wtf : 2014-03-06 Hidden Way, LLC wtf // xbox : 2014-12-18 Microsoft Corporation xbox // xerox : 2014-10-24 Xerox DNHC LLC xerox // xihuan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. xihuan // xin : 2014-12-11 Elegant Leader Limited xin // xn--11b4c3d : 2015-01-15 VeriSign Sarl कॉम // xn--1qqw23a : 2014-01-09 Guangzhou YU Wei Information Technology Co., Ltd. 佛山 // xn--30rr7y : 2014-06-12 Excellent First Limited 慈善 // xn--3bst00m : 2013-09-13 Eagle Horizon Limited 集团 // xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED 在线 // xn--3pxu8k : 2015-01-15 VeriSign Sarl 点看 // xn--42c2d9a : 2015-01-15 VeriSign Sarl คอม // xn--45q11c : 2013-11-21 Zodiac Scorpio Limited 八卦 // xn--4gbrim : 2013-10-04 Suhub Electronic Establishment موقع // xn--55qw42g : 2013-11-08 China Organizational Name Administration Center 公益 // xn--55qx5d : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center) 公司 // xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited 网站 // xn--6frz82g : 2013-09-23 Afilias Limited 移动 // xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited 我爱你 // xn--80adxhks : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) москва // xn--80asehdb : 2013-07-14 CORE Association онлайн // xn--80aswg : 2013-07-14 CORE Association сайт // xn--9dbq2a : 2015-01-15 VeriSign Sarl קום // xn--9et52u : 2014-06-12 RISE VICTORY LIMITED 时尚 // xn--b4w605ferd : 2014-08-07 Temasek Holdings (Private) Limited 淡马锡 // xn--c1avg : 2013-11-14 Public Interest Registry орг // xn--c2br7g : 2015-01-15 VeriSign Sarl नेट // xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD 삼성 // xn--czr694b : 2014-01-16 HU YI GLOBAL INFORMATION RESOURCES(HOLDING) COMPANY.HONGKONG LIMITED 商标 // xn--czrs0t : 2013-12-19 Wild Island, LLC 商店 // xn--czru2d : 2013-11-21 Zodiac Capricorn Limited 商城 // xn--d1acj3b : 2013-11-20 The Foundation for Network Initiatives “The Smart Internet” дети // xn--eckvdtc9d : 2014-12-18 Amazon EU S.à r.l. ポイント // xn--efvy88h : 2014-08-22 Xinhua News Agency Guangdong Branch 新华通讯社广东分社 新闻 // xn--fhbei : 2015-01-15 VeriSign Sarl كوم // xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED 中文网 // xn--fiq64b : 2013-10-14 CITIC Group Corporation 中信 // xn--fjq720a : 2014-05-22 Will Bloom, LLC 娱乐 // xn--flw351e : 2014-07-31 Charleston Road Registry Inc. 谷歌 // xn--hxt814e : 2014-05-15 Zodiac Libra Limited 网店 // xn--i1b6b1a6a2e : 2013-11-14 Public Interest Registry संगठन // xn--imr513n : 2014-12-11 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY. HONGKONG LIMITED 餐厅 // xn--io0a7i : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center) 网络 // xn--j1aef : 2015-01-15 VeriSign Sarl ком // xn--jlq61u9w7b : 2015-01-08 Nokia Corporation 诺基亚 // xn--kcrx77d1x4a : 2014-11-07 Koninklijke Philips N.V. 飞利浦 // xn--kpu716f : 2014-12-22 Richemont DNS Inc. 手表 // xn--kput3i : 2014-02-13 Beijing RITT-Net Technology Development Co., Ltd 手机 // xn--mgba3a3ejt : 2014-11-20 Aramco Services Company ارامكو // xn--mgbab2bd : 2013-10-31 CORE Association بازار // xn--mgbb9fbpob : 2014-12-18 GreenTech Consultancy Company W.L.L. موبايلي // xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. همراه // xn--mk1bu44c : 2015-01-15 VeriSign Sarl 닷컴 // xn--mxtq1m : 2014-03-06 Net-Chinese Co., Ltd. 政府 // xn--ngbc5azd : 2013-07-13 International Domain Registry Pty. Ltd. شبكة // xn--ngbe9e0a : 2014-12-04 Kuwait Finance House بيتك // xn--nqv7f : 2013-11-14 Public Interest Registry 机构 // xn--nqv7fs00ema : 2013-11-14 Public Interest Registry 组织机构 // xn--nyqy26a : 2014-11-07 Stable Tone Limited 健康 // xn--p1acf : 2013-12-12 Rusnames Limited рус // xn--pbt977c : 2014-12-22 Richemont DNS Inc. 珠宝 // xn--pssy2u : 2015-01-15 VeriSign Sarl 大拿 // xn--q9jyb4c : 2013-09-17 Charleston Road Registry Inc. みんな // xn--qcka1pmc : 2014-07-31 Charleston Road Registry Inc. グーグル // xn--rhqv96g : 2013-09-11 Stable Tone Limited 世界 // xn--ses554g : 2014-01-16 网址 // xn--t60b56a : 2015-01-15 VeriSign Sarl 닷넷 // xn--tckwe : 2015-01-15 VeriSign Sarl コム // xn--unup4y : 2013-07-14 Spring Fields, LLC 游戏 // xn--vermgensberater-ctb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG vermögensberater // xn--vermgensberatung-pwb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG vermögensberatung // xn--vhquv : 2013-08-27 Dash McCook, LLC 企业 // xn--vuq861b : 2014-10-16 Beijing Tele-info Network Technology Co., Ltd. 信息 // xn--xhq521b : 2013-11-14 Guangzhou YU Wei Information Technology Co., Ltd. 广东 // xn--zfr164b : 2013-11-08 China Organizational Name Administration Center 政务 // xyz : 2013-12-05 XYZ.COM LLC xyz // yachts : 2014-01-09 DERYachts, LLC yachts // yamaxun : 2014-12-18 Amazon EU S.à r.l. yamaxun // yandex : 2014-04-10 YANDEX, LLC yandex // yodobashi : 2014-11-20 YODOBASHI CAMERA CO.,LTD. yodobashi // yoga : 2014-05-29 Top Level Domain Holdings Limited yoga // yokohama : 2013-12-12 GMO Registry, Inc. yokohama // youtube : 2014-05-01 Charleston Road Registry Inc. youtube // yun : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. yun // zara : 2014-11-07 Industria de Diseño Textil, S.A. (INDITEX, S.A.) zara // zero : 2014-12-18 Amazon EU S.à r.l. zero // zip : 2014-05-08 Charleston Road Registry Inc. zip // zone : 2013-11-14 Outer Falls, LLC zone // zuerich : 2014-11-07 Kanton Zürich (Canton of Zurich) zuerich // ===END ICANN DOMAINS=== // ===BEGIN PRIVATE DOMAINS=== // (Note: these are in alphabetical order by company name) // Amazon CloudFront : https://aws.amazon.com/cloudfront/ // Submitted by Donavan Miller 2013-03-22 cloudfront.net // Amazon Elastic Compute Cloud: https://aws.amazon.com/ec2/ // Submitted by Osman Surkatty 2014-12-16 ap-northeast-1.compute.amazonaws.com ap-southeast-1.compute.amazonaws.com ap-southeast-2.compute.amazonaws.com cn-north-1.compute.amazonaws.cn compute.amazonaws.cn compute.amazonaws.com compute-1.amazonaws.com eu-west-1.compute.amazonaws.com eu-central-1.compute.amazonaws.com sa-east-1.compute.amazonaws.com us-east-1.amazonaws.com us-gov-west-1.compute.amazonaws.com us-west-1.compute.amazonaws.com us-west-2.compute.amazonaws.com z-1.compute-1.amazonaws.com z-2.compute-1.amazonaws.com // Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/ // Submitted by Adam Stein 2013-04-02 elasticbeanstalk.com // Amazon Elastic Load Balancing : https://aws.amazon.com/elasticloadbalancing/ // Submitted by Scott Vidmar 2013-03-27 elb.amazonaws.com // Amazon S3 : https://aws.amazon.com/s3/ // Submitted by Courtney Eckhardt 2013-03-22 s3.amazonaws.com s3-us-west-2.amazonaws.com s3-us-west-1.amazonaws.com s3-eu-west-1.amazonaws.com s3-ap-southeast-1.amazonaws.com s3-ap-southeast-2.amazonaws.com s3-ap-northeast-1.amazonaws.com s3-sa-east-1.amazonaws.com s3-us-gov-west-1.amazonaws.com s3-fips-us-gov-west-1.amazonaws.com s3-website-us-east-1.amazonaws.com s3-website-us-west-2.amazonaws.com s3-website-us-west-1.amazonaws.com s3-website-eu-west-1.amazonaws.com s3-website-ap-southeast-1.amazonaws.com s3-website-ap-southeast-2.amazonaws.com s3-website-ap-northeast-1.amazonaws.com s3-website-sa-east-1.amazonaws.com s3-website-us-gov-west-1.amazonaws.com // BetaInABox // Submitted by adrian@betainabox.com 2012-09-13 betainabox.com // CentralNic : http://www.centralnic.com/names/domains // Submitted by registry 2012-09-27 ae.org ar.com br.com cn.com com.de com.se de.com eu.com gb.com gb.net hu.com hu.net jp.net jpn.com kr.com mex.com no.com qc.com ru.com sa.com se.com se.net uk.com uk.net us.com uy.com za.bz za.com // Africa.com Web Solutions Ltd : https://registry.africa.com // Submitted by Gavin Brown 2014-02-04 africa.com // iDOT Services Limited : http://www.domain.gr.com // Submitted by Gavin Brown 2014-02-04 gr.com // Radix FZC : http://domains.in.net // Submitted by Gavin Brown 2014-02-04 in.net // US REGISTRY LLC : http://us.org // Submitted by Gavin Brown 2014-02-04 us.org // co.com Registry, LLC : https://registry.co.com // Submitted by Gavin Brown 2014-02-04 co.com // c.la : http://www.c.la/ c.la // cloudControl : https://www.cloudcontrol.com/ // Submitted by Tobias Wilken 2013-07-23 cloudcontrolled.com cloudcontrolapp.com // co.ca : http://registry.co.ca/ co.ca // CoDNS B.V. co.nl co.no // Commerce Guys, SAS // Submitted by Damien Tournoud 2015-01-22 *.platform.sh // Cupcake : https://cupcake.io/ // Submitted by Jonathan Rudenberg 2013-10-08 cupcake.is // DreamHost : http://www.dreamhost.com/ // Submitted by Andrew Farmer 2012-10-02 dreamhosters.com // DynDNS.com : http://www.dyndns.com/services/dns/dyndns/ dyndns-at-home.com dyndns-at-work.com dyndns-blog.com dyndns-free.com dyndns-home.com dyndns-ip.com dyndns-mail.com dyndns-office.com dyndns-pics.com dyndns-remote.com dyndns-server.com dyndns-web.com dyndns-wiki.com dyndns-work.com dyndns.biz dyndns.info dyndns.org dyndns.tv at-band-camp.net ath.cx barrel-of-knowledge.info barrell-of-knowledge.info better-than.tv blogdns.com blogdns.net blogdns.org blogsite.org boldlygoingnowhere.org broke-it.net buyshouses.net cechire.com dnsalias.com dnsalias.net dnsalias.org dnsdojo.com dnsdojo.net dnsdojo.org does-it.net doesntexist.com doesntexist.org dontexist.com dontexist.net dontexist.org doomdns.com doomdns.org dvrdns.org dyn-o-saur.com dynalias.com dynalias.net dynalias.org dynathome.net dyndns.ws endofinternet.net endofinternet.org endoftheinternet.org est-a-la-maison.com est-a-la-masion.com est-le-patron.com est-mon-blogueur.com for-better.biz for-more.biz for-our.info for-some.biz for-the.biz forgot.her.name forgot.his.name from-ak.com from-al.com from-ar.com from-az.net from-ca.com from-co.net from-ct.com from-dc.com from-de.com from-fl.com from-ga.com from-hi.com from-ia.com from-id.com from-il.com from-in.com from-ks.com from-ky.com from-la.net from-ma.com from-md.com from-me.org from-mi.com from-mn.com from-mo.com from-ms.com from-mt.com from-nc.com from-nd.com from-ne.com from-nh.com from-nj.com from-nm.com from-nv.com from-ny.net from-oh.com from-ok.com from-or.com from-pa.com from-pr.com from-ri.com from-sc.com from-sd.com from-tn.com from-tx.com from-ut.com from-va.com from-vt.com from-wa.com from-wi.com from-wv.com from-wy.com ftpaccess.cc fuettertdasnetz.de game-host.org game-server.cc getmyip.com gets-it.net go.dyndns.org gotdns.com gotdns.org groks-the.info groks-this.info ham-radio-op.net here-for-more.info hobby-site.com hobby-site.org home.dyndns.org homedns.org homeftp.net homeftp.org homeip.net homelinux.com homelinux.net homelinux.org homeunix.com homeunix.net homeunix.org iamallama.com in-the-band.net is-a-anarchist.com is-a-blogger.com is-a-bookkeeper.com is-a-bruinsfan.org is-a-bulls-fan.com is-a-candidate.org is-a-caterer.com is-a-celticsfan.org is-a-chef.com is-a-chef.net is-a-chef.org is-a-conservative.com is-a-cpa.com is-a-cubicle-slave.com is-a-democrat.com is-a-designer.com is-a-doctor.com is-a-financialadvisor.com is-a-geek.com is-a-geek.net is-a-geek.org is-a-green.com is-a-guru.com is-a-hard-worker.com is-a-hunter.com is-a-knight.org is-a-landscaper.com is-a-lawyer.com is-a-liberal.com is-a-libertarian.com is-a-linux-user.org is-a-llama.com is-a-musician.com is-a-nascarfan.com is-a-nurse.com is-a-painter.com is-a-patsfan.org is-a-personaltrainer.com is-a-photographer.com is-a-player.com is-a-republican.com is-a-rockstar.com is-a-socialist.com is-a-soxfan.org is-a-student.com is-a-teacher.com is-a-techie.com is-a-therapist.com is-an-accountant.com is-an-actor.com is-an-actress.com is-an-anarchist.com is-an-artist.com is-an-engineer.com is-an-entertainer.com is-by.us is-certified.com is-found.org is-gone.com is-into-anime.com is-into-cars.com is-into-cartoons.com is-into-games.com is-leet.com is-lost.org is-not-certified.com is-saved.org is-slick.com is-uberleet.com is-very-bad.org is-very-evil.org is-very-good.org is-very-nice.org is-very-sweet.org is-with-theband.com isa-geek.com isa-geek.net isa-geek.org isa-hockeynut.com issmarterthanyou.com isteingeek.de istmein.de kicks-ass.net kicks-ass.org knowsitall.info land-4-sale.us lebtimnetz.de leitungsen.de likes-pie.com likescandy.com merseine.nu mine.nu misconfused.org mypets.ws myphotos.cc neat-url.com office-on-the.net on-the-web.tv podzone.net podzone.org readmyblog.org saves-the-whales.com scrapper-site.net scrapping.cc selfip.biz selfip.com selfip.info selfip.net selfip.org sells-for-less.com sells-for-u.com sells-it.net sellsyourhome.org servebbs.com servebbs.net servebbs.org serveftp.net serveftp.org servegame.org shacknet.nu simple-url.com space-to-rent.com stuff-4-sale.org stuff-4-sale.us teaches-yoga.com thruhere.net traeumtgerade.de webhop.biz webhop.info webhop.net webhop.org worse-than.tv writesthisblog.com // Fastly Inc. http://www.fastly.com/ // Submitted by Vladimir Vuksan 2013-05-31 a.ssl.fastly.net b.ssl.fastly.net global.ssl.fastly.net a.prod.fastly.net global.prod.fastly.net // Firebase, Inc. // Submitted by Chris Raynor 2014-01-21 firebaseapp.com // Flynn : https://flynn.io // Submitted by Jonathan Rudenberg 2014-07-12 flynnhub.com // GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains // Submitted by David Illsley 2014-08-28 service.gov.uk // GitHub, Inc. // Submitted by Ben Toews 2014-02-06 github.io githubusercontent.com // GlobeHosting, Inc. // Submitted by Zoltan Egresi 2013-07-12 ro.com // Google, Inc. // Submitted by Eduardo Vela 2014-12-19 appspot.com blogspot.ae blogspot.be blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.co.at blogspot.co.il blogspot.co.nz blogspot.co.uk blogspot.com blogspot.com.ar blogspot.com.au blogspot.com.br blogspot.com.es blogspot.com.tr blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hu blogspot.ie blogspot.in blogspot.it blogspot.jp blogspot.kr blogspot.mr blogspot.mx blogspot.nl blogspot.no blogspot.pt blogspot.re blogspot.ro blogspot.ru blogspot.se blogspot.sg blogspot.sk blogspot.td blogspot.tw codespot.com googleapis.com googlecode.com pagespeedmobilizer.com withgoogle.com // Heroku : https://www.heroku.com/ // Submitted by Tom Maher 2013-05-02 herokuapp.com herokussl.com // iki.fi // Submitted by Hannu Aronsson 2009-11-05 iki.fi // info.at : http://www.info.at/ biz.at info.at // Michau Enterprises Limited : http://www.co.pl/ co.pl // Microsoft : http://microsoft.com // Submitted by Barry Dorrans 2014-01-24 azurewebsites.net azure-mobile.net cloudapp.net // NFSN, Inc. : https://www.NearlyFreeSpeech.NET/ // Submitted by Jeff Wheelhouse 2014-02-02 nfshost.com // NYC.mn : http://www.information.nyc.mn // Submitted by Matthew Brown 2013-03-11 nyc.mn // One Fold Media : http://www.onefoldmedia.com/ // Submitted by Eddie Jones 2014-06-10 nid.io // Opera Software, A.S.A. // Submitted by Yngve Pettersen 2009-11-26 operaunite.com // OutSystems // Submitted by Duarte Santos 2014-03-11 outsystemscloud.com // .pl domains (grandfathered) art.pl gliwice.pl krakow.pl poznan.pl wroc.pl zakopane.pl // priv.at : http://www.nic.priv.at/ // Submitted by registry 2008-06-09 priv.at // Red Hat, Inc. OpenShift : https://openshift.redhat.com/ // Submitted by Tim Kramer 2012-10-24 rhcloud.com // SinaAppEngine : http://sae.sina.com.cn/ // Submitted by SinaAppEngine 2015-02-02 sinaapp.com vipsinaapp.com 1kapp.com // TASK geographical domains (www.task.gda.pl/uslugi/dns) gda.pl gdansk.pl gdynia.pl med.pl sopot.pl // UDR Limited : http://www.udr.hk.com // Submitted by registry 2014-11-07 hk.com hk.org ltd.hk inc.hk // Yola : https://www.yola.com/ // Submitted by Stefano Rivera 2014-07-09 yolasite.com // ZaNiC : http://www.za.net/ // Submitted by registry 2009-10-03 za.net za.org // ===END PRIVATE DOMAINS=== quri-20150804-git/quri-test.asd000066400000000000000000000015161255531700100161500ustar00rootroot00000000000000#| This file is a part of quri project. Copyright (c) 2014 Eitaro Fukamachi (e.arrows@gmail.com) |# (in-package :cl-user) (defpackage quri-test-asd (:use :cl :asdf)) (in-package :quri-test-asd) (defsystem quri-test :author "Eitaro Fukamachi" :license "BSD 3-Clause" :depends-on (:quri :prove) :components ((:module "t" :components ((:test-file "quri") (:test-file "parser") (:test-file "decode") (:test-file "encode") (:test-file "domain") (:test-file "etld") (:file "benchmark")))) :defsystem-depends-on (:prove-asdf) :perform (test-op :after (op c) (funcall (intern #.(string :run-test-system) :prove-asdf) c) (asdf:clear-system c))) quri-20150804-git/quri.asd000066400000000000000000000041751255531700100151770ustar00rootroot00000000000000#| This file is a part of quri project. Copyright (c) 2014 Eitaro Fukamachi (e.arrows@gmail.com) |# #| Author: Eitaro Fukamachi (e.arrows@gmail.com) |# (in-package :cl-user) (defpackage quri-asd (:use :cl :asdf)) (in-package :quri-asd) (defsystem quri :version "0.1.0" :author "Eitaro Fukamachi" :license "BSD 3-Clause" :depends-on (:babel :alexandria :split-sequence :cl-utilities #+sbcl :sb-cltl2) :components ((:module "src" :components ((:file "quri" :depends-on ("uri" "uri-classes" "domain" "parser" "decode" "encode" "error")) (:file "uri" :depends-on ("port")) (:module "uri-classes" :pathname "uri" :depends-on ("uri" "port" "encode" "decode") :components ((:file "ftp") (:file "http") (:file "ldap") (:file "file"))) (:file "domain" :depends-on ("uri" "etld")) (:file "etld") (:file "parser" :depends-on ("error" "util")) (:file "decode" :depends-on ("error" "util")) (:file "encode") (:file "port") (:file "util") (:file "error")))) :description "Yet another URI library for Common Lisp" :long-description #.(with-open-file (stream (merge-pathnames #p"README.markdown" (or *load-pathname* *compile-file-pathname*)) :if-does-not-exist nil :direction :input :element-type #+lispworks :default #-lispworks 'character :external-format #+clisp charset:utf-8 #-clisp :utf-8) (when stream (let ((seq (make-array (file-length stream) :element-type 'character :fill-pointer t))) (setf (fill-pointer seq) (read-sequence seq stream)) seq))) :in-order-to ((test-op (test-op quri-test)))) quri-20150804-git/src/000077500000000000000000000000001255531700100143065ustar00rootroot00000000000000quri-20150804-git/src/decode.lisp000066400000000000000000000130561255531700100164270ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.decode (:use :cl :quri.util :quri.error) (:import-from :babel :octets-to-string) (:import-from :babel-encodings :*default-character-encoding*) (:import-from :cl-utilities :collecting :collect) (:export :url-decode :url-decode-params)) (in-package :quri.decode) (declaim (ftype (function (character) (unsigned-byte 4)) hexdigit-to-integer)) (defun hexdigit-to-integer (char) (declare (type character char) (optimize (speed 3) (safety 0))) (let ((code (char-code char))) (declare (type fixnum code)) (cond ((<= #.(char-code #\0) code #.(char-code #\9)) (- code #.(char-code #\0))) ((<= #.(char-code #\A) code #.(char-code #\F)) (- code #.(- (char-code #\A) 10))) ((<= #.(char-code #\a) code #.(char-code #\f)) (- code #.(- (char-code #\a) 10))) (T (error 'url-decoding-error))))) (defun url-decode (data &key (encoding babel-encodings:*default-character-encoding*) (start 0) end) (declare (type (or string (simple-array (unsigned-byte 8) (*))) data) (type integer start) (optimize (speed 3) (safety 2))) (let* ((end (or end (length data))) (buffer (make-array (- end start) :element-type '(unsigned-byte 8))) (i 0) parsing-encoded-part) (declare (type integer end i) (type (simple-array (unsigned-byte 8)) buffer)) (flet ((write-to-buffer (byte) (declare (optimize (speed 3) (safety 0))) (setf (aref buffer i) byte) (incf i))) (with-array-parsing (char p data start end (and (not (stringp data)) #'code-char)) (parsing (cond ((char= char #\%) (gonext)) ((char= char #\+) (write-to-buffer #.(char-code #\Space)) (redo)) (T (write-to-buffer (char-code char)) (redo)))) (parsing-encoded-part (setq parsing-encoded-part (* 16 (hexdigit-to-integer char))) (gonext)) (parsing-encoded-part-second (write-to-buffer (+ parsing-encoded-part (hexdigit-to-integer char))) (setq parsing-encoded-part nil) (goto parsing)) (:eof (when parsing-encoded-part (error 'url-decoding-error))))) (babel:octets-to-string buffer :end i :encoding encoding))) (defun url-decode-params (data &key (delimiter #\&) (encoding babel-encodings:*default-character-encoding*) (start 0) end (lenient nil)) (declare (type (or string (simple-array (unsigned-byte 8) (*))) data) (type integer start) (type character delimiter) (optimize (speed 3) (safety 2))) (let ((end (or end (length data))) (start-mark nil) (=-mark nil)) (declare (type integer end)) (collecting (flet ((collect-pair (p) (tagbody (handler-bind ((url-decoding-error (lambda (error) (declare (ignore error)) (when lenient (go continue))))) (collect (cons (url-decode data :encoding encoding :start start-mark :end =-mark) (url-decode data :encoding encoding :start (1+ =-mark) :end p)))) continue) (setq start-mark nil =-mark nil)) (collect-field (p) (tagbody (handler-bind ((url-decoding-error (lambda (error) (declare (ignore error)) (when lenient (go continue))))) (collect (cons (url-decode data :encoding encoding :start start-mark :end p) nil))) continue) (setq start-mark nil))) (with-array-parsing (char p data start end (and (not (stringp data)) #'code-char)) (start (setq start-mark p) (if lenient (cond ((char= char #\=) (setq =-mark p) (goto parsing-value)) ((char= char delimiter) (redo))) (when (or (char= char #\=) (char= char delimiter)) (error 'uri-malformed-urlencoded-string))) (gonext)) (parsing-field (cond ((char= char #\=) (setq =-mark p) (gonext)) ((char= char delimiter) ;; field only (collect-field p) (goto start))) (redo)) (parsing-value (cond ((char= char #\=) (unless lenient (error 'uri-malformed-urlencoded-string))) ((char= char delimiter) (collect-pair p) (goto start))) (redo)) (:eof (cond (=-mark (collect-pair p)) (start-mark (collect-field p))))))))) quri-20150804-git/src/domain.lisp000066400000000000000000000153571255531700100164610ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.domain (:use :cl) (:import-from :quri.uri :uri-host) (:import-from :quri.etld :parse-domain) (:import-from :alexandria :xor :ends-with-subseq :length= :when-let) (:import-from :split-sequence :split-sequence) (:export :ipv4-addr-p :ipv6-addr-p :ip-addr-p :ip-addr= :uri-tld :uri-domain :cookie-domain-p)) (in-package :quri.domain) (defun uri-tld (uri) (let ((host (uri-host uri))) (when (and host (not (ip-addr-p host))) (let ((pos (position #\. host :from-end t))) (if pos (subseq host (1+ pos)) host))))) (defun uri-domain (uri) (let ((host (uri-host uri))) (when (and host (not (ip-addr-p host))) (parse-domain host)))) (defun ipv4-addr-p (host) (declare (optimize (speed 3) (safety 2)) #+sbcl (sb-ext:muffle-conditions sb-ext:compiler-note)) (check-type host string) (flet ((read-byte-string (string start) (declare (type fixnum start)) (when (<= (length string) start) (return-from read-byte-string nil)) (let* ((end (+ start 2)) (endp (<= (1- (length string)) end)) (end (if endp (1- (length string)) end)) (res 0)) (declare (type fixnum end res)) (do ((i start (1+ i))) ((< end i)) (declare (type fixnum i)) (unless (char<= #\0 (aref string i) #\9) (return-from read-byte-string (if (= i start) nil (values res i nil)))) (setq res (+ (* res 10) (- (char-code (aref string i)) 48)))) (cond (endp (values res end t)) ((char= (aref string (1+ end)) #\.) (values res (1+ end) nil)))))) (let ((start 0)) (dotimes (i 4 t) (multiple-value-bind (byte pos endp) (read-byte-string host start) (unless (typep byte '(unsigned-byte 8)) (return nil)) (unless (xor endp (not (= i 3))) (return nil)) (setq start (1+ pos))))))) (defun trim-brackets (host) (if (char= (aref host 0) #\[) (if (char= (aref host (1- (length host))) #\]) (subseq host 1 (1- (length host))) nil) host)) (defun ipv6-addr-p (host) (declare (optimize (speed 3) (safety 2)) #+sbcl (sb-ext:muffle-conditions sb-ext:compiler-note)) (check-type host string) (when (= (length host) 0) (return-from ipv6-addr-p nil)) (labels ((read-section (string start &optional read-colons) (declare (type string string) (type fixnum start)) (when (<= (length string) start) (return-from read-section nil)) (when (char= (aref string start) #\:) (cond ((<= (length string) (1+ start)) (return-from read-section nil)) ((char= (aref string (1+ start)) #\:) (if read-colons (return-from read-section nil) (return-from read-section (read-section string (+ 2 start) t)))) (t (incf start)))) (let* ((end (+ start 4)) (endp (<= (length string) end)) (end (if endp (length string) end))) (declare (type fixnum end)) (do ((i start (1+ i))) ((= end i)) (let ((ch (aref string i))) (cond ((char= ch #\:) (return-from read-section (values i read-colons nil))) ((or (char<= #\0 ch #\9) (char<= #\a ch #\f) (char<= #\A ch #\F))) (t (return-from read-section nil))))) (if endp (values end read-colons endp) (if (char= (aref string end) #\:) (values end read-colons endp) nil))))) (setq host (trim-brackets host)) (unless host (return-from ipv6-addr-p nil)) (let ((start 0) (read-colons-p nil)) (dotimes (i 8 t) (multiple-value-bind (e read-colons endp) (read-section host start read-colons-p) (unless e (return-from ipv6-addr-p nil)) (when endp (when (and (not (= i 7)) (not read-colons)) (return-from ipv6-addr-p nil)) (return-from ipv6-addr-p t)) (setq start e read-colons-p read-colons)))))) (defun ip-addr-p (host) (or (ipv4-addr-p host) (ipv6-addr-p host))) (defun ip-addr= (ip1 ip2) (flet ((parse-ipv6 (ip) (setq ip (trim-brackets ip)) (cond ((char= (aref ip 0) #\:) (setq ip (concatenate 'string "0" ip))) ((char= (aref ip (1- (length ip))) #\:) (setq ip (concatenate 'string ip "0")))) (let* ((ip-parsed (split-sequence #\: ip)) (len (length ip-parsed))) (loop for section in ip-parsed if (string= section "") append (make-list (- 9 len) :initial-element 0) else collect (parse-integer section :radix 16))))) (cond ((ipv4-addr-p ip1) (string= ip1 ip2)) ((ipv6-addr-p ip1) (and (ipv6-addr-p ip2) (equal (parse-ipv6 ip1) (parse-ipv6 ip2))))))) (defun cookie-domain-p (domain cookie-domain) (unless cookie-domain (return-from cookie-domain-p t)) (if (ip-addr-p domain) (ip-addr= domain cookie-domain) (progn ;; ignore the preceding "." (when (char= (aref cookie-domain 0) #\.) (setq cookie-domain (subseq cookie-domain 1))) (when-let (registered-domain (parse-domain domain)) (cond ((length= registered-domain cookie-domain) (string= registered-domain cookie-domain)) ((length= domain cookie-domain) (string= domain cookie-domain)) (t (and (ends-with-subseq domain cookie-domain) (char= #\. (aref cookie-domain (- (length cookie-domain) (length registered-domain))))))))))) quri-20150804-git/src/encode.lisp000066400000000000000000000073151255531700100164420ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.encode (:use :cl) (:import-from :babel-encodings :*default-character-encoding*) (:export :url-encode :url-encode-params)) (in-package :quri.encode) (declaim (type (simple-array character (16)) +hexdigit-char+)) (defvar +hexdigit-char+ (let ((ary (make-array 16 :element-type 'character))) (loop for char across "0123456789ABCDEF" for i from 0 do (setf (aref ary i) char)) ary)) (defun integer-to-hexdigit (byte) (declare (type (unsigned-byte 8) byte) (optimize (speed 3) (safety 0))) (let ((res (make-string 2))) (multiple-value-bind (quotient remainder) (floor byte 16) (setf (aref res 0) (aref +hexdigit-char+ quotient) (aref res 1) (aref +hexdigit-char+ remainder))) res)) (defun unreservedp (byte) (declare (type (unsigned-byte 8) byte) (optimize (speed 3) (safety 0))) (or (<= (char-code #\A) byte (char-code #\Z)) (<= (char-code #\a) byte (char-code #\z)) (<= (char-code #\0) byte (char-code #\9)) #.`(or ,@(loop for char across "-._~" collect `(= byte ,(char-code char)))))) (declaim (type (simple-array string (97)) +byte-to-string+)) (defvar +byte-to-string+ (let ((ary (make-array 97 :element-type 'string :initial-element ""))) (loop for i from 0 to 96 unless (unreservedp i) do (setf (aref ary i) (integer-to-hexdigit i))) ary)) (defun url-encode (data &key (encoding babel-encodings:*default-character-encoding*) (start 0) end space-to-plus) (declare (type (or string (simple-array (unsigned-byte 8) (*))) data) (type integer start) (optimize (speed 3) (safety 2))) (let* ((octets (if (stringp data) (babel:string-to-octets data :encoding encoding :start start :end end) data)) (res (make-array (* (length octets) 3) :element-type 'character :fill-pointer t)) (i 0)) (declare (type (simple-array (unsigned-byte 8) (*)) octets) (type string res) (type integer i)) (loop for byte of-type (unsigned-byte 8) across octets do (cond ((and space-to-plus (= byte #.(char-code #\Space))) (setf (aref res i) #\+) (incf i)) ((< byte #.(char-code #\a)) (locally (declare (optimize (speed 3) (safety 0))) (let ((converted (aref +byte-to-string+ byte))) (if (zerop (length converted)) (progn (setf (aref res i) (code-char byte)) (incf i)) (progn (setf (aref res i) #\%) (incf i) (replace res converted :start1 i) (incf i 2)))))) ((< byte 128) (setf (aref res i) (code-char byte)) (incf i)) (T (setf (aref res i) #\%) (incf i) (replace res (integer-to-hexdigit byte) :start1 i) (incf i 2)))) (setf (fill-pointer res) i) res)) (defun url-encode-params (params-alist &key (encoding babel-encodings:*default-character-encoding*) space-to-plus) (declare (optimize (speed 3))) (check-type params-alist list) (with-output-to-string (s) (loop for ((field . value) . rest) on params-alist do (write-string (url-encode field :encoding encoding :space-to-plus space-to-plus) s) (when value (write-char #\= s) (write-string (url-encode value :encoding encoding :space-to-plus space-to-plus) s)) (when rest (write-char #\& s))))) quri-20150804-git/src/error.lisp000066400000000000000000000020471255531700100163330ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.error (:use :cl) (:export :uri-error :uri-malformed-string :uri-invalid-port :url-decoding-error :uri-malformed-urlencoded-string)) (in-package :quri.error) (define-condition uri-error (error) ()) (define-condition uri-malformed-string (uri-error) ((data :initarg :data) (position :initarg :position)) (:report (lambda (condition stream) (with-slots (data position) condition (format stream "URI ~S contains an illegal character ~S at position ~S." data (aref data position) position))))) (define-condition uri-invalid-port (uri-malformed-string) () (:report (lambda (condition stream) (with-slots (data position) condition (format stream "URI ~S contains an illegal character ~S at position ~S." data (aref data position) position))))) (define-condition url-decoding-error (uri-error) ()) (define-condition uri-malformed-urlencoded-string (uri-error) ()) quri-20150804-git/src/etld.lisp000066400000000000000000000063731255531700100161400ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.etld (:use :cl) (:import-from :alexandria :starts-with-subseq :ends-with-subseq) (:export :parse-domain)) (in-package :quri.etld) (defvar *default-etld-names* (asdf:system-relative-pathname :quri #P"data/effective_tld_names.dat")) (defvar *normal-tlds* nil) (defvar *wildcard-tlds* nil) (defvar *special-tlds* nil) (defun load-etld-data (&optional (etld-names-file *default-etld-names*)) (with-open-file (in etld-names-file :element-type #+lispworks :default #-lispworks 'character :external-format #+clisp charset:utf-8 #-clisp :utf-8) (loop with special-tlds = nil with normal-tlds = (make-hash-table :test 'equal) with wildcard-tlds = (make-hash-table :test 'equal) for line = (read-line in nil nil) while line unless (or (= 0 (length line)) (starts-with-subseq "//" line)) do (cond ((starts-with-subseq "*" line) (setf (gethash (subseq line 2) wildcard-tlds) t)) ((starts-with-subseq "!" line) (push (subseq line 1) special-tlds)) (t (setf (gethash line normal-tlds) t))) finally (setf *special-tlds* special-tlds *normal-tlds* normal-tlds *wildcard-tlds* wildcard-tlds)))) (load-etld-data) (defun next-subdomain (hostname &optional (start 0)) (let ((pos (position #\. hostname :start start))) (when pos (incf pos) (values (subseq hostname pos) pos)))) (defun make-subdomain-iter (hostname) (let ((current-pos 0) (first t)) (lambda () (block nil (when first (setq first nil) (return hostname)) (multiple-value-bind (subdomain pos) (next-subdomain hostname current-pos) (when subdomain (setf current-pos pos) subdomain)))))) (defun parse-domain (hostname) (dolist (tld *special-tlds*) (when (ends-with-subseq tld hostname) (if (= (length tld) (length hostname)) (return-from parse-domain hostname) (when (char= (aref hostname (- (length hostname) (length tld) 1)) #\.) (return-from parse-domain (subseq hostname (- (length hostname) (length tld)))))))) (loop with iter = (make-subdomain-iter hostname) with pre-prev-subdomain = nil with prev-subdomain = nil for subdomain = (funcall iter) while subdomain if (gethash subdomain *wildcard-tlds*) do (return pre-prev-subdomain) else if (gethash subdomain *normal-tlds*) do (return (if (string= subdomain hostname) nil prev-subdomain)) do (setf pre-prev-subdomain prev-subdomain prev-subdomain subdomain) finally (let* ((pos (position #\. hostname :from-end t)) (pos (and pos (position #\. hostname :from-end t :end pos)))) (return (if pos (subseq hostname (1+ pos)) hostname))))) quri-20150804-git/src/parser.lisp000066400000000000000000000546041255531700100165040ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.parser (:use :cl :quri.error :quri.util) #+(or sbcl openmcl cmu allegro) (:import-from #+sbcl :sb-cltl2 #+openmcl :ccl #+cmu :ext #+allegro :sys :variable-information) (:import-from :alexandria :with-gensyms :define-constant) (:export :parse-uri :parse-scheme :parse-authority :parse-path :parse-query :parse-fragment)) (in-package :quri.parser) (deftype simple-byte-vector (&optional (len '*)) `(simple-array (unsigned-byte 8) (,len))) (declaim (type (simple-array fixnum (128)) +uri-char+)) (define-constant +uri-char+ (let ((uri-char (make-array 128 :element-type 'fixnum :initial-element 0))) (dotimes (i 128 uri-char) (let ((char (code-char i))) (when (or (alphanumericp char) (char= char #\%) (char= char #\:) (char= char #\@) (char= char #\-) (char= char #\.) (char= char #\_) (char= char #\~) (char= char #\!) (char= char #\$) (char= char #\&) (char= char #\') (char= char #\() (char= char #\)) (char= char #\*) (char= char #\+) (char= char #\,) (char= char #\;) (char= char #\=)) (setf (aref uri-char i) 1))))) :test 'equalp) (defun parse-uri (data &key (start 0) end) (etypecase data (simple-string (parse-uri-string data :start start :end end)) (simple-byte-vector (parse-uri-byte-vector data :start start :end end)))) #+(or sbcl openmcl cmu allegro) (define-compiler-macro parse-uri (&whole form &environment env data &key start end) (declare (ignore start end)) (let ((type (cond ((constantp data) (type-of data)) ((symbolp data) (cdr (assoc 'type (nth-value 2 (variable-information data env)))))))) (cond ((null type) form) ((subtypep type 'simple-string) `(parse-uri-string ,@(cdr form))) ((subtypep type 'simple-byte-vector) `(parse-uri-byte-vector ,@(cdr form))) (T form)))) (defun parse-uri-string (data &key (start 0) end) (declare (type simple-string data) (optimize (speed 3) (safety 2))) (let (scheme userinfo host port path query fragment (parse-start start) (parse-end (or end (length data)))) (declare (type fixnum parse-start parse-end)) (block nil (flet ((parse-from-path (data start) (declare (type simple-string data) (type fixnum start)) (multiple-value-bind (data start end) (parse-path-string data :start start) (declare (type simple-string data) (type fixnum start end)) (unless (= start end) (setq path (subseq data start end))) (multiple-value-bind (parsed-data path-start path-end) (parse-query-string data :start end :end parse-end) (when parsed-data (setq query (subseq (the string parsed-data) (the fixnum path-start) (the fixnum path-end)))) (multiple-value-bind (data start end) (parse-fragment-string data :start (or path-end end) :end parse-end) (when data (setq fragment (subseq (the string data) (the fixnum start) (the fixnum end))))))))) (multiple-value-bind (parsed-data start end got-scheme) (parse-scheme-string data :start parse-start :end parse-end) (unless parsed-data ;; assume this is a relative uri. (return (parse-from-path data parse-start))) (locally (declare (type fixnum start end)) (setq scheme (or got-scheme (string-downcase (subseq data start end)))) (unless (= end parse-end) (multiple-value-bind (parsed-data userinfo-start userinfo-end host-start host-end port-start port-end) (parse-authority-string data :start end :end parse-end) (when parsed-data (locally (declare (type fixnum host-start host-end)) (when userinfo-start (setq userinfo (subseq (the string data) (the fixnum userinfo-start) (the fixnum userinfo-end)))) (unless (= host-start host-end) (setq host (subseq data host-start host-end))) (when port-start (locally (declare (type fixnum port-start port-end)) (unless (= port-start port-end) (handler-case (setq port (parse-integer data :start (the fixnum port-start) :end (the fixnum port-end))) (error () (error 'uri-invalid-port :data data :position port-start)))))))) (locally (declare (optimize (safety 0))) (parse-from-path data (or port-end host-end (1+ end)))))))))) (values scheme userinfo host port path query fragment))) (defun parse-uri-byte-vector (data &key (start 0) end) (declare (type simple-byte-vector data) (optimize (speed 3) (safety 2))) (let (scheme userinfo host port path query fragment (parse-start start) (parse-end (or end (length data)))) (declare (type fixnum parse-start parse-end)) (flet ((subseq* (data &optional (start 0) end) (declare (type simple-byte-vector data)) (values (babel:octets-to-string data :start start :end end))) (parse-integer-from-bv (data &key (start 0) end) (declare (type fixnum start end) (optimize (speed 3) (safety 2))) (when (= start end) (return-from parse-integer-from-bv nil)) (do ((i start (1+ i)) (res 0)) ((= i end) res) (declare (type fixnum i res)) (let ((code (aref data i))) (declare (type fixnum code) #+sbcl (sb-ext:muffle-conditions sb-ext:compiler-note)) (unless (<= #.(char-code #\0) code #.(char-code #\9)) (error 'uri-invalid-port :data data :position i)) (setq res (+ (* res 10) (- code #.(char-code #\0)))))))) (block nil (flet ((parse-from-path (data start) (declare (type simple-byte-vector data) (type fixnum start)) (multiple-value-bind (data start end) (parse-path-byte-vector data :start start) (declare (type fixnum start end)) (unless (= start end) (setq path (subseq* data start end))) (multiple-value-bind (parsed-data path-start path-end) (parse-query-byte-vector data :start end :end parse-end) (when parsed-data (setq query (subseq* parsed-data (the fixnum path-start) (the fixnum path-end)))) (multiple-value-bind (data start end) (parse-fragment-byte-vector data :start (or path-end end) :end parse-end) (when data (setq fragment (subseq* data (the fixnum start) (the fixnum end))))))))) (multiple-value-bind (parsed-data start end got-scheme) (parse-scheme-byte-vector data :start parse-start :end parse-end) (unless parsed-data ;; assume this is a relative uri. (return (parse-from-path data parse-start))) (locally (declare (type fixnum start end)) (setq scheme (or got-scheme (let ((data-str (make-string (- end start)))) (do ((i start (1+ i)) (j 0 (1+ j))) ((= i end) data-str) (let ((code (aref data i))) (setf (aref data-str j) (code-char (if (<= #.(char-code #\A) code #.(char-code #\Z)) (+ code 32) code)))))))) (unless (= end parse-end) (multiple-value-bind (parsed-data userinfo-start userinfo-end host-start host-end port-start port-end) (parse-authority-byte-vector data :start end :end parse-end) (when parsed-data (locally (declare (type simple-byte-vector data) (type fixnum host-start host-end)) (when userinfo-start (setq userinfo (subseq* data (the fixnum userinfo-start) (the fixnum userinfo-end)))) (unless (= host-start host-end) (setq host (subseq* data host-start host-end))) (when port-start (setq port (parse-integer-from-bv data :start port-start :end port-end))))) (locally (declare (optimize (safety 0))) (parse-from-path data (or port-end host-end (1+ end))))))))))) (values scheme userinfo host port path query fragment))) (defmacro defun-with-array-parsing (name (char p data start end &rest other-args) &body body) (with-gensyms (args type form env) (let ((fn-for-string (intern (format nil "~A-~A" name :string))) (fn-for-byte-vector (intern (format nil "~A-~A" name :byte-vector)))) `(progn (defun ,name (,data &rest ,args &key ,start ,end) (declare (ignore ,start ,end)) (etypecase ,data (simple-string (apply ',(intern (format nil "~A-~A" name :string)) data ,args)) (simple-byte-vector (apply ',(intern (format nil "~A-~A" name :byte-vector)) data ,args)))) #+(or sbcl openmcl cmu allegro) (define-compiler-macro ,name (&whole ,form &environment ,env ,data &rest ,args) (declare (ignore ,args)) (let ((,type (cond ((constantp ,data) (type-of ,data)) ((symbolp ,data) (cdr (assoc 'type (nth-value 2 (variable-information ,data ,env)))))))) (cond ((null ,type) ,form) ((subtypep ,type 'simple-string) `(,',fn-for-string ,@(cdr ,form))) ((subtypep ,type 'simple-byte-vector) `(,',fn-for-byte-vector ,@(cdr ,form))) (T ,form)))) (defun ,fn-for-string (,data &key (,start 0) (,end (length ,data)) ,@other-args) (declare (type simple-string ,data) (type fixnum ,start ,end) (optimize (speed 3) (safety 2))) (macrolet ((char=* (char1 char2) `(char= ,char1 ,char2)) (char-code* (char) `(char-code ,char)) (scheme-char-p* (char) `(scheme-char-p ,char)) (standard-alpha-char-p* (char) `(standard-alpha-char-p ,char))) (block ,name (with-string-parsing (,char ,p ,data ,start ,end) (declare (type fixnum ,p)) ,@body)))) (defun ,fn-for-byte-vector (,data &key (,start 0) (,end (length ,data)) ,@other-args) (declare (type simple-byte-vector ,data) (type fixnum ,start ,end) (optimize (speed 3) (safety 2))) (macrolet ((char=* (byte char) `(= ,byte ,(char-code char))) (char-code* (byte) byte) (scheme-char-p* (byte) `(scheme-byte-p ,byte)) (standard-alpha-char-p* (byte) `(standard-alpha-byte-p ,byte))) (block ,name (with-byte-array-parsing (,char ,p ,data ,start ,end) (declare (type fixnum ,p)) ,@body)))))))) (defun scheme-char-p (char) (declare (type character char) (optimize (speed 3) (safety 0))) (or (standard-alphanumeric-p char) (char= char #\+) (char= char #\-) (char= char #\.))) (defun scheme-byte-p (byte) (declare (type (unsigned-byte 8) byte) (optimize (speed 3) (safety 0))) (or (standard-alphanumeric-byte-p byte) (= byte (char-code #\+)) (= byte (char-code #\-)) (= byte (char-code #\.)))) (defun-with-array-parsing parse-scheme (char p data start end) (parsing-scheme-start (when (or (char=* char #\h) (char=* char #\H)) (goto parsing-H)) (unless (standard-alpha-char-p* char) (return-from parse-scheme nil)) (gonext)) (parsing-scheme (cond ((char=* char #\:) (return-from parse-scheme (values data start p))) ((scheme-char-p* char) (redo)) (T (return-from parse-scheme nil)))) (parsing-H (if (or (char=* char #\t) (char=* char #\T)) (goto parsing-HT) (goto parsing-scheme 0))) (parsing-HT (if (or (char=* char #\t) (char=* char #\T)) (goto parsing-HTT) (goto parsing-scheme 0))) (parsing-HTT (if (or (char=* char #\p) (char=* char #\P)) (goto parsing-HTTP) (goto parsing-scheme 0))) (parsing-HTTP (cond ((char=* char #\:) (return-from parse-scheme (values data start p "http"))) ((or (char=* char #\s) (char=* char #\S)) (goto parsing-HTTPS)) (T (goto parsing-scheme 0)))) (parsing-HTTPS (if (char=* char #\:) (return-from parse-scheme (values data start p "https")) (goto parsing-scheme 0))) (:eof (return-from parse-scheme nil))) (defun-with-array-parsing parse-authority (char p data start end &aux (authority-mark nil) (colon-mark nil) userinfo-start userinfo-end host-start host-end port-start port-end) (parsing-first (cond ((char=* char #\:) (incf start) (redo)) ((char=* char #\/) (gonext)) (T (return-from parse-authority (values data nil nil start start nil nil))))) (parsing-authority-starting (unless (char=* char #\/) (error 'uri-malformed-string :data data :position p)) (gonext)) (parsing-authority-start (setq authority-mark p) (if (char=* char #\[) (goto parsing-ipliteral) (gonext 0))) ;; parsing host or userinfo (parsing-authority (cond ((char=* char #\:) (setq colon-mark p) (redo)) ((char=* char #\@) (when userinfo-start (error 'uri-malformed-string :data data :position p)) (setq userinfo-start authority-mark userinfo-end p) (setq authority-mark (1+ p) colon-mark nil) (redo)) ((or (char=* char #\/) (char=* char #\?) (char=* char #\#)) (go :eof)) ((= (aref +uri-char+ (char-code* char)) 1) (redo)) (T (error 'uri-malformed-string :data data :position p)))) (parsing-ipliteral (if (char=* char #\]) (goto parsing-authority) (redo))) (:eof (unless authority-mark (return-from parse-authority)) (if colon-mark (setq host-start authority-mark host-end colon-mark port-start (1+ colon-mark) port-end p) (setq host-start authority-mark host-end p)) (return-from parse-authority (values data userinfo-start userinfo-end host-start host-end port-start port-end)))) (defun path-char-p (char) (declare (type character char) (optimize (speed 3) (safety 0))) (or (= (aref +uri-char+ (char-code char)) 1) (char= char #\/))) (defun path-byte-p (byte) (declare (type (unsigned-byte 8) byte) (optimize (speed 3) (safety 0))) (or (= (aref +uri-char+ byte) 1) (= byte (char-code #\/)))) (defun query-char-p (char) (declare (type character char) (optimize (speed 3) (safety 0))) (or (path-char-p char) (char= char #\?))) (defun query-byte-p (byte) (declare (type (unsigned-byte 8) byte) (optimize (speed 3) (safety 0))) (or (path-byte-p byte) (= byte (char-code #\?)))) (defmacro parse-until-string (delimiters data &key start end test) (with-gensyms (p char) `(block nil (progn (do ((,p ,start (1+ ,p))) ((= ,p ,end) (values ,data ,start ,end)) (declare (type fixnum ,p)) (let ((,char (aref ,data ,p))) (declare (type character ,char)) (when (or ,@(loop for delim in delimiters collect `(char= ,delim ,char))) (return (values ,data ,start ,p))) ,@(when test `((unless (funcall ,test ,char) (error 'uri-malformed-string :data ,data :position ,p)))))))))) (defmacro parse-until-byte-vector (delimiters data &key start end test) (with-gensyms (p byte) `(block nil (progn (do ((,p ,start (1+ ,p))) ((= ,p ,end) (values ,data ,start ,end)) (declare (type fixnum ,p)) (let ((,byte (aref ,data ,p))) (declare (type (unsigned-byte 8) ,byte)) (when (or ,@(loop for delim in delimiters collect `(= ,(char-code delim) ,byte))) (return (values ,data ,start ,p))) ,@(when test `((unless (funcall ,test ,byte) (error 'uri-malformed-string :data ,data :position ,p)))))))))) (defun parse-path (data &key (start 0) (end (length data))) (etypecase data (simple-string (parse-path-string data :start start :end end)) (simple-byte-vector (parse-path-byte-vector data :start start :end end)))) (defun parse-path-string (data &key (start 0) (end (length data))) (declare (type simple-string data) (optimize (speed 3) (safety 2)) #+sbcl (sb-ext:muffle-conditions sb-ext:compiler-note)) (parse-until-string (#\? #\#) data :start start :end end :test #'path-char-p)) (defun parse-path-byte-vector (data &key (start 0) (end (length data))) (declare (type simple-byte-vector data) (optimize (speed 3) (safety 2)) #+sbcl (sb-ext:muffle-conditions sb-ext:compiler-note)) (parse-until-byte-vector (#\? #\#) data :start start :end end :test #'path-byte-p)) (defun parse-query (data &key (start 0) (end (length data))) (etypecase data (string (parse-query-string data :start start :end end)) (simple-byte-vector (parse-query-byte-vector data :start start :end end)))) #+(or sbcl openmcl cmu allegro) (define-compiler-macro parse-query (&whole form &environment env data &key start end) (declare (ignore start end)) (let ((type (cond ((constantp data) (type-of data)) ((symbolp data) (cdr (assoc 'type (nth-value 2 (variable-information data env)))))))) (cond ((null type) form) ((subtypep type 'simple-string) `(parse-query-string ,@(cdr form))) ((subtypep type 'simple-byte-vector) `(parse-query-byte-vector ,@(cdr form))) (T form)))) (defun parse-query-string (data &key (start 0) (end (length data))) (declare (type simple-string data) (type fixnum start end) (optimize (speed 3) (safety 2))) (let ((?-pos (position #\? data :start start :end end))) (when ?-pos (parse-until-string (#\#) data :start (1+ (the fixnum ?-pos)) :end end :test #'query-char-p)))) (defun parse-query-byte-vector (data &key (start 0) (end (length data))) (declare (type simple-byte-vector data) (type fixnum start end) (optimize (speed 3) (safety 2))) (let ((?-pos (position #.(char-code #\?) data :start start :end end))) (when ?-pos (parse-until-byte-vector (#\#) data :start (1+ (the fixnum ?-pos)) :end end :test #'query-byte-p)))) (defun parse-fragment (data &key (start 0) (end (length data))) (etypecase data (string (parse-fragment-string data :start start :end end)) (simple-byte-vector (parse-fragment-byte-vector data :start start :end end)))) #+(or sbcl openmcl cmu allegro) (define-compiler-macro parse-fragment (&whole form &environment env data &key start end) (declare (ignore start end)) (let ((type (cond ((constantp data) (type-of data)) ((symbolp data) (cdr (assoc 'type (nth-value 2 (variable-information data env)))))))) (cond ((null type) form) ((subtypep type 'simple-string) `(parse-fragment-string ,@(cdr form))) ((subtypep type 'simple-byte-vector) `(parse-fragment-byte-vector ,@(cdr form))) (T form)))) (defun parse-fragment-string (data &key (start 0) (end (length data))) (declare (type simple-string data) (type fixnum start end) (optimize (speed 3) (safety 2))) (let ((|#-pos| (position #\# data :start start :end end))) (when |#-pos| (values data (1+ (the fixnum |#-pos|)) end)))) (defun parse-fragment-byte-vector (data &key (start 0) (end (length data))) (declare (type simple-byte-vector data) (type fixnum start end) (optimize (speed 3) (safety 2))) (let ((|#-pos| (position #\# data :start start :end end :key #'code-char))) (when |#-pos| (values data (1+ (the fixnum |#-pos|)) end)))) quri-20150804-git/src/port.lisp000066400000000000000000000006511255531700100161650ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.port (:use :cl) (:import-from :alexandria :plist-hash-table) (:export :scheme-default-port)) (in-package :quri.port) (defvar +default-ports+ (plist-hash-table '("ftp" 21 "ssh" 22 "telnet" 23 "http" 80 "ldap" 389 "https" 443 "ldaps" 636) :test 'equal)) (defun scheme-default-port (scheme) (gethash scheme +default-ports+)) quri-20150804-git/src/quri.lisp000066400000000000000000000170201255531700100161570ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri (:use :cl :quri.uri :quri.uri.ftp :quri.uri.http :quri.uri.ldap :quri.uri.file :quri.error) (:import-from :quri.domain :uri-tld :uri-domain :ipv4-addr-p :ipv6-addr-p :ip-addr-p :ip-addr= :cookie-domain-p) (:import-from :quri.parser :parse-uri :parse-scheme :parse-authority :parse-path :parse-query :parse-fragment) (:import-from :quri.port :scheme-default-port) (:import-from :quri.decode :url-decode :url-decode-params) (:import-from :quri.encode :url-encode :url-encode-params) (:import-from :split-sequence :split-sequence) (:export :parse-uri :parse-scheme :parse-authority :parse-path :parse-query :parse-fragment :make-uri :uri :uri= :uri-p :uri-scheme :uri-userinfo :uri-host :uri-port :uri-path :uri-query :uri-fragment :uri-authority :uri-tld :uri-domain :ipv4-addr-p :ipv6-addr-p :ip-addr-p :ip-addr= :cookie-domain-p :urn :urn-p :urn-nid :urn-nss :uri-ftp :uri-ftp-p :uri-ftp-typecode :uri-http :uri-http-p :uri-query-params :uri-ldap :uri-ldap-p :uri-ldap-dn :uri-ldap-attributes :uri-ldap-scope :uri-ldap-filter :uri-ldap-extensions :uri-file :uri-file-p :uri-file-pathname :copy-uri :render-uri :merge-uris :url-decode :url-decode-params :url-encode :url-encode-params :uri-error :uri-malformed-string :uri-invalid-port :url-decoding-error :uri-malformed-urlencoded-string)) (in-package :quri) (defun scheme-constructor (scheme) "Get a constructor function appropriate for the scheme." (cond ((string= scheme "http") #'make-uri-http) ((string= scheme "https") #'make-uri-https) ((string= scheme "ldap") #'make-uri-ldap) ((string= scheme "ldaps") #'make-uri-ldaps) ((string= scheme "ftp") #'make-uri-ftp) ((string= scheme "file") #'make-uri-file) ((string= scheme "urn") #'make-urn) (T #'make-basic-uri))) (defun uri (data &key (start 0) end) (if (uri-p data) data (multiple-value-bind (scheme userinfo host port path query fragment) (parse-uri data :start start :end end) (apply (scheme-constructor scheme) :scheme scheme :userinfo userinfo :host host :path path :query query :fragment fragment (and port `(:port ,port)))))) (defun copy-uri (uri &key (scheme (uri-scheme uri)) (userinfo (uri-userinfo uri)) (host (uri-host uri)) (port (uri-port uri)) (path (uri-path uri)) (query (uri-query uri)) (fragment (uri-fragment uri))) (make-uri :scheme scheme :userinfo userinfo :host host :port port :path path :query query :fragment fragment)) (defun make-uri (&rest initargs &key scheme userinfo host port path query fragment) (declare (ignore userinfo host port path query fragment)) (apply (scheme-constructor scheme) initargs)) (defun render-uri (uri &optional stream) (cond ((uri-ftp-p uri) (format stream "~@[~(~A~):~]~@[//~(~A~)~]~@[~A~]~@[;type=~A~]~@[?~A~]~@[#~A~]" (uri-scheme uri) (uri-authority uri) (uri-path uri) (uri-ftp-typecode uri) (uri-query uri) (uri-fragment uri))) ((uri-file-p uri) (format stream "~@[~(~A~)://~]~@[~(~a~)~]" (uri-scheme uri) (uri-path uri))) (T (format stream "~@[~(~A~):~]~@[//~(~A~)~]~@[~A~]~@[?~A~]~@[#~A~]" (uri-scheme uri) (uri-authority uri) (uri-path uri) (uri-query uri) (uri-fragment uri))))) (defun uri= (uri1 uri2) (check-type uri1 uri) (check-type uri2 uri) (when (eq (type-of uri1) (type-of uri2)) (and (equalp (uri-scheme uri1) (uri-scheme uri2)) (equal (uri-path uri1) (uri-path uri2)) (equal (uri-query uri1) (uri-query uri2)) (equal (uri-fragment uri1) (uri-fragment uri2)) (equalp (uri-authority uri1) (uri-authority uri2)) (or (not (uri-ftp-p uri1)) (eql (uri-ftp-typecode uri1) (uri-ftp-typecode uri2)))))) (defmethod print-object ((uri uri) stream) (format stream "#<~S ~A>" (type-of uri) (render-uri uri))) (defun merge-uri-paths (ref-path base-path) (declare (type (or string null) ref-path base-path)) (let* ((path-list (and base-path (nreverse (split-sequence #\/ base-path)))) (ref-components (and ref-path (split-sequence #\/ ref-path))) ending-slash-p) ;; remove last component of base (pop path-list) (dolist (component ref-components) (cond ((string= ".." component) (pop path-list) (setf ending-slash-p t)) ((string= "." component) (setf ending-slash-p t)) (t (push component path-list) (setf ending-slash-p nil)))) (setf path-list (nreverse path-list)) (with-output-to-string (s) (loop for (component . more) on path-list do (progn (write-string component s) (when (or more ending-slash-p) (write-char #\/ s))))))) (defun merge-uris (reference base) (declare (uri reference base)) "Merge a reference URI into the base URI as described in RFC 2396 Section 5.2. The returned URI may or may not be a new instance. Neither REFERENCE nor BASE is mutated." ;; Step 2 -- return base if same document (when (uri= reference base) (return-from merge-uris base)) ;; Step 3 -- scheme (when (uri-scheme reference) (return-from merge-uris reference)) (let ((uri (copy-uri reference :scheme (uri-scheme base)))) (when (null (uri-port uri)) (setf (uri-port uri) (scheme-default-port (uri-scheme uri)))) (macrolet ((done () '(return-from merge-uris uri))) ;; Step 4 -- Authority (when (uri-host uri) (done)) (setf (uri-userinfo uri) (uri-userinfo base)) (setf (uri-host uri) (uri-host base)) (setf (uri-port uri) (uri-port base)) ;; Step 5 -- Empty path (when (null (uri-path uri)) (setf (uri-path uri) (uri-path base)) (done)) ;; Step 6 -- Absolute path (alexandria:when-let* ((p (uri-path uri)) (first-char (and (> (length p) 0) (char p 0)))) (when (char= #\/ first-char) (done))) ;; Step 7 -- Relative path (setf (uri-path uri) (merge-uri-paths (uri-path uri) (uri-path base))) ;; Step 8 -- Finish (done)))) quri-20150804-git/src/uri.lisp000066400000000000000000000034631255531700100160040ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.uri (:use :cl) (:import-from :quri.port :scheme-default-port) (:export :uri :make-basic-uri :uri-p :uri-scheme :uri-userinfo :uri-host :uri-port :uri-path :uri-query :uri-fragment :uri-authority :urn :make-urn :urn-p :urn-nid :urn-nss)) (in-package :quri.uri) (defstruct (uri (:constructor %make-uri)) scheme userinfo host port path query fragment) (defun make-basic-uri (&key scheme userinfo host port path query fragment) (let ((uri (%make-uri :scheme scheme :userinfo userinfo :host host :port port :path path :query query :fragment fragment))) (unless (uri-port uri) (setf (uri-port uri) (scheme-default-port (uri-scheme uri)))) uri)) (defun uri-authority (uri) (when (uri-host uri) (let ((default-port (scheme-default-port (uri-scheme uri)))) (format nil "~:[~;~:*~A@~]~A~:[:~A~;~*~]" (uri-userinfo uri) (uri-host uri) (eql (uri-port uri) default-port) (uri-port uri))))) (defstruct (urn (:include uri (scheme :urn)) (:constructor %make-urn)) nid nss) (defun make-urn (&rest initargs) (let ((urn (apply #'%make-urn initargs))) (when (uri-path urn) (let ((colon-pos (position #\: (uri-path urn)))) (if colon-pos (setf (urn-nid urn) (subseq (uri-path urn) 0 colon-pos) (urn-nss urn) (subseq (uri-path urn) (1+ colon-pos))) (setf (urn-nid urn) (uri-path urn))))) urn)) quri-20150804-git/src/uri/000077500000000000000000000000001255531700100151055ustar00rootroot00000000000000quri-20150804-git/src/uri/file.lisp000066400000000000000000000012051255531700100167130ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.uri.file (:use :cl) (:import-from :quri.uri :uri :scheme :port :uri-path) (:export :uri-file :uri-file-p :make-uri-file :uri-file-pathname)) (in-package :quri.uri.file) (defstruct (uri-file (:include uri (scheme "file") (port nil)))) (declaim (ftype (function (uri-file) pathname) uri-file-pathname)) (defun uri-file-pathname (file) "Get a lisp pathname object from a file URI. Assumes that the path of the file URI is correct path syntax for the environment." (parse-namestring (uri-path file))) quri-20150804-git/src/uri/ftp.lisp000066400000000000000000000024371255531700100165750ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.uri.ftp (:use :cl) (:import-from :quri.uri :uri :scheme :port :uri-path) (:import-from :quri.port :scheme-default-port) (:export :uri-ftp :uri-ftp-p :uri-ftp-typecode :make-uri-ftp)) (in-package :quri.uri.ftp) (defstruct (uri-ftp (:include uri (scheme "ftp") (port #.(scheme-default-port "ftp"))) (:constructor %make-uri-ftp)) typecode) (defun make-uri-ftp (&rest initargs) (let ((ftp (apply #'%make-uri-ftp initargs))) (multiple-value-bind (path typecode) (parse-ftp-typecode (uri-path ftp)) (when path (setf (uri-path ftp) path (uri-ftp-typecode ftp) typecode))) ftp)) (defun parse-ftp-typecode (path) (let ((len (length path))) (when (and (< #.(length ";type=") len) (string= path ";type=" :start1 (- len 1 #.(length ";type=")) :end1 (1- len))) (let ((typecode (aref path (1- len)))) (when (or (char= typecode #\a) (char= typecode #\i) (char= typecode #\d)) (values (subseq path 0 (- len #.(1+ (length ";type=")))) typecode)))))) quri-20150804-git/src/uri/http.lisp000066400000000000000000000020011255531700100167460ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.uri.http (:use :cl) (:import-from :quri.uri :uri :scheme :port :uri-query) (:import-from :quri.port :scheme-default-port) (:import-from :quri.encode :url-encode-params) (:import-from :quri.decode :url-decode-params) (:import-from :alexandria :when-let) (:export :uri-http :make-uri-http :uri-http-p :uri-https :make-uri-https :uri-https-p :uri-query-params)) (in-package :quri.uri.http) (defstruct (uri-http (:include uri (scheme "http") (port #.(scheme-default-port "http"))))) (defstruct (uri-https (:include uri-http (scheme "https") (port #.(scheme-default-port "https"))))) (defun uri-query-params (http) (when-let (query (uri-query http)) (url-decode-params query))) (defun (setf uri-query-params) (new http) (setf (uri-query http) (url-encode-params new))) quri-20150804-git/src/uri/ldap.lisp000066400000000000000000000050201255531700100167130ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.uri.ldap (:use :cl) (:import-from :quri.uri :uri :scheme :port :uri-path :uri-query) (:import-from :quri.port :scheme-default-port) (:import-from :split-sequence :split-sequence) (:import-from :alexandria :when-let) (:export :uri-ldap :make-uri-ldap :uri-ldap-p :uri-ldaps :make-uri-ldaps :uri-ldaps-p :uri-ldap-dn :uri-ldap-attributes :uri-ldap-scope :uri-ldap-filter :uri-ldap-extensions)) (in-package :quri.uri.ldap) (defstruct (uri-ldap (:include uri (scheme "ldap") (port #.(scheme-default-port "ldap"))))) (defstruct (uri-ldaps (:include uri-ldap (scheme "ldaps") (port #.(scheme-default-port "ldaps"))))) (defun uri-ldap-dn (ldap) (let ((path (uri-path ldap))) (when (and path (/= 0 (length path))) (if (char= (aref path 0) #\/) (subseq path 1) path)))) (defun (setf uri-ldap-dn) (new ldap) (setf (uri-path ldap) (concatenate 'string "/" new)) new) (defun nth-uri-ldap-lists (ldap n) (check-type ldap uri-ldap) (when-let (query (uri-query ldap)) (car (last (split-sequence #\? query :count n))))) (defun (setf nth-uri-ldap-lists) (new ldap n) (check-type ldap uri-ldap) (check-type new string) (let ((query (uri-query ldap))) (setf (uri-query ldap) (if query (let ((parts (split-sequence #\? query))) (with-output-to-string (s) (dotimes (i n) (princ (or (pop parts) "") s) (write-char #\? s)) (princ new s) (pop parts) ;; ignore (dolist (part parts) (write-char #\? s) (princ part s)))) new)))) (defun uri-ldap-attributes (ldap) (nth-uri-ldap-lists ldap 1)) (defun (setf uri-ldap-attributes) (new ldap) (setf (nth-uri-ldap-lists ldap 0) new)) (defun uri-ldap-scope (ldap) (nth-uri-ldap-lists ldap 2)) (defun (setf uri-ldap-scope) (new ldap) (setf (nth-uri-ldap-lists ldap 1) new)) (defun uri-ldap-filter (ldap) (nth-uri-ldap-lists ldap 3)) (defun (setf uri-ldap-filter) (new ldap) (setf (nth-uri-ldap-lists ldap 2) new)) (defun uri-ldap-extensions (ldap) (nth-uri-ldap-lists ldap 4)) (defun (setf uri-ldap-extensions) (new ldap) (setf (nth-uri-ldap-lists ldap 3) new)) quri-20150804-git/src/util.lisp000066400000000000000000000116211255531700100161550ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri.util (:use :cl) (:import-from :alexandria :with-gensyms) (:export :standard-alpha-char-p :standard-alpha-byte-p :standard-alphanumeric-p :standard-alphanumeric-byte-p :with-array-parsing :with-string-parsing :with-byte-array-parsing :redo :gonext :goto)) (in-package :quri.util) (defun standard-alpha-char-p (char) (declare (type character char) (optimize (speed 3) (safety 0))) (standard-alpha-byte-p (char-code char))) (defun standard-alpha-byte-p (byte) (declare (type (unsigned-byte 8) byte) (optimize (speed 3) (safety 0))) (or (<= #.(char-code #\A) byte #.(char-code #\Z)) (<= #.(char-code #\a) byte #.(char-code #\z)))) (defun standard-alphanumeric-p (char) (declare (type character char) (optimize (speed 3) (safety 0))) (or (digit-char-p char) (standard-alpha-char-p char))) (defun standard-alphanumeric-byte-p (byte) (declare (type (unsigned-byte 8) byte) (optimize (speed 3) (safety 0))) (or (<= #.(char-code #\0) byte #.(char-code #\9)) (standard-alpha-byte-p byte))) (define-condition parsing-end-unexpectedly (simple-error) ((state :initarg :state :initform nil)) (:report (lambda (condition stream) (format stream "Parsing ended unexpectedly~:[~;~:* at ~A~]" (slot-value condition 'state))))) (define-condition no-next-state (simple-error) ()) (defmacro with-string-parsing ((elem p seq &optional (start 0) end key) &body body) `(let ((,elem #\Nul)) (declare (type character ,elem)) (%with-array-parsing (,elem ,p ,seq ,start ,end ,key) ,@body))) (defmacro with-byte-array-parsing ((elem p seq &optional (start 0) end key) &body body) `(let ((,elem 0)) (declare (type (unsigned-byte 8) ,elem)) (%with-array-parsing (,elem ,p ,seq ,start ,end ,key) ,@body))) (defmacro with-array-parsing ((elem p seq &optional (start 0) end key) &body body) `(let (,elem) (%with-array-parsing (,elem ,p ,seq ,start ,end ,key) ,@body))) (defmacro %with-array-parsing ((elem p seq &optional (start 0) end key) &body body) (with-gensyms (g-end no-next-state last key-fn) (let ((eof-exists nil)) `(let (,@(and key `((,key-fn ,key))) (,p ,start) (,g-end (locally (declare #+sbcl (sb-ext:muffle-conditions sb-ext:compiler-note)) (or ,end (length ,seq))))) (declare (ignorable ,p ,g-end)) ,@(loop for (exp . rest) on body while (and (listp exp) (eq (car exp) 'declare)) collect exp do (setq body rest)) (macrolet ((goto (tag &optional (amount 1)) `(locally (declare (optimize (speed 3) (safety 0))) (incf ,',p ,amount) ,@(if (eql amount 0) () `((when (= ,',p ,',g-end) (go :eof)) (setq ,',elem ,',(if key `(if ,key-fn (funcall ,key-fn (aref ,seq ,p)) (aref ,seq ,p)) `(aref ,seq ,p))))) (go ,tag)))) (tagbody (when (= ,p ,g-end) (go :eof)) (locally (declare (optimize (speed 3) (safety 0))) (setq ,elem ,@(if key `((if ,key-fn (funcall ,key-fn (aref ,seq ,p)) (aref ,seq ,p))) `((aref ,seq ,p))))) ,@(loop for (tagpart . rest) on body for (tag . part) = tagpart if (eq tag :eof) append (progn (setf eof-exists t) `(,@tagpart (go ,last))) else append (list tag `(macrolet ((redo (&optional (amount 1)) `(goto ,',tag ,amount)) (gonext (&optional (amount 1)) `(goto ,',(or (caar rest) no-next-state) ,amount))) ,@part (error 'parsing-end-unexpectedly :state ',tag)))) ,no-next-state (error 'no-next-state) ,@(if eof-exists () '(:eof)) ,last)))))) quri-20150804-git/t/000077500000000000000000000000001255531700100137625ustar00rootroot00000000000000quri-20150804-git/t/benchmark.lisp000066400000000000000000000010011255531700100165750ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri-test.benchmark (:use :cl :quri) (:export :run-benchmark)) (in-package :quri-test.benchmark) (defun run-benchmark () (format t "~2&# QURI:URI~2%") (time (dotimes (i 100000) (quri:uri "http://www.ics.uci.edu/pub/ietf/uri/#Related"))) (format t "~2&# QURI:URL-DECODE~2%") (time (dotimes (i 100000) (quri:url-decode "/foo%E3%81%82"))) (format t "~2&# QURI:URL-ENCODE~2%") (time (dotimes (i 100000) (quri:url-encode "/fooあ")))) quri-20150804-git/t/decode.lisp000066400000000000000000000013221255531700100160740ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri-test.decode (:use :cl :quri.decode :prove)) (in-package :quri-test.decode) (plan 6) (is (url-decode-params "a=b&c=d") '(("a" . "b") ("c" . "d")) "normal case") (is (url-decode-params "a=b&c=d&e") '(("a" . "b") ("c" . "d") ("e")) "field only") (is-error (url-decode-params "a=b=c") 'quri:uri-malformed-urlencoded-string "Raise a malformed error") (is (url-decode-params "a=b=c" :lenient t) '(("a" . "b=c")) ":lenient t") (is-error (url-decode-params "a=%!@#&b=1") 'quri:url-decoding-error "Raise a decoding error") (is (url-decode-params "a=%!@#&b=1" :lenient t) '(("b" . "1"))) (finalize) quri-20150804-git/t/domain.lisp000066400000000000000000000066661255531700100161400ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri-test.domain (:use :cl :quri.domain :prove)) (in-package :quri-test.domain) (plan nil) (subtest "ipv4-addr-p" (ok (ipv4-addr-p "127.0.0.1") "127.0.0.1 is valid") (ok (ipv4-addr-p "255.255.255.255") "255.255.255.255 is valid") (ok (not (ipv4-addr-p "256.255.255.255")) "256.255.255.255 is not valid") (ok (not (ipv4-addr-p "345.23.1.0")) "345.23.1.0 is not valid") (ok (not (ipv4-addr-p "127.0")) "127.0 is not valid") (ok (not (ipv4-addr-p "127.0.0.0.1")) "127.0.0.0.1 is not valid") (ok (not (ipv4-addr-p "2ch.net")) "2ch.net is not valid") (ok (not (ipv4-addr-p "127..0.1")) "127..0.1 is not valid") (ok (not (ipv4-addr-p "...")) "... is not valid")) (subtest "ipv6-addr-p" (ok (ipv6-addr-p "2001:0db8:bd05:01d2:288a:1fc0:0001:10ee")) (ok (ipv6-addr-p "2001:db8:20:3:1000:100:20:3")) (ok (ipv6-addr-p "2001:db8::1234:0:0:9abc")) (ok (ipv6-addr-p "2001:db8::9abc")) (ok (ipv6-addr-p "::1"))) (subtest "ip-addr=" (is (ip-addr= "127.0.0.1" "127.0.0.1") t) (is (ip-addr= "127.0.0.1" "127.0.0.2") nil) (is (ip-addr= "127.0.0.1" "localhost") nil) (is (ip-addr= "::1" "0:0:0:0:0:0:0:1") t) (is (ip-addr= "[::1]" "0:0:0:0:0:0:0:1") t) (is (ip-addr= "[::1]" "0:0:0:0:0:0:0:2") nil)) (subtest "cookie-domain-p" (is (cookie-domain-p "com" "com") nil) (is (cookie-domain-p "com" "example.com") nil) (is (cookie-domain-p "com" "foo.example.com") nil) (is (cookie-domain-p "com" "bar.foo.example.com") nil) (is (cookie-domain-p "example.com" "com") nil) (is (cookie-domain-p "example.com" "example.com") t) (is (cookie-domain-p "example.com" "foo.example.com") nil) (is (cookie-domain-p "example.com" "bar.foo.example.com") nil) (is (cookie-domain-p "foo.example.com" "com") nil) (is (cookie-domain-p "foo.example.com" "example.com") t) (is (cookie-domain-p "foo.example.com" "foo.example.com") t) (is (cookie-domain-p "foo.example.com" "bar.foo.example.com") nil) (is (cookie-domain-p "b.sapporo.jp" "jp") nil) (is (cookie-domain-p "b.sapporo.jp" "sapporo.jp") nil) (is (cookie-domain-p "b.sapporo.jp" "b.sapporo.jp") nil) (is (cookie-domain-p "b.sapporo.jp" "a.b.sapporo.jp") nil) (is (cookie-domain-p "b.c.sapporo.jp" "jp") nil) (is (cookie-domain-p "b.c.sapporo.jp" "sapporo.jp") nil) (is (cookie-domain-p "b.c.sapporo.jp" "c.sapporo.jp") nil) (is (cookie-domain-p "b.c.sapporo.jp" "b.c.sapporo.jp") t) (is (cookie-domain-p "b.c.sapporo.jp" "a.b.c.sapporo.jp") nil) (is (cookie-domain-p "b.c.d.sapporo.jp" "jp") nil) (is (cookie-domain-p "b.c.d.sapporo.jp" "sapporo.jp") nil) (is (cookie-domain-p "b.c.d.sapporo.jp" "d.sapporo.jp") nil) (is (cookie-domain-p "b.c.d.sapporo.jp" "c.d.sapporo.jp") t) (is (cookie-domain-p "b.c.d.sapporo.jp" "b.c.d.sapporo.jp") t) (is (cookie-domain-p "b.c.d.sapporo.jp" "a.b.c.d.sapporo.jp") nil) (is (cookie-domain-p "city.sapporo.jp" "jp") nil) (is (cookie-domain-p "city.sapporo.jp" "sapporo.jp") nil) (is (cookie-domain-p "city.sapporo.jp" "city.sapporo.jp") t) (is (cookie-domain-p "city.sapporo.jp" "a.city.sapporo.jp") nil) (is (cookie-domain-p "b.city.sapporo.jp" "jp") nil) (is (cookie-domain-p "b.city.sapporo.jp" "sapporo.jp") nil) (is (cookie-domain-p "b.city.sapporo.jp" "city.sapporo.jp") t) (is (cookie-domain-p "b.city.sapporo.jp" "b.city.sapporo.jp") t) (is (cookie-domain-p "b.city.sapporo.jp" "a.b.city.sapporo.jp") nil)) (finalize) quri-20150804-git/t/encode.lisp000066400000000000000000000007061255531700100161130ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri-test.encode (:use :cl :quri.encode :prove)) (in-package :quri-test.encode) (plan 2) (subtest "url-encode" (is (url-encode "Tiffany") "Tiffany") (is (url-encode "Tiffany & Co.") "Tiffany%20%26%20Co.") (is (url-encode "Tiffany & Co." :space-to-plus t) "Tiffany+%26+Co.")) (subtest "url-encode-params" (is (url-encode-params '(("a" . "b") ("c" . "d"))) "a=b&c=d")) (finalize) quri-20150804-git/t/etld.lisp000066400000000000000000000052271255531700100156110ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri-test.etld (:use :cl :quri.etld :prove)) (in-package :quri-test.etld) (plan nil) (subtest "parse-domain" (is (parse-domain "com") nil) (is (parse-domain "example.com") "example.com") (is (parse-domain "www.example.com") "example.com") (is (parse-domain "uk.com") nil) (is (parse-domain "example.uk.com") "example.uk.com") (is (parse-domain "b.example.uk.com") "example.uk.com") (is (parse-domain "a.b.example.uk.com") "example.uk.com") (is (parse-domain "test.ac") "test.ac") ;; TLD with only 1 (wildcard) rule (is (parse-domain "cy") nil) (is (parse-domain "c.cy") nil) (is (parse-domain "b.c.cy") "b.c.cy") (is (parse-domain "a.b.c.cy") "b.c.cy") ;; jp domain (is (parse-domain "jp") nil) (is (parse-domain "test.jp") "test.jp") (is (parse-domain "www.test.jp") "test.jp") (is (parse-domain "ac.jp") nil) (is (parse-domain "test.ac.jp") "test.ac.jp") (is (parse-domain "kyoto.jp") nil) (is (parse-domain "test.kyoto.jp") "test.kyoto.jp") (is (parse-domain "ide.kyoto.jp") nil) (is (parse-domain "b.ide.kyoto.jp") "b.ide.kyoto.jp") (is (parse-domain "a.b.ide.kyoto.jp") "b.ide.kyoto.jp") (is (parse-domain "c.kobe.jp") nil) (is (parse-domain "b.c.kobe.jp") "b.c.kobe.jp") (is (parse-domain "a.b.c.kobe.jp") "b.c.kobe.jp") (is (parse-domain "city.kobe.jp") "city.kobe.jp") (is (parse-domain "www.city.kobe.jp") "city.kobe.jp") ;; TLD with a wildcard rule and exceptions (is (parse-domain "ck") nil) (is (parse-domain "test.ck") nil) (is (parse-domain "b.test.ck") "b.test.ck") (is (parse-domain "a.b.test.ck") "b.test.ck") (is (parse-domain "www.ck") "www.ck") (is (parse-domain "www.www.ck") "www.ck") ;; US K12 (is (parse-domain "us") nil) (is (parse-domain "test.us") "test.us") (is (parse-domain "www.test.us") "test.us") (is (parse-domain "ak.us") nil) (is (parse-domain "test.ak.us") "test.ak.us") (is (parse-domain "www.test.ak.us") "test.ak.us") (is (parse-domain "k12.ak.us") nil) (is (parse-domain "test.k12.ak.us") "test.k12.ak.us") (is (parse-domain "www.test.k12.ak.us") "test.k12.ak.us") ;; IDN labels. (is (parse-domain "公司.cn") nil) ;; Unlisted TLD (is (parse-domain "example") "example") (is (parse-domain "example.example") "example.example") (is (parse-domain "b.example.example") "example.example") (is (parse-domain "a.b.example.example") "example.example") ;; Listed TLD, but non-Internet TLD (is (parse-domain "local") "local") (is (parse-domain "example.local") "example.local") (is (parse-domain "b.example.local") "example.local") (is (parse-domain "a.b.example.local") "example.local")) (finalize) quri-20150804-git/t/parser.lisp000066400000000000000000000002341255531700100161460ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri-test.parser (:use :cl :quri.parser :prove)) (in-package :quri-test.parser) (plan nil) (finalize) quri-20150804-git/t/quri.lisp000066400000000000000000000074141255531700100156410ustar00rootroot00000000000000(in-package :cl-user) (defpackage quri-test (:use :cl :quri :prove)) (in-package :quri-test) (plan nil) (subtest "uri=" (let ((prove:*default-test-function* #'uri=)) (is (uri "http://b.hatena.ne.jp") (uri "http://b.hatena.ne.jp:80")) (is (uri "http://b.hatena.ne.jp") (make-uri :scheme "http" :host "b.hatena.ne.jp")))) (defparameter *test-cases* '(("file:///tmp/junk.txt" . ("file" nil nil "/tmp/junk.txt" nil nil)) ("imap://mail.common-lisp.net/mbox1" . ("imap" nil "mail.common-lisp.net" "/mbox1" nil nil)) ("mms://wms.sys.hinet.net/cts/Drama/09006251100.asf" . ("mms" nil "wms.sys.hinet.net" "/cts/Drama/09006251100.asf" nil nil)) ("nfs://server/path/to/file.txt" . ("nfs" nil "server" "/path/to/file.txt" nil nil)) ("svn+ssh://svn.zope.org/repos/main/ZConfig/trunk/" . ("svn+ssh" nil "svn.zope.org" "/repos/main/ZConfig/trunk/" nil nil)) ("git+ssh://git@github.com/user/project.git" . ("git+ssh" "git" "github.com" "/user/project.git" nil nil)) ("http://common-lisp.net" . ("http" nil "common-lisp.net" nil nil nil)) ("http://common-lisp.net#abc" . ("http" nil "common-lisp.net" nil nil "abc")) ("http://common-lisp.net?q=abc" . ("http" nil "common-lisp.net" nil "q=abc" nil)) ("http://common-lisp.net/#abc" . ("http" nil "common-lisp.net" "/" nil "abc")) ("http://a/b/c/d;p?q#f" . ("http" nil "a" "/b/c/d;p" "q" "f")) ("http" . (nil nil nil "http" nil nil)) ("http:" . ("http" nil nil nil nil nil)) ("ldap://[2001:db8::7]/c=GB?objectClass?one" . ("ldap" nil "[2001:db8::7]" "/c=GB" "objectClass?one" nil)) ("http://[dead:beef::]:/foo/" . ("http" nil "[dead:beef::]" "/foo/" nil nil)) ("tel:+31-641044153" . ("tel" nil nil "+31-641044153" nil nil)))) (loop for (test-uri . params) in *test-cases* do (subtest (format nil "~A (string)" test-uri) (let ((uri (uri test-uri))) (is (uri-scheme uri) (nth 0 params) "scheme") (is (uri-userinfo uri) (nth 1 params) "userinfo") (is (uri-host uri) (nth 2 params) "host") (is (uri-path uri) (nth 3 params) "path") (is (uri-query uri) (nth 4 params) "query") (is (uri-fragment uri) (nth 5 params) "fragment"))) (subtest (format nil "~A (byte-vector)" test-uri) (let ((uri (uri (babel:string-to-octets test-uri)))) (is (uri-scheme uri) (nth 0 params) "scheme") (is (uri-userinfo uri) (nth 1 params) "userinfo") (is (uri-host uri) (nth 2 params) "host") (is (uri-path uri) (nth 3 params) "path") (is (uri-query uri) (nth 4 params) "query") (is (uri-fragment uri) (nth 5 params) "fragment"))) (subtest (format nil "~A (copy-uri)" test-uri) (let ((uri (uri test-uri))) (is uri (copy-uri uri) :test #'uri=)))) (defparameter *base-uri* (uri "http://www.example.com/path/a/b.html")) (defparameter *merge-test-cases* `((,(uri "file:///tmp/junk.txt") . "file:///tmp/junk.txt") (,(make-uri :userinfo "auth" :host "secretplace.com") . "http://auth@secretplace.com") (,(make-uri :host "example.com" :path "/path" :query "query") . "http://example.com/path?query") (,(uri "/new/path") . "http://www.example.com/new/path") (,(uri "foo.txt") . "http://www.example.com/path/a/foo.txt") (,(uri "../bar") . "http://www.example.com/path/bar") (,(uri "other/./car") . "http://www.example.com/path/a/other/car") (,(uri "./../.") . "http://www.example.com/path/") (,(make-uri :query "name=fukamachi") . "http://www.example.com/path/a/b.html?name=fukamachi"))) (subtest "merge-uris" (loop for (test-uri . result-uri) in *merge-test-cases* do (let ((merged-uri (merge-uris test-uri *base-uri*))) (is (render-uri merged-uri) result-uri :test 'string=)))) (finalize)