local-operator-ui 0.23.4 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/main/index.js +916 -13
- package/out/preload/index.js +16 -0
- package/out/renderer/assets/{_basePickBy-CN0rbl_B.js → _basePickBy-CwObVhcu.js} +1 -1
- package/out/renderer/assets/{_baseUniq-Ug-U3Vbc.js → _baseUniq-CKcvO8DZ.js} +1 -1
- package/out/renderer/assets/{agent-details-page-CxpR2VPm.js → agent-details-page-CP-jkp7A.js} +2 -7
- package/out/renderer/assets/{agent-hub-page-uDPA0Kvg.js → agent-hub-page-C2aosea2.js} +1 -1
- package/out/renderer/assets/{agents-page-CRqdRl1t.js → agents-page-DGQCSEiN.js} +2 -2
- package/out/renderer/assets/{arc-CUFswKSd.js → arc-tT6anrd5.js} +1 -1
- package/out/renderer/assets/{architectureDiagram-IEHRJDOE-pFcFaTc3.js → architectureDiagram-IEHRJDOE-CXNEoeHU.js} +1 -1
- package/out/renderer/assets/arrow-left-DP3nO5vd.js +6 -0
- package/out/renderer/assets/{blockDiagram-JOT3LUYC-BG2832Q4.js → blockDiagram-JOT3LUYC-BSa-VPyg.js} +1 -1
- package/out/renderer/assets/browser-page-C7b_Br3V.js +1 -0
- package/out/renderer/assets/{c4Diagram-VJAJSXHY-C2r12sfW.js → c4Diagram-VJAJSXHY-Bg2gUTmZ.js} +1 -1
- package/out/renderer/assets/channel-Bl6RThgl.js +1 -0
- package/out/renderer/assets/{chunk-4BMEZGHF-BPR6t5J9.js → chunk-4BMEZGHF-rhelWbhx.js} +1 -1
- package/out/renderer/assets/{chunk-A2AXSNBT-CS00ya_c.js → chunk-A2AXSNBT-CEnBlAvB.js} +1 -1
- package/out/renderer/assets/{chunk-AEK57VVT-C-kEZamD.js → chunk-AEK57VVT-BakCCuT_.js} +1 -1
- package/out/renderer/assets/{chunk-D6G4REZN-OOhJ7t5s.js → chunk-D6G4REZN-syZWRzxO.js} +1 -1
- package/out/renderer/assets/{chunk-RZ5BOZE2-Bwlq47qc.js → chunk-RZ5BOZE2-B04g2Fvh.js} +1 -1
- package/out/renderer/assets/{chunk-XZIHB7SX-CfqURoNC.js → chunk-XZIHB7SX-DCrY3ido.js} +1 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-BVD9sSip.js +1 -0
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-BVD9sSip.js +1 -0
- package/out/renderer/assets/clone-CmNSmjpd.js +1 -0
- package/out/renderer/assets/{compact-pagination-BGWcLBUD.js → compact-pagination-D3hP611h.js} +1 -1
- package/out/renderer/assets/{dagre-OKDRZEBW-tY8jrcZH.js → dagre-OKDRZEBW-B5D0Uh-m.js} +1 -1
- package/out/renderer/assets/{diagram-SSKATNLV-J3cstXcu.js → diagram-SSKATNLV-CeAOV54d.js} +1 -1
- package/out/renderer/assets/{diagram-VNBRO52H-p4X-p-ki.js → diagram-VNBRO52H-CL4Yd4b7.js} +1 -1
- package/out/renderer/assets/{erDiagram-Q7BY3M3F-S7pKke2V.js → erDiagram-Q7BY3M3F-BRmLFud9.js} +1 -1
- package/out/renderer/assets/{flowDiagram-4HSFHLVR-pbGx4rN2.js → flowDiagram-4HSFHLVR-T92MmEnu.js} +1 -1
- package/out/renderer/assets/{ganttDiagram-APWFNJXF-DEtmnS5-.js → ganttDiagram-APWFNJXF-B1PruB4z.js} +5 -5
- package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-BWF8FWhs.js → gitGraphDiagram-7IBYFJ6S-Cgq73e4-.js} +1 -1
- package/out/renderer/assets/{graph-B7m4xk9H.js → graph-pm6zbXLf.js} +1 -1
- package/out/renderer/assets/{icon-tKUcWuiZ.js → icon-1lzWk9mU.js} +41 -41
- package/out/renderer/assets/icon-3H5rqhcf.css +1 -0
- package/out/renderer/assets/{index-TxI73G4w.js → index-4a5t798a.js} +1 -1
- package/out/renderer/assets/{index-BsXIxBXM.js → index-DXyMo3l_.js} +363 -363
- package/out/renderer/assets/{index-CsaoIvUd.js → index-ubUWwrdk.js} +1 -1
- package/out/renderer/assets/{infoDiagram-PH2N3AL5-8h2TmkIW.js → infoDiagram-PH2N3AL5-kNTi6SDn.js} +1 -1
- package/out/renderer/assets/{installer-DuzWPi6f.js → installer-B4Wp1OYo.js} +3 -8
- package/out/renderer/assets/{journeyDiagram-U35MCT3I-CPf3fMXH.js → journeyDiagram-U35MCT3I-CGb_mWQ-.js} +1 -1
- package/out/renderer/assets/{kanban-definition-NDS4AKOZ-DW2otqaN.js → kanban-definition-NDS4AKOZ-B617t0Ix.js} +1 -1
- package/out/renderer/assets/{layout-BRcJiSkq.js → layout-CauoJ-o0.js} +1 -1
- package/out/renderer/assets/{legacy-agents-page-qF731keW.js → legacy-agents-page-CXlkEHSc.js} +1 -1
- package/out/renderer/assets/{mermaid.core-B5hEqKH7.js → mermaid.core-KPZTEy4t.js} +5 -5
- package/out/renderer/assets/{mindmap-definition-ALO5MXBD-CUqtz9Ze.js → mindmap-definition-ALO5MXBD-Dr9eisNR.js} +1 -1
- package/out/renderer/assets/{page-header-YNWzPx-u.js → page-header-BGC9nn5P.js} +1 -1
- package/out/renderer/assets/{parseISO-CMaINYL9.js → parseISO-C7JqZQIV.js} +1 -1
- package/out/renderer/assets/{pieDiagram-IB7DONF6-CIqN6Dpx.js → pieDiagram-IB7DONF6-BW6eF1pG.js} +1 -1
- package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-PXHdER5s.js → quadrantDiagram-7GDLP6J5-DfdNEUM6.js} +1 -1
- package/out/renderer/assets/{radar-MK3ICKWK-8W9weQXH.js → radar-MK3ICKWK-D7pINtkJ.js} +1 -1
- package/out/renderer/assets/{radient-auth-buttons-Bws-4a4y.js → radient-auth-buttons-DGE7qjYU.js} +1 -1
- package/out/renderer/assets/{requirementDiagram-KVF5MWMF-C2W25Iz8.js → requirementDiagram-KVF5MWMF-c_1yWNLX.js} +1 -1
- package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-WNXESQ-v.js → sankeyDiagram-QLVOVGJD-DrhH2PVW.js} +1 -1
- package/out/renderer/assets/{schedules-page-Dm47JYr-.js → schedules-page-Dv2SBtN5.js} +8 -8
- package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-BQsRwpcA.js → sequenceDiagram-X6HHIX6F-BkjZFMxU.js} +1 -1
- package/out/renderer/assets/settings-page-B-DRCLaD.js +97 -0
- package/out/renderer/assets/shield-check-BkekGG6a.js +6 -0
- package/out/renderer/assets/{square-pen-D2Fexv_6.js → square-pen-DCerMUfT.js} +1 -1
- package/out/renderer/assets/{stateDiagram-DGXRK772-CrrBOqYj.js → stateDiagram-DGXRK772-CXnOwmRo.js} +1 -1
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-VnQV0ByK.js +1 -0
- package/out/renderer/assets/{timeline-definition-BDJGKUSR-DZkzCCzg.js → timeline-definition-BDJGKUSR-BltcMkR5.js} +1 -1
- package/out/renderer/assets/{use-agent-like-mutation-dXDrGfiV.js → use-agent-like-mutation-DQsdECwD.js} +1 -1
- package/out/renderer/assets/{xychartDiagram-VJFVF3MP-McxfRz1N.js → xychartDiagram-VJFVF3MP-C_Pj_Ki_.js} +1 -1
- package/out/renderer/index.html +3 -3
- package/out/renderer/installer.html +4 -3
- package/package.json +2 -2
- package/out/renderer/assets/channel-Ch9urzYS.js +0 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-CYp4Jnv5.js +0 -1
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-CYp4Jnv5.js +0 -1
- package/out/renderer/assets/clone-DVZHur_7.js +0 -1
- package/out/renderer/assets/icon-BmwuYXQI.css +0 -1
- package/out/renderer/assets/settings-page-Cy_psxNy.js +0 -97
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-CyDSRETw.js +0 -1
package/out/main/index.js
CHANGED
|
@@ -255,6 +255,33 @@ const desktopRequestSchema = zod.z.discriminatedUnion("op", [
|
|
|
255
255
|
args: zod.z.string().max(DESKTOP_MESSAGE_MAX_CHARS).optional(),
|
|
256
256
|
images: zod.z.array(sessionImage).max(8).optional()
|
|
257
257
|
}).strict(),
|
|
258
|
+
/*
|
|
259
|
+
* Point a LIVE session at another working directory (the desktop's `/move`).
|
|
260
|
+
*
|
|
261
|
+
* Its own op rather than an argument to `sessions.command`, and the reason is
|
|
262
|
+
* where the work happens: the move is executed in the SERVER process against
|
|
263
|
+
* the session's viewer (`POST
|
|
264
|
+
* /v1/desktop/sessions/{id}/working-directory`), while the command endpoint
|
|
265
|
+
* answers a `NativeAction | OwnerCommandResult` - the union's other member is
|
|
266
|
+
* the RUNTIME's own slash answer, and a move produces neither. `/move`
|
|
267
|
+
* therefore stays a presentation request in the backend's command catalogue
|
|
268
|
+
* (`desktop_destination="session.move"`): a bare `/move` opens the picker,
|
|
269
|
+
* and the argument form and the chip both call this op instead. The shape is
|
|
270
|
+
* `sessions.warm`'s: a lifecycle operation on the session's runtime, with its
|
|
271
|
+
* own receipt.
|
|
272
|
+
*
|
|
273
|
+
* Deliberately NOT a `MESSAGE_OPS` member (see `desktopRequestByteBudget`): a
|
|
274
|
+
* path is not prose, and claiming image-sized room for a 4 KB field would
|
|
275
|
+
* spend the message budget on nothing. `cwd` carries the same bound as
|
|
276
|
+
* `sessions.create`/`sessions.preview` because it reaches the same route
|
|
277
|
+
* model, which refuses anything else.
|
|
278
|
+
*/
|
|
279
|
+
zod.z.object({
|
|
280
|
+
op: zod.z.literal("sessions.move"),
|
|
281
|
+
sessionId,
|
|
282
|
+
requestId,
|
|
283
|
+
cwd: zod.z.string().min(1).max(4096)
|
|
284
|
+
}).strict(),
|
|
258
285
|
zod.z.object({
|
|
259
286
|
op: zod.z.literal("sessions.answer"),
|
|
260
287
|
sessionId,
|
|
@@ -910,6 +937,17 @@ function desktopEndpoint(request) {
|
|
|
910
937
|
can_notify: request.canNotify
|
|
911
938
|
}
|
|
912
939
|
};
|
|
940
|
+
case "sessions.move":
|
|
941
|
+
return {
|
|
942
|
+
path: `/v1/desktop/sessions/${request.sessionId}/working-directory`,
|
|
943
|
+
method: "POST",
|
|
944
|
+
// `request_id` is the receipt key the route journals on, and it is what
|
|
945
|
+
// makes a retried move replay the first answer rather than retire the
|
|
946
|
+
// runtime a second time. `cwd` is sent as typed: resolving `~` and a
|
|
947
|
+
// relative path is the backend's job, because the base for a relative
|
|
948
|
+
// path is the SESSION's directory, which the renderer does not own.
|
|
949
|
+
body: { request_id: request.requestId, cwd: request.cwd }
|
|
950
|
+
};
|
|
913
951
|
case "sessions.warm":
|
|
914
952
|
return {
|
|
915
953
|
path: `/v1/desktop/sessions/${request.sessionId}/warm`,
|
|
@@ -1850,6 +1888,7 @@ class DesktopStreamRelay {
|
|
|
1850
1888
|
if (args.epoch) query.set("epoch", args.epoch);
|
|
1851
1889
|
if (args.afterSeq !== void 0)
|
|
1852
1890
|
query.set("after_seq", String(args.afterSeq));
|
|
1891
|
+
query.set("frontend_replace", "1");
|
|
1853
1892
|
const suffix = query.size > 0 ? `?${query}` : "";
|
|
1854
1893
|
const url = new URL(
|
|
1855
1894
|
`/v1/desktop/sessions/${args.sessionId}/events${suffix}`,
|
|
@@ -8029,11 +8068,36 @@ class ApprovalStore {
|
|
|
8029
8068
|
results = {};
|
|
8030
8069
|
/** Unspent "Allow once" grants, keyed by origin. */
|
|
8031
8070
|
onceGrants = {};
|
|
8071
|
+
/**
|
|
8072
|
+
* "Allow for this session" grants: exact origins, in memory only.
|
|
8073
|
+
*
|
|
8074
|
+
* NOT written to the store, and that is the scope's definition (design 9.3:
|
|
8075
|
+
* `session` is "until the app quits, in-memory"). It cannot be: a durable
|
|
8076
|
+
* version of it would be indistinguishable from `site`, which is the scope
|
|
8077
|
+
* that means "keep this".
|
|
8078
|
+
*/
|
|
8079
|
+
sessionGrants = /* @__PURE__ */ new Set();
|
|
8080
|
+
/** The provenance rows for the session grants, so the approvals list can show
|
|
8081
|
+
* them beside the durable ones without a second source of truth. */
|
|
8082
|
+
sessionRecords = [];
|
|
8032
8083
|
/** Receipts for displaced requesters (see `access-flow.ts`). */
|
|
8033
8084
|
tombstones = {};
|
|
8034
8085
|
/** Consumed once grants authorize one committed document, not every future
|
|
8035
8086
|
* document on that origin. Revocation invalidates in-flight admissions too. */
|
|
8036
8087
|
revision = 0;
|
|
8088
|
+
/**
|
|
8089
|
+
* Per-origin revocation epochs, bumped by `revokeOrigin` and by nothing else.
|
|
8090
|
+
*
|
|
8091
|
+
* The global `revision` cannot do this job: bumping it for one site's revoke
|
|
8092
|
+
* would refuse every OTHER approved origin, which `documentAllowed`'s own
|
|
8093
|
+
* comment rules out (review round 1). But a per-origin revoke still has to
|
|
8094
|
+
* invalidate an admission that was already granted when it landed — the agent
|
|
8095
|
+
* pressed a nav against a `once` grant, the user revoked while it was in
|
|
8096
|
+
* flight, and the closure `admit` handed back kept saying yes because the
|
|
8097
|
+
* revision it compares had not moved (review round 2, R1's third limb). So the
|
|
8098
|
+
* epoch moves per origin and `admit`'s closure compares the origin's.
|
|
8099
|
+
*/
|
|
8100
|
+
originEpochs = /* @__PURE__ */ new Map();
|
|
8037
8101
|
documents = /* @__PURE__ */ new Map();
|
|
8038
8102
|
constructor(options) {
|
|
8039
8103
|
this.path = path$1.join(options.dir, APPROVALS_FILENAME);
|
|
@@ -8068,6 +8132,7 @@ class ApprovalStore {
|
|
|
8068
8132
|
* instead compiles (the slot is `unknown` and optional) and silently drops
|
|
8069
8133
|
* every broad grant, which is why the call spells the order out. */
|
|
8070
8134
|
originAllowed(url) {
|
|
8135
|
+
if (this.sessionGrants.has(url.origin)) return true;
|
|
8071
8136
|
if (this.store.origins[url.origin] === "deny") return false;
|
|
8072
8137
|
return storedOriginAllowed(
|
|
8073
8138
|
this.store.origins,
|
|
@@ -8124,9 +8189,10 @@ class ApprovalStore {
|
|
|
8124
8189
|
admit(url, requester) {
|
|
8125
8190
|
const { viaOnceGrant } = this.ensureTopLevelAccess(url, requester);
|
|
8126
8191
|
const revision = this.revision;
|
|
8192
|
+
const epoch = this.originEpochs.get(url.origin) ?? 0;
|
|
8127
8193
|
return {
|
|
8128
8194
|
viaOnceGrant,
|
|
8129
|
-
approved: (candidate) => this.originAllowed(candidate) || viaOnceGrant && revision === this.revision && candidate.origin === url.origin
|
|
8195
|
+
approved: (candidate) => this.originAllowed(candidate) || viaOnceGrant && revision === this.revision && (this.originEpochs.get(url.origin) ?? 0) === epoch && candidate.origin === url.origin
|
|
8130
8196
|
};
|
|
8131
8197
|
}
|
|
8132
8198
|
rememberDocument(token, url, requester, epoch, admitted) {
|
|
@@ -8321,7 +8387,27 @@ class ApprovalStore {
|
|
|
8321
8387
|
this.onChanged();
|
|
8322
8388
|
return { origin: entry.origin, state: "allowed", scope: "once" };
|
|
8323
8389
|
}
|
|
8390
|
+
if (decision === "session") {
|
|
8391
|
+
this.sessionGrants.add(entry.origin);
|
|
8392
|
+
this.sessionRecords.push({
|
|
8393
|
+
origin: entry.origin,
|
|
8394
|
+
scope: "session",
|
|
8395
|
+
requester: requester || entry.requester,
|
|
8396
|
+
grantedAt: now
|
|
8397
|
+
});
|
|
8398
|
+
this.results[resultKey(entry.entryId, entry.requester)] = receiptFor(
|
|
8399
|
+
entry,
|
|
8400
|
+
"allowed",
|
|
8401
|
+
now
|
|
8402
|
+
);
|
|
8403
|
+
this.onChanged();
|
|
8404
|
+
return { origin: entry.origin, state: "allowed", scope: "session" };
|
|
8405
|
+
}
|
|
8324
8406
|
if (decision === "deny") {
|
|
8407
|
+
this.sessionGrants.delete(entry.origin);
|
|
8408
|
+
this.sessionRecords = this.sessionRecords.filter(
|
|
8409
|
+
(record) => record.origin !== entry.origin
|
|
8410
|
+
);
|
|
8325
8411
|
this.store.origins[entry.origin] = "deny";
|
|
8326
8412
|
this.store.records.push({
|
|
8327
8413
|
origin: entry.origin,
|
|
@@ -8385,9 +8471,86 @@ class ApprovalStore {
|
|
|
8385
8471
|
scope: decision === "site" ? "origin" : entry.broad?.scope ?? decision
|
|
8386
8472
|
};
|
|
8387
8473
|
}
|
|
8388
|
-
/** The decisions still in force, for the approvals list.
|
|
8474
|
+
/** The decisions still in force, for the approvals list.
|
|
8475
|
+
*
|
|
8476
|
+
* The session grants are merged in rather than kept apart, because the question
|
|
8477
|
+
* the list answers is "which sites can an agent act on as me right now?"
|
|
8478
|
+
* (design 9.3) and a `session` grant is a yes to that question. They carry
|
|
8479
|
+
* `scope: "session"`, which is how the list says "until the app quits". */
|
|
8389
8480
|
grants() {
|
|
8390
|
-
return [...this.store.records];
|
|
8481
|
+
return [...this.store.records, ...this.sessionRecords];
|
|
8482
|
+
}
|
|
8483
|
+
/**
|
|
8484
|
+
* Revoke one origin's approvals: the exact-origin verdict, a session grant, any
|
|
8485
|
+
* BROAD grant that covers it, an unspent `once` grant, and the document receipts
|
|
8486
|
+
* issued on it.
|
|
8487
|
+
*
|
|
8488
|
+
* A broad grant is revoked too, and that is the honest reading of a per-origin
|
|
8489
|
+
* revoke: the user pointed at a site and said "not this one". Leaving a domain
|
|
8490
|
+
* grant in place would let the agent reach the very origin just revoked, which
|
|
8491
|
+
* is the failure mode where a revoke button appears to do nothing.
|
|
8492
|
+
*
|
|
8493
|
+
* Deliberately does NOT touch cookies (design 9.4): revoking approvals does not
|
|
8494
|
+
* log the user out, and clearing cookies does not restore the deny state.
|
|
8495
|
+
*
|
|
8496
|
+
* WHY THIS IS NOT `revokeAll` FOR ONE ORIGIN, and why the two paths cannot share
|
|
8497
|
+
* an implementation: the bulk path can bump the global `revision` and floor every
|
|
8498
|
+
* capability in the store, because it is revoking everything. A per-origin
|
|
8499
|
+
* revoke that did the same would refuse receipts and in-flight admissions for
|
|
8500
|
+
* origins the user never touched (review round 1's objection to that route), so
|
|
8501
|
+
* it moves ONE origin's epoch instead — and everything that authorises that
|
|
8502
|
+
* origin dies with it: the durable verdict, the session grant, the provenance
|
|
8503
|
+
* rows, the covering broad grant, the unspent `once` grant, the document
|
|
8504
|
+
* receipts already issued for it, and any admission closure still in flight.
|
|
8505
|
+
*
|
|
8506
|
+
* Returns how many grants were dropped, so the caller can say what happened
|
|
8507
|
+
* rather than reporting a click. An unspent `once` grant counts: it is live
|
|
8508
|
+
* authority for this origin (review round 2, minor) and a revoke that left it
|
|
8509
|
+
* behind reported "0 approvals revoked" to the user. A document receipt does
|
|
8510
|
+
* NOT count separately: it is a capability derived from a grant that is already
|
|
8511
|
+
* counted, and counting both would double-count one decision.
|
|
8512
|
+
*/
|
|
8513
|
+
revokeOrigin(rawOrigin) {
|
|
8514
|
+
let removed = 0;
|
|
8515
|
+
let origin = rawOrigin;
|
|
8516
|
+
try {
|
|
8517
|
+
origin = new URL(rawOrigin).origin;
|
|
8518
|
+
} catch {
|
|
8519
|
+
}
|
|
8520
|
+
if (this.onceGrants[origin] !== void 0) {
|
|
8521
|
+
delete this.onceGrants[origin];
|
|
8522
|
+
removed += 1;
|
|
8523
|
+
}
|
|
8524
|
+
for (const [token, receipt] of this.documents) {
|
|
8525
|
+
if (receipt.origin === origin) this.documents.delete(token);
|
|
8526
|
+
}
|
|
8527
|
+
this.originEpochs.set(origin, (this.originEpochs.get(origin) ?? 0) + 1);
|
|
8528
|
+
if (this.store.origins[origin] !== void 0) {
|
|
8529
|
+
delete this.store.origins[origin];
|
|
8530
|
+
removed += 1;
|
|
8531
|
+
}
|
|
8532
|
+
if (this.sessionGrants.delete(origin)) removed += 1;
|
|
8533
|
+
const before = this.store.records.length;
|
|
8534
|
+
this.store.records = this.store.records.filter(
|
|
8535
|
+
(record) => record.origin !== origin
|
|
8536
|
+
);
|
|
8537
|
+
removed += before - this.store.records.length;
|
|
8538
|
+
const beforeSession = this.sessionRecords.length;
|
|
8539
|
+
this.sessionRecords = this.sessionRecords.filter(
|
|
8540
|
+
(record) => record.origin !== origin
|
|
8541
|
+
);
|
|
8542
|
+
removed += beforeSession - this.sessionRecords.length;
|
|
8543
|
+
try {
|
|
8544
|
+
const broad = broadGrantFor(new URL(origin));
|
|
8545
|
+
if (broad && this.store.siteGrants.grants[broad.key] !== void 0) {
|
|
8546
|
+
delete this.store.siteGrants.grants[broad.key];
|
|
8547
|
+
removed += 1;
|
|
8548
|
+
}
|
|
8549
|
+
} catch {
|
|
8550
|
+
}
|
|
8551
|
+
this.persist();
|
|
8552
|
+
this.onChanged();
|
|
8553
|
+
return removed;
|
|
8391
8554
|
}
|
|
8392
8555
|
/**
|
|
8393
8556
|
* Revoke every site approval.
|
|
@@ -8398,17 +8561,21 @@ class ApprovalStore {
|
|
|
8398
8561
|
* in the copy rather than left to look like a bug.
|
|
8399
8562
|
*/
|
|
8400
8563
|
revokeAll() {
|
|
8401
|
-
const removed = this.store.records.length;
|
|
8564
|
+
const removed = this.store.records.length + this.sessionRecords.length + Object.keys(this.onceGrants).length;
|
|
8402
8565
|
this.store.origins = {};
|
|
8403
8566
|
this.store.siteGrants = { version: 1, grants: {} };
|
|
8404
8567
|
this.store.records = [];
|
|
8405
8568
|
this.resetPending();
|
|
8569
|
+
this.sessionGrants.clear();
|
|
8570
|
+
this.sessionRecords = [];
|
|
8406
8571
|
this.persist();
|
|
8407
8572
|
this.onChanged();
|
|
8408
8573
|
return removed;
|
|
8409
8574
|
}
|
|
8410
8575
|
/** Drop everything about the pending flow. Used by the host-off toggle, which
|
|
8411
|
-
* tears the state file down so discovery is honest.
|
|
8576
|
+
* tears the state file down so discovery is honest. Deliberately keeps the
|
|
8577
|
+
* grants: turning the host off leaves the approvals inspectable and revocable
|
|
8578
|
+
* (design 9.4), it does not silently withdraw them. */
|
|
8412
8579
|
resetPending() {
|
|
8413
8580
|
this.revision += 1;
|
|
8414
8581
|
this.documents.clear();
|
|
@@ -8871,6 +9038,49 @@ class CdpPool {
|
|
|
8871
9038
|
for (const id2 of [...this.attachments.keys()]) await this.detach(id2);
|
|
8872
9039
|
}
|
|
8873
9040
|
}
|
|
9041
|
+
const CONSENT_TITLE = "Site approval needed";
|
|
9042
|
+
function consentBody(origin) {
|
|
9043
|
+
return `An agent wants to open ${origin}. Approve or deny it in the browser tab.`;
|
|
9044
|
+
}
|
|
9045
|
+
class ConsentNotifier {
|
|
9046
|
+
constructor(options) {
|
|
9047
|
+
this.options = options;
|
|
9048
|
+
}
|
|
9049
|
+
announced = /* @__PURE__ */ new Set();
|
|
9050
|
+
/**
|
|
9051
|
+
* Announce the pending entries that have not been announced yet.
|
|
9052
|
+
*
|
|
9053
|
+
* Called with the CURRENT pending list on every change rather than on an
|
|
9054
|
+
* "added" event: the store's change hook is one callback for a mutable set,
|
|
9055
|
+
* and a diff against what was already announced is both simpler and correct
|
|
9056
|
+
* when an entry is superseded and replaced by a new one with a new id.
|
|
9057
|
+
*/
|
|
9058
|
+
announce(pending) {
|
|
9059
|
+
const live = new Set(pending.map((entry) => entry.entryId));
|
|
9060
|
+
for (const entryId of [...this.announced]) {
|
|
9061
|
+
if (!live.has(entryId)) this.announced.delete(entryId);
|
|
9062
|
+
}
|
|
9063
|
+
if (this.options.show !== "focus") return;
|
|
9064
|
+
if (!electron.Notification.isSupported()) return;
|
|
9065
|
+
for (const entry of pending) {
|
|
9066
|
+
if (this.announced.has(entry.entryId)) continue;
|
|
9067
|
+
this.announced.add(entry.entryId);
|
|
9068
|
+
try {
|
|
9069
|
+
const notification = new electron.Notification({
|
|
9070
|
+
title: CONSENT_TITLE,
|
|
9071
|
+
body: consentBody(entry.origin),
|
|
9072
|
+
silent: false
|
|
9073
|
+
});
|
|
9074
|
+
notification.on("click", () => this.options.onAttention(entry.entryId));
|
|
9075
|
+
notification.show();
|
|
9076
|
+
} catch (error) {
|
|
9077
|
+
this.options.log?.(
|
|
9078
|
+
`[browser] could not raise a consent banner: ${String(error)}`
|
|
9079
|
+
);
|
|
9080
|
+
}
|
|
9081
|
+
}
|
|
9082
|
+
}
|
|
9083
|
+
}
|
|
8874
9084
|
function requesterOf(params, requestId2) {
|
|
8875
9085
|
const supplied = typeof params.requester === "string" ? params.requester.trim() : "";
|
|
8876
9086
|
return supplied.startsWith("session:") ? supplied : requestId2;
|
|
@@ -9581,6 +9791,7 @@ class TabRegistry {
|
|
|
9581
9791
|
nonce: restored || options.owner === "user" ? null : mintNonce(),
|
|
9582
9792
|
handedTo: null,
|
|
9583
9793
|
restored,
|
|
9794
|
+
restoreRow: options.restoreRow,
|
|
9584
9795
|
createdAt: Date.now(),
|
|
9585
9796
|
lastUsedAt: Date.now(),
|
|
9586
9797
|
epoch: 0,
|
|
@@ -9769,7 +9980,16 @@ class TabRegistry {
|
|
|
9769
9980
|
// ---- layout, visibility, activation --------------------------------------
|
|
9770
9981
|
/** The renderer owns presentation geometry, not whether a background renderer
|
|
9771
9982
|
* has a viewport. Inactive views keep bounded default dimensions independently
|
|
9772
|
-
* of this rectangle, so agent actions never require a route or focus change.
|
|
9983
|
+
* of this rectangle, so agent actions never require a route or focus change.
|
|
9984
|
+
*
|
|
9985
|
+
* A NULL rect still hides every view, and that is a correctness requirement
|
|
9986
|
+
* rather than a tidy-up: the browser surface is a ROUTE, so navigating away
|
|
9987
|
+
* unmounts the only thing that knows where the view belongs. Without this, the
|
|
9988
|
+
* last rect would stay applied and the native view would go on painting over
|
|
9989
|
+
* the chat route — the one failure mode that makes this feature look like a
|
|
9990
|
+
* hijacked window. Visiting the route again reports a fresh rect and restores
|
|
9991
|
+
* it. A null rect is also how the caller hides the view at teardown, so it must
|
|
9992
|
+
* never be swallowed on the way here (see `use-browser-chrome`). */
|
|
9773
9993
|
setContentRect(rect) {
|
|
9774
9994
|
this.contentRect = rect;
|
|
9775
9995
|
this.applyLayout();
|
|
@@ -10133,6 +10353,36 @@ const TAB_SCOPED = /* @__PURE__ */ new Set([
|
|
|
10133
10353
|
"close",
|
|
10134
10354
|
"retitle"
|
|
10135
10355
|
]);
|
|
10356
|
+
const RESTORE_CONCURRENCY = 4;
|
|
10357
|
+
const RESTORE_TAB_TIMEOUT_MS = 1e4;
|
|
10358
|
+
const RESTORE_BUDGET_MS = 8e3;
|
|
10359
|
+
function withTimeout(work, ms) {
|
|
10360
|
+
return new Promise((resolve, reject) => {
|
|
10361
|
+
const timer = setTimeout(
|
|
10362
|
+
() => reject(new Error(`timed out after ${ms}ms`)),
|
|
10363
|
+
ms
|
|
10364
|
+
);
|
|
10365
|
+
timer.unref?.();
|
|
10366
|
+
work.then(
|
|
10367
|
+
(value) => {
|
|
10368
|
+
clearTimeout(timer);
|
|
10369
|
+
resolve(value);
|
|
10370
|
+
},
|
|
10371
|
+
(error) => {
|
|
10372
|
+
clearTimeout(timer);
|
|
10373
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
10374
|
+
}
|
|
10375
|
+
);
|
|
10376
|
+
});
|
|
10377
|
+
}
|
|
10378
|
+
function isReportableLoadFailure(code) {
|
|
10379
|
+
return code !== 0 && code !== -3;
|
|
10380
|
+
}
|
|
10381
|
+
function sessionRequesterOf(requester) {
|
|
10382
|
+
if (!requester.startsWith("session:")) return null;
|
|
10383
|
+
const id2 = requester.slice("session:".length);
|
|
10384
|
+
return id2 || null;
|
|
10385
|
+
}
|
|
10136
10386
|
class BrowserHost {
|
|
10137
10387
|
registry;
|
|
10138
10388
|
cdp;
|
|
@@ -10141,6 +10391,21 @@ class BrowserHost {
|
|
|
10141
10391
|
log;
|
|
10142
10392
|
onChanged;
|
|
10143
10393
|
facts;
|
|
10394
|
+
/** The session's per-origin storage clear, injected (see `BrowserHostOptions`). */
|
|
10395
|
+
forgetSiteData;
|
|
10396
|
+
/**
|
|
10397
|
+
* The last main-frame load failure per tab, cleared by the next load.
|
|
10398
|
+
*
|
|
10399
|
+
* Keyed by `tabId` and DROPPED with the tab: this is a statement about a document
|
|
10400
|
+
* that a tab is (or is not) showing, so a recycled id or a closed tab must not be
|
|
10401
|
+
* able to inherit it.
|
|
10402
|
+
*/
|
|
10403
|
+
loadFailures = /* @__PURE__ */ new Map();
|
|
10404
|
+
/**
|
|
10405
|
+
* The background hydration pass, so a caller can wait for it without the host
|
|
10406
|
+
* ever making anyone wait for it. See `restoreTabs`.
|
|
10407
|
+
*/
|
|
10408
|
+
hydration = Promise.resolve();
|
|
10144
10409
|
constructor(options) {
|
|
10145
10410
|
this.registry = options.registry;
|
|
10146
10411
|
this.cdp = options.cdp;
|
|
@@ -10149,6 +10414,7 @@ class BrowserHost {
|
|
|
10149
10414
|
this.log = options.log;
|
|
10150
10415
|
this.onChanged = options.onChanged;
|
|
10151
10416
|
this.facts = options.facts;
|
|
10417
|
+
this.forgetSiteData = options.forgetSiteData;
|
|
10152
10418
|
}
|
|
10153
10419
|
/** Answer one wire request. The only place a method name becomes an action. */
|
|
10154
10420
|
async dispatch(method, params, requestId2) {
|
|
@@ -10301,6 +10567,49 @@ class BrowserHost {
|
|
|
10301
10567
|
* per-tab ownership markers. It never carries a nonce — the renderer is not an
|
|
10302
10568
|
* agent and has no reason to hold a capability (design 11.7).
|
|
10303
10569
|
*/
|
|
10570
|
+
/**
|
|
10571
|
+
* Record a main-frame load failure for a tab.
|
|
10572
|
+
*
|
|
10573
|
+
* Called from the view's own `did-fail-load`, which is the only place that knows a
|
|
10574
|
+
* navigation was refused by the network rather than by the gate. NOT recorded for
|
|
10575
|
+
* `ERR_ABORTED`, which is what a stop, a redirect chain and a superseded
|
|
10576
|
+
* navigation all report: those are the user's own browsing succeeding at
|
|
10577
|
+
* something, and presenting one as a failure would make the panel cry wolf on
|
|
10578
|
+
* every redirect (see `isReportableLoadFailure`).
|
|
10579
|
+
*/
|
|
10580
|
+
recordLoadFailure(tabId, failure) {
|
|
10581
|
+
if (!this.registry.get(tabId)) return;
|
|
10582
|
+
this.loadFailures.set(tabId, failure);
|
|
10583
|
+
this.onChanged();
|
|
10584
|
+
}
|
|
10585
|
+
/** The next navigation on this tab is under way, so the last failure is stale. */
|
|
10586
|
+
clearLoadFailure(tabId) {
|
|
10587
|
+
if (!this.loadFailures.delete(tabId)) return;
|
|
10588
|
+
this.onChanged();
|
|
10589
|
+
}
|
|
10590
|
+
/** The failure the chrome shows for the ACTIVE tab, or null. */
|
|
10591
|
+
activeLoadFailure(activeTabId) {
|
|
10592
|
+
if (activeTabId === null) return null;
|
|
10593
|
+
return this.loadFailures.get(activeTabId) ?? null;
|
|
10594
|
+
}
|
|
10595
|
+
/**
|
|
10596
|
+
* A tab title the chrome should show, or "" when the document has none.
|
|
10597
|
+
*
|
|
10598
|
+
* Chromium answers `about:blank` as the TITLE of a document that did not name
|
|
10599
|
+
* itself — a new tab, and a restored tab whose page has not committed yet — and
|
|
10600
|
+
* that is a URL the user never visited rather than a page name. The URL bar
|
|
10601
|
+
* already refuses to render it (`displayUrl` in the chrome maps it to an empty
|
|
10602
|
+
* field, for the same reason). Every other window onto a tab's name reads THIS
|
|
10603
|
+
* projection — the strip's label, its `Tab actions for …` and `Close …` labels,
|
|
10604
|
+
* the hand-over dialog's summary and the paused note — so the rule belongs here,
|
|
10605
|
+
* once, rather than five times in the renderer: an untitled tab arrives empty
|
|
10606
|
+
* and each surface falls back to its own words (the strip's "New tab").
|
|
10607
|
+
* (Review round 2, U3: the strip used to read `about:blank` in five places while
|
|
10608
|
+
* the bar showed nothing.)
|
|
10609
|
+
*/
|
|
10610
|
+
titleForChrome(title) {
|
|
10611
|
+
return title === "about:blank" ? "" : title;
|
|
10612
|
+
}
|
|
10304
10613
|
chromeState() {
|
|
10305
10614
|
const activeRecord = this.registry.activeTab;
|
|
10306
10615
|
const active = activeRecord && !activeRecord.view.webContents.isDestroyed() ? activeRecord : null;
|
|
@@ -10308,19 +10617,27 @@ class BrowserHost {
|
|
|
10308
10617
|
return {
|
|
10309
10618
|
tabs: this.registry.snapshot().map((entry) => ({
|
|
10310
10619
|
tabId: entry.tabId,
|
|
10311
|
-
title: entry.title || "New tab",
|
|
10620
|
+
title: this.titleForChrome(entry.title) || "New tab",
|
|
10312
10621
|
url: entry.url,
|
|
10313
10622
|
owner: entry.owner,
|
|
10314
10623
|
active: entry.active,
|
|
10315
10624
|
restored: entry.restored,
|
|
10316
|
-
handedOver: entry.handedTo !== null
|
|
10625
|
+
handedOver: entry.handedTo !== null,
|
|
10626
|
+
// Per TAB, not only for the active one: a background tab whose load was
|
|
10627
|
+
// refused has no other way to say so - its page area is blank and the
|
|
10628
|
+
// band belongs to the active tab - so the strip carries the mark.
|
|
10629
|
+
failed: this.loadFailures.has(entry.tabId)
|
|
10317
10630
|
})),
|
|
10318
10631
|
activeTabId: activeRecord?.tabId ?? null,
|
|
10319
10632
|
url: active ? active.view.webContents.getURL() : "",
|
|
10320
|
-
title: active ? active.view.webContents.getTitle() : "",
|
|
10633
|
+
title: active ? this.titleForChrome(active.view.webContents.getTitle()) : "",
|
|
10321
10634
|
loading: active ? active.view.webContents.isLoading() : false,
|
|
10322
10635
|
canGoBack: navigation ? navigation.canGoBack() : false,
|
|
10323
10636
|
canGoForward: navigation ? navigation.canGoForward() : false,
|
|
10637
|
+
// WHY the page area is empty, when it is. Null on a healthy tab, so the
|
|
10638
|
+
// chrome's failure panel is driven by a fact rather than by "the page looks
|
|
10639
|
+
// blank", which is also what a slow load and an empty document look like.
|
|
10640
|
+
navFailure: this.activeLoadFailure(activeRecord?.tabId ?? null),
|
|
10324
10641
|
// The consent surface (PR 7) renders from this. Exposed now so the
|
|
10325
10642
|
// transport does not need a second wire change when it lands, and so an
|
|
10326
10643
|
// evidence run can answer a prompt headlessly.
|
|
@@ -10329,7 +10646,38 @@ class BrowserHost {
|
|
|
10329
10646
|
origin: entry.origin,
|
|
10330
10647
|
authority: entry.displayAuthority,
|
|
10331
10648
|
broad: entry.broad ?? null,
|
|
10332
|
-
expiresAt: entry.expiresAt
|
|
10649
|
+
expiresAt: entry.expiresAt,
|
|
10650
|
+
// WHO IS ASKING, as an id the renderer may resolve and nothing more.
|
|
10651
|
+
//
|
|
10652
|
+
// The vendored queue says `requester` is an "authority boundary only. Never
|
|
10653
|
+
// render or include in ambient notifications", and the consent bar has to
|
|
10654
|
+
// tell the user which conversation they are authorising — in a
|
|
10655
|
+
// multi-conversation app, "An agent" beside five choices is not a decision
|
|
10656
|
+
// anyone can make (design round 1, D2). So what travels is the BARE lop
|
|
10657
|
+
// session id, which is not a credential: it is the id the app already puts
|
|
10658
|
+
// in its own chat routes, and it is exactly the value `handOver` matches
|
|
10659
|
+
// against. The renderer resolves it to a conversation title from the same
|
|
10660
|
+
// session list the hand-over dialog uses.
|
|
10661
|
+
//
|
|
10662
|
+
// STRICTLY `session:`-PREFIXED, which is why this does not reuse
|
|
10663
|
+
// `sessionIdOf`: that helper returns any non-session identity unchanged, and
|
|
10664
|
+
// a requester that is a bare request id (`actions/context.ts` falls back to
|
|
10665
|
+
// one) would then be published to the UI.
|
|
10666
|
+
requesterSessionId: sessionRequesterOf(entry.requester)
|
|
10667
|
+
})),
|
|
10668
|
+
// Which sites an agent may act on as the user RIGHT NOW (design 9.3's
|
|
10669
|
+
// honesty requirement). Shipped in the same projection as the strip rather
|
|
10670
|
+
// than behind a second channel: the answer is only useful next to the tabs
|
|
10671
|
+
// it applies to, and one subscription is one thing that can go stale.
|
|
10672
|
+
//
|
|
10673
|
+
// The `requester` on a record is deliberately NOT projected. The vendored
|
|
10674
|
+
// queue marks it "authority boundary only. Never render or include in
|
|
10675
|
+
// ambient notifications", so the list says which SITE and which SCOPE —
|
|
10676
|
+
// which is what the user's question is about — and never names a session.
|
|
10677
|
+
approvals: this.approvals.grants().map((record) => ({
|
|
10678
|
+
origin: record.origin,
|
|
10679
|
+
scope: record.scope,
|
|
10680
|
+
grantedAt: record.grantedAt
|
|
10333
10681
|
}))
|
|
10334
10682
|
};
|
|
10335
10683
|
}
|
|
@@ -10344,10 +10692,151 @@ class BrowserHost {
|
|
|
10344
10692
|
}
|
|
10345
10693
|
closeTab(tabId) {
|
|
10346
10694
|
this.dropReceipt(tabId);
|
|
10695
|
+
this.loadFailures.delete(tabId);
|
|
10347
10696
|
this.registry.destroy(tabId);
|
|
10348
10697
|
this.onChanged();
|
|
10349
10698
|
return this.chromeState();
|
|
10350
10699
|
}
|
|
10700
|
+
/**
|
|
10701
|
+
* Re-create the tabs a previous run recorded (design 7).
|
|
10702
|
+
*
|
|
10703
|
+
* THE THREE RULES THIS ENFORCES, each of which has a section behind it:
|
|
10704
|
+
*
|
|
10705
|
+
* 1. **A restored tab is the user's, with a FRESH tabId and NO nonce** (7.3).
|
|
10706
|
+
* That is `registry.create({owner: "user", restored: true})`, and it is why
|
|
10707
|
+
* a session holding `ui:<oldTabId>:<oldNonce>` gets the ordinary `tab_closed`
|
|
10708
|
+
* on its next action instead of silently reclaiming a tab whose authority
|
|
10709
|
+
* came off a file in `userData`. No special-case code exists for that
|
|
10710
|
+
* recovery, which is the point: the handle rule already produces it.
|
|
10711
|
+
* 2. **`navigationHistory.restore()` runs before anything navigates** (7.1):
|
|
10712
|
+
* Electron documents it as "recommended to call this API before any
|
|
10713
|
+
* navigation entries are created, so ideally before you call `loadURL()`".
|
|
10714
|
+
* That ordering is load-bearing here because `cdp.attach` gives a document
|
|
10715
|
+
* to any view that has never navigated — so attach runs AFTER the restore
|
|
10716
|
+
* has put a document in, or the `<about:blank>` it would load would replace
|
|
10717
|
+
* the restored stack with one blank entry.
|
|
10718
|
+
* 3. **Restoring does not steal the active tab** (11.4): the recorded active
|
|
10719
|
+
* tab is activated once, at the end, so a background tab's restore cannot
|
|
10720
|
+
* take the user's place.
|
|
10721
|
+
*
|
|
10722
|
+
* A restore that fails is logged and left as it is: the tab keeps whatever
|
|
10723
|
+
* Chromium managed to load, which is a blank tab rather than a broken one, and
|
|
10724
|
+
* blocking startup on a page that will not load is exactly what 7.2 forbids.
|
|
10725
|
+
*
|
|
10726
|
+
* TWO PHASES, because they have different clocks (review round 1, R5).
|
|
10727
|
+
*
|
|
10728
|
+
* 1. **Allocate, synchronously.** Every view, every tab id and the active tab are
|
|
10729
|
+
* settled before this method returns, off a list `readSession` has already
|
|
10730
|
+
* validated and bounded (`MAX_RESTORED_TABS`). So the strip is correct on the
|
|
10731
|
+
* first paint and the host can serve — an agent's `open`, the chrome's `state`
|
|
10732
|
+
* read — while the pages are still loading.
|
|
10733
|
+
* 2. **Hydrate, in the background.** `history.restore()` and `cdp.attach()` per
|
|
10734
|
+
* tab, four at a time, each with its own timeout, all under one overall budget.
|
|
10735
|
+
* A page that never answers delays nothing outside its own tab, and the pass
|
|
10736
|
+
* never withholds a host that is already usable.
|
|
10737
|
+
*
|
|
10738
|
+
* WHY NOT `Promise.all` AND `await`, which is what this was: it created one view
|
|
10739
|
+
* per entry with no concurrency bound and awaited every one of them before RPC
|
|
10740
|
+
* started, so a file with 256 valid rows produced 256 views and one hung page
|
|
10741
|
+
* withheld the browser host entirely. The `catch` around it bounded nothing at
|
|
10742
|
+
* all about the pending case.
|
|
10743
|
+
*
|
|
10744
|
+
* Allocating synchronously is also what keeps rule 3 true: the active tab is
|
|
10745
|
+
* set from the recorded flag before any page has loaded, rather than when the
|
|
10746
|
+
* last tab happens to finish — which was a tab activation arriving after the
|
|
10747
|
+
* user had already started working, taking their place for no reason they
|
|
10748
|
+
* could see.
|
|
10749
|
+
*/
|
|
10750
|
+
restoreTabs(tabs2) {
|
|
10751
|
+
if (!tabs2.length) {
|
|
10752
|
+
this.hydration = this.newTab().then(() => void 0);
|
|
10753
|
+
return this.chromeState();
|
|
10754
|
+
}
|
|
10755
|
+
const created = tabs2.map((recorded) => ({
|
|
10756
|
+
tabId: this.registry.create({
|
|
10757
|
+
owner: "user",
|
|
10758
|
+
restored: true,
|
|
10759
|
+
restoreRow: recorded
|
|
10760
|
+
}).tabId,
|
|
10761
|
+
recorded
|
|
10762
|
+
}));
|
|
10763
|
+
const wanted = created.find((entry) => entry.recorded.active)?.tabId ?? created.at(-1)?.tabId;
|
|
10764
|
+
if (wanted !== void 0) this.registry.activate(wanted);
|
|
10765
|
+
this.onChanged();
|
|
10766
|
+
this.hydration = this.hydrateRestored(created);
|
|
10767
|
+
return this.chromeState();
|
|
10768
|
+
}
|
|
10769
|
+
/** Wait for the background hydration pass. For tests and the proof run, which
|
|
10770
|
+
* want the tabs to have finished loading; nothing on a user's path calls it. */
|
|
10771
|
+
whenRestored() {
|
|
10772
|
+
return this.hydration;
|
|
10773
|
+
}
|
|
10774
|
+
/**
|
|
10775
|
+
* Apply each restored tab's history and debugger session, bounded.
|
|
10776
|
+
*
|
|
10777
|
+
* `Promise.allSettled` rather than `Promise.all`: the two steps below already turn
|
|
10778
|
+
* a failure into a log line, and a rejection here would be an unhandled rejection
|
|
10779
|
+
* on a promise only a test awaits.
|
|
10780
|
+
*/
|
|
10781
|
+
async hydrateRestored(created) {
|
|
10782
|
+
const deadline2 = Date.now() + RESTORE_BUDGET_MS;
|
|
10783
|
+
const queue = [...created];
|
|
10784
|
+
let reported = false;
|
|
10785
|
+
const worker = async () => {
|
|
10786
|
+
for (; ; ) {
|
|
10787
|
+
const next = queue.shift();
|
|
10788
|
+
if (!next) return;
|
|
10789
|
+
if (Date.now() >= deadline2) {
|
|
10790
|
+
if (!reported) {
|
|
10791
|
+
reported = true;
|
|
10792
|
+
this.log(
|
|
10793
|
+
`[browser] the ${RESTORE_BUDGET_MS}ms restore budget expired with ${queue.length + 1} tab(s) still loading; they keep loading in the background`
|
|
10794
|
+
);
|
|
10795
|
+
}
|
|
10796
|
+
return;
|
|
10797
|
+
}
|
|
10798
|
+
await this.hydrateOne(next.tabId, next.recorded);
|
|
10799
|
+
}
|
|
10800
|
+
};
|
|
10801
|
+
await Promise.allSettled(
|
|
10802
|
+
Array.from(
|
|
10803
|
+
{ length: Math.min(RESTORE_CONCURRENCY, created.length) },
|
|
10804
|
+
worker
|
|
10805
|
+
)
|
|
10806
|
+
);
|
|
10807
|
+
}
|
|
10808
|
+
/** One tab's half of the pass: the history stack, then the debugger session. */
|
|
10809
|
+
async hydrateOne(tabId, recorded) {
|
|
10810
|
+
const record = this.registry.get(tabId);
|
|
10811
|
+
if (!record) return;
|
|
10812
|
+
const contents = record.view.webContents;
|
|
10813
|
+
const history = contents.navigationHistory;
|
|
10814
|
+
const entry = recorded.entries[recorded.activeIndex];
|
|
10815
|
+
try {
|
|
10816
|
+
await withTimeout(
|
|
10817
|
+
history?.restore ? history.restore({
|
|
10818
|
+
entries: recorded.entries,
|
|
10819
|
+
index: recorded.activeIndex
|
|
10820
|
+
}) : (
|
|
10821
|
+
// The honest degradation (see `NavigationHistoryLike`): a view with no
|
|
10822
|
+
// history API still gets put back on the page it was showing, without
|
|
10823
|
+
// its stack and its page state.
|
|
10824
|
+
entry ? contents.loadURL(entry.url) : Promise.resolve()
|
|
10825
|
+
),
|
|
10826
|
+
RESTORE_TAB_TIMEOUT_MS
|
|
10827
|
+
);
|
|
10828
|
+
} catch (error) {
|
|
10829
|
+
this.log(`[browser] could not restore tab ${tabId}: ${String(error)}`);
|
|
10830
|
+
}
|
|
10831
|
+
if (!this.registry.get(tabId)) return;
|
|
10832
|
+
try {
|
|
10833
|
+
await withTimeout(this.cdp.attach(contents), RESTORE_TAB_TIMEOUT_MS);
|
|
10834
|
+
} catch (error) {
|
|
10835
|
+
this.log(
|
|
10836
|
+
`[browser] could not attach to restored tab ${tabId}: ${String(error)}`
|
|
10837
|
+
);
|
|
10838
|
+
}
|
|
10839
|
+
}
|
|
10351
10840
|
activateTab(tabId) {
|
|
10352
10841
|
this.registry.activate(tabId);
|
|
10353
10842
|
this.onChanged();
|
|
@@ -10452,6 +10941,38 @@ class BrowserHost {
|
|
|
10452
10941
|
this.onChanged();
|
|
10453
10942
|
return { ...result, ...this.chromeState() };
|
|
10454
10943
|
}
|
|
10944
|
+
/** Revoke one origin's approvals (design 9.4). Separate from closing a tab and
|
|
10945
|
+
* separate from clearing cookies: "stop this agent" and "forget this site" are
|
|
10946
|
+
* different intentions. */
|
|
10947
|
+
revokeApproval(origin) {
|
|
10948
|
+
const removed = this.approvals.revokeOrigin(origin);
|
|
10949
|
+
this.onChanged();
|
|
10950
|
+
return { removed, origin, ...this.chromeState() };
|
|
10951
|
+
}
|
|
10952
|
+
/** Revoke every site approval. Does not log the user out (design 9.4). */
|
|
10953
|
+
revokeAllApprovals() {
|
|
10954
|
+
const removed = this.approvals.revokeAll();
|
|
10955
|
+
this.onChanged();
|
|
10956
|
+
return { removed, ...this.chromeState() };
|
|
10957
|
+
}
|
|
10958
|
+
/**
|
|
10959
|
+
* "Forget this site" (design 9.4): withdraw the approval AND clear what this
|
|
10960
|
+
* app stored for that origin.
|
|
10961
|
+
*
|
|
10962
|
+
* Two effects in one affordance because they are one intention — the user
|
|
10963
|
+
* wanting the site gone from this app — while being explicit that they are two
|
|
10964
|
+
* mechanisms with two consequences: the revoke does not log them out, and the
|
|
10965
|
+
* storage clear does not restore a deny state. The confirmation in the chrome
|
|
10966
|
+
* says both rather than leaving the user to discover the second half.
|
|
10967
|
+
*/
|
|
10968
|
+
async forgetSite(rawOrigin) {
|
|
10969
|
+
const origin = safeHttpUrl(rawOrigin).origin;
|
|
10970
|
+
const removed = this.approvals.revokeOrigin(origin);
|
|
10971
|
+
await this.forgetSiteData(origin);
|
|
10972
|
+
this.log(`[browser] forgot ${origin}: ${removed} approval(s) revoked`);
|
|
10973
|
+
this.onChanged();
|
|
10974
|
+
return { origin, removed, ...this.chromeState() };
|
|
10975
|
+
}
|
|
10455
10976
|
/** The registry's handles, for a diagnostic or the `tabs` listing. */
|
|
10456
10977
|
handleFor(record) {
|
|
10457
10978
|
const token = surfaceToken(record);
|
|
@@ -10473,6 +10994,9 @@ const BROWSER_IPC_CHANNELS = [
|
|
|
10473
10994
|
"browser-hand-over",
|
|
10474
10995
|
"browser-revoke-hand-over",
|
|
10475
10996
|
"browser-consent-respond",
|
|
10997
|
+
"browser-revoke-approval",
|
|
10998
|
+
"browser-revoke-all-approvals",
|
|
10999
|
+
"browser-forget-site",
|
|
10476
11000
|
"browser-clear-data"
|
|
10477
11001
|
];
|
|
10478
11002
|
function registerBrowserIpc(options) {
|
|
@@ -10543,12 +11067,30 @@ function registerBrowserIpc(options) {
|
|
|
10543
11067
|
if (typeof entryId !== "string" || !entryId) {
|
|
10544
11068
|
throw new Error("A pending request id is required.");
|
|
10545
11069
|
}
|
|
10546
|
-
if (decision !== "once" && decision !== "site" && decision !== "domain" && decision !== "deny") {
|
|
11070
|
+
if (decision !== "once" && decision !== "session" && decision !== "site" && decision !== "domain" && decision !== "deny") {
|
|
10547
11071
|
throw new Error("Unsupported consent decision.");
|
|
10548
11072
|
}
|
|
10549
11073
|
return host.respondToConsent(entryId, decision);
|
|
10550
11074
|
}
|
|
10551
11075
|
);
|
|
11076
|
+
electron.ipcMain.handle("browser-revoke-approval", (event, origin) => {
|
|
11077
|
+
const host = authorize(event);
|
|
11078
|
+
if (typeof origin !== "string" || !origin.trim()) {
|
|
11079
|
+
throw new Error("An origin is required.");
|
|
11080
|
+
}
|
|
11081
|
+
return host.revokeApproval(origin.trim());
|
|
11082
|
+
});
|
|
11083
|
+
electron.ipcMain.handle(
|
|
11084
|
+
"browser-revoke-all-approvals",
|
|
11085
|
+
(event) => authorize(event).revokeAllApprovals()
|
|
11086
|
+
);
|
|
11087
|
+
electron.ipcMain.handle("browser-forget-site", async (event, origin) => {
|
|
11088
|
+
const host = authorize(event);
|
|
11089
|
+
if (typeof origin !== "string" || !origin.trim()) {
|
|
11090
|
+
throw new Error("An origin is required.");
|
|
11091
|
+
}
|
|
11092
|
+
return host.forgetSite(origin.trim());
|
|
11093
|
+
});
|
|
10552
11094
|
electron.ipcMain.handle("browser-clear-data", async (event, what) => {
|
|
10553
11095
|
authorize(event);
|
|
10554
11096
|
if (what !== "cookies" && what !== "cache" && what !== "everything") {
|
|
@@ -10947,6 +11489,23 @@ async function clearBrowsingData(browserSession, what) {
|
|
|
10947
11489
|
await browserSession.clearData();
|
|
10948
11490
|
await browserSession.clearCache();
|
|
10949
11491
|
}
|
|
11492
|
+
async function clearOriginData(browserSession, origin) {
|
|
11493
|
+
browserSession.flushStorageData();
|
|
11494
|
+
await browserSession.clearData({
|
|
11495
|
+
origins: [origin],
|
|
11496
|
+
originMatchingMode: "origin-in-all-contexts",
|
|
11497
|
+
dataTypes: [
|
|
11498
|
+
"cookies",
|
|
11499
|
+
"localStorage",
|
|
11500
|
+
"indexedDB",
|
|
11501
|
+
"serviceWorkers",
|
|
11502
|
+
"fileSystems",
|
|
11503
|
+
"webSQL",
|
|
11504
|
+
"backgroundFetch",
|
|
11505
|
+
"cache"
|
|
11506
|
+
]
|
|
11507
|
+
});
|
|
11508
|
+
}
|
|
10950
11509
|
function flushBrowserStorage(browserSession) {
|
|
10951
11510
|
try {
|
|
10952
11511
|
browserSession.flushStorageData();
|
|
@@ -11995,6 +12554,277 @@ function createHiddenCookieJarTarget(view) {
|
|
|
11995
12554
|
}
|
|
11996
12555
|
};
|
|
11997
12556
|
}
|
|
12557
|
+
const SESSION_FILENAME = "session.json";
|
|
12558
|
+
const MAX_SESSION_FILE_BYTES = 4 * 1024 * 1024;
|
|
12559
|
+
const MAX_RESTORED_TABS = 20;
|
|
12560
|
+
const MAX_RESTORED_ENTRIES = 50;
|
|
12561
|
+
const MAX_RESTORED_URL_CHARS = 2048;
|
|
12562
|
+
const MAX_RESTORED_PAGE_STATE_CHARS = 256 * 1024;
|
|
12563
|
+
const WRITE_DEBOUNCE_MS = 500;
|
|
12564
|
+
function restorable(entry) {
|
|
12565
|
+
if (typeof entry.url !== "string") return false;
|
|
12566
|
+
if (entry.url.length > MAX_RESTORED_URL_CHARS) return false;
|
|
12567
|
+
try {
|
|
12568
|
+
const url = new URL(entry.url);
|
|
12569
|
+
return url.protocol === "http:" || url.protocol === "https:";
|
|
12570
|
+
} catch {
|
|
12571
|
+
return false;
|
|
12572
|
+
}
|
|
12573
|
+
}
|
|
12574
|
+
function boundPageState(entry) {
|
|
12575
|
+
if (typeof entry.pageState !== "string" || entry.pageState.length <= MAX_RESTORED_PAGE_STATE_CHARS) {
|
|
12576
|
+
return entry;
|
|
12577
|
+
}
|
|
12578
|
+
const { pageState: _dropped, ...rest } = entry;
|
|
12579
|
+
return rest;
|
|
12580
|
+
}
|
|
12581
|
+
function boundEntries(entries, activeIndex) {
|
|
12582
|
+
if (entries.length <= MAX_RESTORED_ENTRIES) return { entries, activeIndex };
|
|
12583
|
+
const historyKept = Math.floor(MAX_RESTORED_ENTRIES / 4);
|
|
12584
|
+
const start = Math.max(
|
|
12585
|
+
0,
|
|
12586
|
+
Math.min(activeIndex - historyKept, entries.length - MAX_RESTORED_ENTRIES)
|
|
12587
|
+
);
|
|
12588
|
+
return {
|
|
12589
|
+
entries: entries.slice(start, start + MAX_RESTORED_ENTRIES),
|
|
12590
|
+
activeIndex: activeIndex - start
|
|
12591
|
+
};
|
|
12592
|
+
}
|
|
12593
|
+
function saneTab(raw) {
|
|
12594
|
+
if (!raw || typeof raw !== "object") return null;
|
|
12595
|
+
const candidate = raw;
|
|
12596
|
+
if (!Array.isArray(candidate.entries)) return null;
|
|
12597
|
+
const entries = candidate.entries.filter(
|
|
12598
|
+
(entry) => !!entry && typeof entry === "object" && typeof entry.url === "string"
|
|
12599
|
+
).filter(restorable).map(boundPageState);
|
|
12600
|
+
if (!entries.length) return null;
|
|
12601
|
+
const recorded = typeof candidate.activeIndex === "number" && Number.isInteger(candidate.activeIndex) && candidate.activeIndex >= 0 ? Math.min(
|
|
12602
|
+
candidate.activeIndex,
|
|
12603
|
+
candidate.entries.length - 1
|
|
12604
|
+
) : entries.length - 1;
|
|
12605
|
+
const survivorsBefore = candidate.entries.slice(0, recorded).filter(
|
|
12606
|
+
(entry) => !!entry && typeof entry === "object" && typeof entry.url === "string"
|
|
12607
|
+
).filter(restorable).length;
|
|
12608
|
+
const bounded = boundEntries(
|
|
12609
|
+
entries,
|
|
12610
|
+
Math.min(survivorsBefore, entries.length - 1)
|
|
12611
|
+
);
|
|
12612
|
+
return {
|
|
12613
|
+
owner: candidate.owner === "agent" ? "agent" : "user",
|
|
12614
|
+
active: candidate.active === true,
|
|
12615
|
+
entries: bounded.entries,
|
|
12616
|
+
activeIndex: bounded.activeIndex
|
|
12617
|
+
};
|
|
12618
|
+
}
|
|
12619
|
+
function boundTabs(tabs2) {
|
|
12620
|
+
if (tabs2.length <= MAX_RESTORED_TABS) return { kept: tabs2, dropped: 0 };
|
|
12621
|
+
const activeIndex = tabs2.findIndex((tab) => tab.active);
|
|
12622
|
+
const keep = /* @__PURE__ */ new Set();
|
|
12623
|
+
if (activeIndex >= 0) keep.add(activeIndex);
|
|
12624
|
+
for (let index = tabs2.length - 1; index >= 0 && keep.size < MAX_RESTORED_TABS; index -= 1) {
|
|
12625
|
+
keep.add(index);
|
|
12626
|
+
}
|
|
12627
|
+
const kept = tabs2.filter((_tab, index) => keep.has(index));
|
|
12628
|
+
return { kept, dropped: tabs2.length - kept.length };
|
|
12629
|
+
}
|
|
12630
|
+
function readSession(path2, log = () => {
|
|
12631
|
+
}) {
|
|
12632
|
+
try {
|
|
12633
|
+
const size = fs.statSync(path2, { throwIfNoEntry: false })?.size ?? 0;
|
|
12634
|
+
if (size > MAX_SESSION_FILE_BYTES) {
|
|
12635
|
+
log(
|
|
12636
|
+
`[browser] ignoring ${path2}: ${size} bytes is past the ${MAX_SESSION_FILE_BYTES}-byte restore budget`
|
|
12637
|
+
);
|
|
12638
|
+
return [];
|
|
12639
|
+
}
|
|
12640
|
+
const file = readJson(path2);
|
|
12641
|
+
if (!file) return [];
|
|
12642
|
+
if (file.version !== 1) {
|
|
12643
|
+
log(
|
|
12644
|
+
`[browser] ignoring ${path2}: version ${String(file.version)} is not one this build writes`
|
|
12645
|
+
);
|
|
12646
|
+
return [];
|
|
12647
|
+
}
|
|
12648
|
+
if (!Array.isArray(file.tabs)) return [];
|
|
12649
|
+
const sane = file.tabs.map(saneTab).filter((tab) => tab !== null);
|
|
12650
|
+
const { kept, dropped } = boundTabs(sane);
|
|
12651
|
+
if (dropped) {
|
|
12652
|
+
log(
|
|
12653
|
+
`[browser] restoring ${kept.length} of ${sane.length} recorded tabs; the cap keeps whichever tab was active plus the newest of the rest`
|
|
12654
|
+
);
|
|
12655
|
+
}
|
|
12656
|
+
return kept;
|
|
12657
|
+
} catch (error) {
|
|
12658
|
+
log(`[browser] could not read ${path2}: ${String(error)}`);
|
|
12659
|
+
return [];
|
|
12660
|
+
}
|
|
12661
|
+
}
|
|
12662
|
+
function stopSnapshotDecision(rows, durableRows) {
|
|
12663
|
+
if (rows < durableRows) {
|
|
12664
|
+
return {
|
|
12665
|
+
write: false,
|
|
12666
|
+
reason: `the quit-time capture holds ${rows} tab(s) and the record on disk holds ${durableRows}, so the record is kept`
|
|
12667
|
+
};
|
|
12668
|
+
}
|
|
12669
|
+
return {
|
|
12670
|
+
write: true,
|
|
12671
|
+
reason: `the quit-time capture holds ${rows} tab(s) and the record on disk holds ${durableRows}`
|
|
12672
|
+
};
|
|
12673
|
+
}
|
|
12674
|
+
function captureTabs(records, activeTabId) {
|
|
12675
|
+
const captured = [];
|
|
12676
|
+
for (const record of records) {
|
|
12677
|
+
const contents = record.view.webContents;
|
|
12678
|
+
const history = contents.isDestroyed() ? void 0 : contents.navigationHistory;
|
|
12679
|
+
const entries = history?.getAllEntries && history.getActiveIndex ? history.getAllEntries().map((entry) => ({
|
|
12680
|
+
url: entry.url,
|
|
12681
|
+
title: entry.title,
|
|
12682
|
+
...entry.pageState ? { pageState: entry.pageState } : {}
|
|
12683
|
+
})) : [];
|
|
12684
|
+
if (entries.some(restorable)) {
|
|
12685
|
+
captured.push({
|
|
12686
|
+
owner: record.owner,
|
|
12687
|
+
active: record.tabId === activeTabId,
|
|
12688
|
+
entries,
|
|
12689
|
+
activeIndex: Math.max(0, history?.getActiveIndex?.() ?? 0)
|
|
12690
|
+
});
|
|
12691
|
+
continue;
|
|
12692
|
+
}
|
|
12693
|
+
const restored = record.restoreRow;
|
|
12694
|
+
if (restored) {
|
|
12695
|
+
captured.push({
|
|
12696
|
+
owner: record.owner,
|
|
12697
|
+
active: record.tabId === activeTabId,
|
|
12698
|
+
entries: restored.entries,
|
|
12699
|
+
activeIndex: restored.activeIndex
|
|
12700
|
+
});
|
|
12701
|
+
}
|
|
12702
|
+
}
|
|
12703
|
+
return captured;
|
|
12704
|
+
}
|
|
12705
|
+
class BrowserSessionStore {
|
|
12706
|
+
path;
|
|
12707
|
+
log;
|
|
12708
|
+
debounceMs;
|
|
12709
|
+
timer = null;
|
|
12710
|
+
pending = null;
|
|
12711
|
+
/** Set by `commitStopCapture`: from then on this store stages nothing more. */
|
|
12712
|
+
sealed = false;
|
|
12713
|
+
constructor(options) {
|
|
12714
|
+
this.path = path$1.join(options.dir, SESSION_FILENAME);
|
|
12715
|
+
this.log = options.log ?? (() => {
|
|
12716
|
+
});
|
|
12717
|
+
this.debounceMs = options.debounceMs ?? WRITE_DEBOUNCE_MS;
|
|
12718
|
+
}
|
|
12719
|
+
get filePath() {
|
|
12720
|
+
return this.path;
|
|
12721
|
+
}
|
|
12722
|
+
/** Record the current tabs, to be written after the debounce.
|
|
12723
|
+
*
|
|
12724
|
+
* A SEALED STORE IGNORES THIS (review round 3, B2's MAJOR). The stop path has
|
|
12725
|
+
* already made the last write decision this process gets to make, and the
|
|
12726
|
+
* capture that arrives afterwards is not a change to record: it is a view's
|
|
12727
|
+
* `destroyed` handler running during teardown, which is exactly the capture
|
|
12728
|
+
* that is short for a reason that is not the user's doing. Accepting it would
|
|
12729
|
+
* put the refused content back in `pending` for the next `flush()` to write,
|
|
12730
|
+
* which is the data loss the decision exists to prevent. The guard therefore
|
|
12731
|
+
* lives here, at the only writer, rather than at the call site that happens to
|
|
12732
|
+
* be running when the views die. */
|
|
12733
|
+
record(tabs2) {
|
|
12734
|
+
if (this.sealed) return;
|
|
12735
|
+
this.pending = tabs2;
|
|
12736
|
+
if (this.timer) clearTimeout(this.timer);
|
|
12737
|
+
this.timer = setTimeout(() => this.flush(), this.debounceMs);
|
|
12738
|
+
this.timer.unref?.();
|
|
12739
|
+
}
|
|
12740
|
+
/** Commit the quit-time capture: stage it, or refuse it and TAKE BACK what is
|
|
12741
|
+
* staged. Returns the decision so the caller can log which happened.
|
|
12742
|
+
*
|
|
12743
|
+
* WHY THE STORE OWNS THIS, rather than the host's stop path deciding and the
|
|
12744
|
+
* store writing whatever happened to be pending (review round 3, B2's MAJOR).
|
|
12745
|
+
* The stop path is not the only writer of `pending`: every `notifyChanged`
|
|
12746
|
+
* during teardown stages one, and the measured ordering - the views destroyed
|
|
12747
|
+
* BEFORE `stop()` runs - stages a short capture first and then reaches the
|
|
12748
|
+
* decision. `flush()` writes `pending` regardless of what the decision said,
|
|
12749
|
+
* so a refusal that only declined to call `record()` was undone by the flush a
|
|
12750
|
+
* line later: 3 rows durable, 1 row captured, decision `write: false`, 1 row on
|
|
12751
|
+
* disk. Refusing and then writing the refused content is the original B2 loss
|
|
12752
|
+
* through a different door. Making the decision binding means the refused
|
|
12753
|
+
* capture must be dropped before anything can flush it, and the seal must
|
|
12754
|
+
* outlive the call so no later capture can stage it again.
|
|
12755
|
+
*
|
|
12756
|
+
* WHAT IT DOES NOT DO: it does not read the capture's CONTENT, and it does not
|
|
12757
|
+
* compare it against the durable rows. The rule is `stopSnapshotDecision`'s and
|
|
12758
|
+
* is deliberately one-sided on a COUNT (see its comment).
|
|
12759
|
+
*
|
|
12760
|
+
* TWO INSTRUMENTS MEASURED THE DEFECT AND THEY DISAGREED ON SEVERITY, which is
|
|
12761
|
+
* worth keeping beside the fix. The reviewer drove the shipped classes and got
|
|
12762
|
+
* DATA LOSS - `durableRows 3 / atStop 1 / decision write false`, ONE row on disk,
|
|
12763
|
+
* the durable three gone. The independent QA pass drove six stop cases and lost
|
|
12764
|
+
* NO session across any of them, and called the same defect a write that should
|
|
12765
|
+
* not have happened: "the stop logs `the record is kept`, then `flush()` writes
|
|
12766
|
+
* the pending refused capture". Both descriptions are of ONE mechanism, and the
|
|
12767
|
+
* difference between them is the LENGTH CONDITION: the loss needs a staged
|
|
12768
|
+
* capture SHORTER than the durable record - a restored tab with no history of
|
|
12769
|
+
* its own yet, or a page that never committed - which is exactly the scenario
|
|
12770
|
+
* the guard exists for and not one that QA's six cases happened to open. A guard
|
|
12771
|
+
* that holds only when the two lengths agree is not a guard, so this is a fix
|
|
12772
|
+
* rather than a note, and the test beside it drives the length condition
|
|
12773
|
+
* explicitly instead of a representative sequence. */
|
|
12774
|
+
commitStopCapture(rows) {
|
|
12775
|
+
const decision = stopSnapshotDecision(
|
|
12776
|
+
rows.length,
|
|
12777
|
+
readSession(this.path, this.log).length
|
|
12778
|
+
);
|
|
12779
|
+
if (decision.write) {
|
|
12780
|
+
this.record(rows);
|
|
12781
|
+
} else {
|
|
12782
|
+
this.discard();
|
|
12783
|
+
}
|
|
12784
|
+
this.sealed = true;
|
|
12785
|
+
return decision;
|
|
12786
|
+
}
|
|
12787
|
+
/** Take back whatever `record()` staged, without writing it. */
|
|
12788
|
+
discard() {
|
|
12789
|
+
if (this.timer) {
|
|
12790
|
+
clearTimeout(this.timer);
|
|
12791
|
+
this.timer = null;
|
|
12792
|
+
}
|
|
12793
|
+
this.pending = null;
|
|
12794
|
+
}
|
|
12795
|
+
/** Write now, if anything is pending. Called from the host's stop path, so a
|
|
12796
|
+
* quit (or a window close, which stops the host) never loses the last change
|
|
12797
|
+
* to a debounce that was still ticking. */
|
|
12798
|
+
flush() {
|
|
12799
|
+
if (this.timer) {
|
|
12800
|
+
clearTimeout(this.timer);
|
|
12801
|
+
this.timer = null;
|
|
12802
|
+
}
|
|
12803
|
+
const tabs2 = this.pending;
|
|
12804
|
+
this.pending = null;
|
|
12805
|
+
if (!tabs2) return;
|
|
12806
|
+
const file = { version: 1, tabs: tabs2 };
|
|
12807
|
+
if (!writeJsonAtomic(this.path, file)) {
|
|
12808
|
+
this.log(
|
|
12809
|
+
`[browser] could not write the session file at ${this.path}; tabs will not be restored`
|
|
12810
|
+
);
|
|
12811
|
+
}
|
|
12812
|
+
}
|
|
12813
|
+
/** Drop the file. Used when the restore decision is "not this time" — the
|
|
12814
|
+
* session is policy, so a user who wants it gone gets it gone. */
|
|
12815
|
+
clear() {
|
|
12816
|
+
if (this.timer) {
|
|
12817
|
+
clearTimeout(this.timer);
|
|
12818
|
+
this.timer = null;
|
|
12819
|
+
}
|
|
12820
|
+
this.pending = null;
|
|
12821
|
+
try {
|
|
12822
|
+
fs.rmSync(this.path, { force: true });
|
|
12823
|
+
} catch (error) {
|
|
12824
|
+
this.log(`[browser] could not remove ${this.path}: ${String(error)}`);
|
|
12825
|
+
}
|
|
12826
|
+
}
|
|
12827
|
+
}
|
|
11998
12828
|
const PSL_RULES = "ac\ncom.ac\nedu.ac\ngov.ac\nmil.ac\nnet.ac\norg.ac\nad\nae\nac.ae\nco.ae\ngov.ae\nmil.ae\nnet.ae\norg.ae\nsch.ae\naero\nairline.aero\nairport.aero\naccident-investigation.aero\naccident-prevention.aero\naerobatic.aero\naeroclub.aero\naerodrome.aero\nagents.aero\nair-surveillance.aero\nair-traffic-control.aero\naircraft.aero\nairtraffic.aero\nambulance.aero\nassociation.aero\nauthor.aero\nballooning.aero\nbroker.aero\ncaa.aero\ncargo.aero\ncatering.aero\ncertification.aero\nchampionship.aero\ncharter.aero\ncivilaviation.aero\nclub.aero\nconference.aero\nconsultant.aero\nconsulting.aero\ncontrol.aero\ncouncil.aero\ncrew.aero\ndesign.aero\ndgca.aero\neducator.aero\nemergency.aero\nengine.aero\nengineer.aero\nentertainment.aero\nequipment.aero\nexchange.aero\nexpress.aero\nfederation.aero\nflight.aero\nfreight.aero\nfuel.aero\ngliding.aero\ngovernment.aero\ngroundhandling.aero\ngroup.aero\nhanggliding.aero\nhomebuilt.aero\ninsurance.aero\njournal.aero\njournalist.aero\nleasing.aero\nlogistics.aero\nmagazine.aero\nmaintenance.aero\nmarketplace.aero\nmedia.aero\nmicrolight.aero\nmodelling.aero\nnavigation.aero\nparachuting.aero\nparagliding.aero\npassenger-association.aero\npilot.aero\npress.aero\nproduction.aero\nrecreation.aero\nrepbody.aero\nres.aero\nresearch.aero\nrotorcraft.aero\nsafety.aero\nscientist.aero\nservices.aero\nshow.aero\nskydiving.aero\nsoftware.aero\nstudent.aero\ntaxi.aero\ntrader.aero\ntrading.aero\ntrainer.aero\nunion.aero\nworkinggroup.aero\nworks.aero\naf\ncom.af\nedu.af\ngov.af\nnet.af\norg.af\nag\nco.ag\ncom.ag\nnet.ag\nnom.ag\norg.ag\nai\ncom.ai\nnet.ai\noff.ai\norg.ai\nal\ncom.al\nedu.al\ngov.al\nmil.al\nnet.al\norg.al\nam\nco.am\ncom.am\ncommune.am\nnet.am\norg.am\nao\nco.ao\ned.ao\nedu.ao\ngov.ao\ngv.ao\nit.ao\nog.ao\norg.ao\npb.ao\naq\nar\nbet.ar\ncom.ar\ncoop.ar\nedu.ar\ngob.ar\ngov.ar\nint.ar\nmil.ar\nmusica.ar\nmutual.ar\nnet.ar\norg.ar\nseg.ar\nsenasa.ar\ntur.ar\narpa\ne164.arpa\nhome.arpa\nin-addr.arpa\nip6.arpa\niris.arpa\nuri.arpa\nurn.arpa\nas\ngov.as\nasia\nat\nac.at\nsth.ac.at\nco.at\ngv.at\nor.at\nau\nasn.au\ncom.au\nedu.au\ngov.au\nid.au\nnet.au\norg.au\nconf.au\noz.au\nact.au\nnsw.au\nnt.au\nqld.au\nsa.au\ntas.au\nvic.au\nwa.au\nact.edu.au\ncatholic.edu.au\nnsw.edu.au\nnt.edu.au\nqld.edu.au\nsa.edu.au\ntas.edu.au\nvic.edu.au\nwa.edu.au\nqld.gov.au\nsa.gov.au\ntas.gov.au\nvic.gov.au\nwa.gov.au\naw\ncom.aw\nax\naz\nbiz.az\nco.az\ncom.az\nedu.az\ngov.az\ninfo.az\nint.az\nmil.az\nname.az\nnet.az\norg.az\npp.az\npro.az\nba\ncom.ba\nedu.ba\ngov.ba\nmil.ba\nnet.ba\norg.ba\nbb\nbiz.bb\nco.bb\ncom.bb\nedu.bb\ngov.bb\ninfo.bb\nnet.bb\norg.bb\nstore.bb\ntv.bb\nbd\nac.bd\nai.bd\nco.bd\ncom.bd\nedu.bd\ngov.bd\nid.bd\ninfo.bd\nit.bd\nmil.bd\nnet.bd\norg.bd\nsch.bd\ntv.bd\nbe\nac.be\nbf\ngov.bf\nbg\n0.bg\n1.bg\n2.bg\n3.bg\n4.bg\n5.bg\n6.bg\n7.bg\n8.bg\n9.bg\na.bg\nb.bg\nc.bg\nd.bg\ne.bg\nf.bg\ng.bg\nh.bg\ni.bg\nj.bg\nk.bg\nl.bg\nm.bg\nn.bg\no.bg\np.bg\nq.bg\nr.bg\ns.bg\nt.bg\nu.bg\nv.bg\nw.bg\nx.bg\ny.bg\nz.bg\nbh\ncom.bh\nedu.bh\ngov.bh\nnet.bh\norg.bh\nbi\nco.bi\ncom.bi\nedu.bi\nor.bi\norg.bi\nbiz\nbj\nafrica.bj\nagro.bj\narchitectes.bj\nassur.bj\navocats.bj\nco.bj\ncom.bj\neco.bj\necono.bj\nedu.bj\ninfo.bj\nloisirs.bj\nmoney.bj\nnet.bj\norg.bj\note.bj\nrestaurant.bj\nresto.bj\ntourism.bj\nuniv.bj\nbm\ncom.bm\nedu.bm\ngov.bm\nnet.bm\norg.bm\nbn\ncom.bn\nedu.bn\ngov.bn\nnet.bn\norg.bn\nbo\ncom.bo\nedu.bo\ngob.bo\nint.bo\nmil.bo\nnet.bo\norg.bo\ntv.bo\nweb.bo\nacademia.bo\nagro.bo\narte.bo\nblog.bo\nbolivia.bo\nciencia.bo\ncooperativa.bo\ndemocracia.bo\ndeporte.bo\necologia.bo\neconomia.bo\nempresa.bo\nia.bo\nindigena.bo\nindustria.bo\ninfo.bo\nmedicina.bo\nmovimiento.bo\nmusica.bo\nnatural.bo\nnombre.bo\nnoticias.bo\npatria.bo\nplurinacional.bo\npolitica.bo\nprofesional.bo\npueblo.bo\nrevista.bo\nsalud.bo\ntecnologia.bo\ntksat.bo\ntransporte.bo\nwiki.bo\nbr\n9guacu.br\nabc.br\nadm.br\nadv.br\nagr.br\naju.br\nam.br\nanani.br\naparecida.br\napi.br\napp.br\narq.br\nart.br\nato.br\nb.br\nbarueri.br\nbelem.br\nbet.br\nbhz.br\nbib.br\nbio.br\nblog.br\nbmd.br\nboavista.br\nbsb.br\ncampinagrande.br\ncampinas.br\ncaxias.br\ncim.br\ncng.br\ncnt.br\ncom.br\ncontagem.br\ncoop.br\ncoz.br\ncri.br\ncuiaba.br\ncuritiba.br\ndef.br\ndes.br\ndet.br\ndev.br\necn.br\neco.br\nedu.br\nemp.br\nenf.br\neng.br\nesp.br\netc.br\neti.br\nfar.br\nfeira.br\nflog.br\nfloripa.br\nfm.br\nfnd.br\nfortal.br\nfot.br\nfoz.br\nfst.br\ng12.br\ngeo.br\nggf.br\ngoiania.br\ngov.br\nac.gov.br\nal.gov.br\nam.gov.br\nap.gov.br\nba.gov.br\nce.gov.br\ndf.gov.br\nes.gov.br\ngo.gov.br\nma.gov.br\nmg.gov.br\nms.gov.br\nmt.gov.br\npa.gov.br\npb.gov.br\npe.gov.br\npi.gov.br\npr.gov.br\nrj.gov.br\nrn.gov.br\nro.gov.br\nrr.gov.br\nrs.gov.br\nsc.gov.br\nse.gov.br\nsp.gov.br\nto.gov.br\ngru.br\nia.br\nimb.br\nind.br\ninf.br\njab.br\njampa.br\njdf.br\njoinville.br\njor.br\njus.br\nleg.br\nleilao.br\nlel.br\nlog.br\nlondrina.br\nmacapa.br\nmaceio.br\nmanaus.br\nmaringa.br\nmat.br\nmed.br\nmil.br\nmorena.br\nmp.br\nmus.br\nnatal.br\nnet.br\nniteroi.br\n*.nom.br\nnot.br\nntr.br\nodo.br\nong.br\norg.br\nosasco.br\npalmas.br\npoa.br\nppg.br\npro.br\npsc.br\npsi.br\npvh.br\nqsl.br\nradio.br\nrec.br\nrecife.br\nrep.br\nribeirao.br\nrio.br\nriobranco.br\nriopreto.br\nsalvador.br\nsampa.br\nsantamaria.br\nsantoandre.br\nsaobernardo.br\nsaogonca.br\nseg.br\nsjc.br\nslg.br\nslz.br\nsocial.br\nsorocaba.br\nsrv.br\ntaxi.br\ntc.br\ntec.br\nteo.br\nthe.br\ntmp.br\ntrd.br\ntur.br\ntv.br\nudi.br\nvet.br\nvix.br\nvlog.br\nwiki.br\nxyz.br\nzlg.br\nbs\ncom.bs\nedu.bs\ngov.bs\nnet.bs\norg.bs\nbt\ncom.bt\nedu.bt\ngov.bt\nnet.bt\norg.bt\nbv\nbw\nac.bw\nco.bw\ngov.bw\nnet.bw\norg.bw\nby\ngov.by\nmil.by\ncom.by\nof.by\nbz\nco.bz\ncom.bz\nedu.bz\ngov.bz\nnet.bz\norg.bz\nca\nab.ca\nbc.ca\nmb.ca\nnb.ca\nnf.ca\nnl.ca\nns.ca\nnt.ca\nnu.ca\non.ca\npe.ca\nqc.ca\nsk.ca\nyk.ca\ngc.ca\ncat\ncc\ncd\ngov.cd\ncf\ncg\nch\nci\nac.ci\nxn--aroport-bya.ci\nasso.ci\nco.ci\ncom.ci\ned.ci\nedu.ci\ngo.ci\ngouv.ci\nint.ci\nnet.ci\nor.ci\norg.ci\n*.ck\n!www.ck\ncl\nco.cl\ngob.cl\ngov.cl\nmil.cl\ncm\nco.cm\ncom.cm\ngov.cm\nnet.cm\ncn\nac.cn\ncom.cn\nedu.cn\ngov.cn\nmil.cn\nnet.cn\norg.cn\nxn--55qx5d.cn\nxn--od0alg.cn\nxn--io0a7i.cn\nah.cn\nbj.cn\ncq.cn\nfj.cn\ngd.cn\ngs.cn\ngx.cn\ngz.cn\nha.cn\nhb.cn\nhe.cn\nhi.cn\nhk.cn\nhl.cn\nhn.cn\njl.cn\njs.cn\njx.cn\nln.cn\nmo.cn\nnm.cn\nnx.cn\nqh.cn\nsc.cn\nsd.cn\nsh.cn\nsn.cn\nsx.cn\ntj.cn\ntw.cn\nxj.cn\nxz.cn\nyn.cn\nzj.cn\nco\ncom.co\nedu.co\ngov.co\nmil.co\nnet.co\nnom.co\norg.co\ncom\ncoop\ncr\nac.cr\nco.cr\ned.cr\nfi.cr\ngo.cr\nor.cr\nsa.cr\ncu\ncom.cu\nedu.cu\ngob.cu\ninf.cu\nnat.cu\nnet.cu\norg.cu\ncv\ncom.cv\nedu.cv\nid.cv\nint.cv\nnet.cv\nnome.cv\norg.cv\npubl.cv\ncw\ncom.cw\nedu.cw\nnet.cw\norg.cw\ncx\ngov.cx\ncy\nac.cy\nbiz.cy\ncom.cy\nekloges.cy\ngov.cy\nltd.cy\nmil.cy\nnet.cy\norg.cy\npress.cy\npro.cy\ntm.cy\ncz\ngov.cz\nde\ndj\ndk\ndm\nco.dm\ncom.dm\nedu.dm\ngov.dm\nnet.dm\norg.dm\ndo\nart.do\ncom.do\nedu.do\ngob.do\ngov.do\nmil.do\nnet.do\norg.do\nsld.do\nweb.do\ndz\nart.dz\nasso.dz\ncom.dz\nedu.dz\ngov.dz\nnet.dz\norg.dz\npol.dz\nsoc.dz\ntm.dz\nec\nabg.ec\nadm.ec\nagron.ec\narqt.ec\nart.ec\nbar.ec\nchef.ec\ncom.ec\ncont.ec\ncpa.ec\ncue.ec\ndent.ec\ndgn.ec\ndisco.ec\ndoc.ec\nedu.ec\neng.ec\nesm.ec\nfin.ec\nfot.ec\ngal.ec\ngob.ec\ngov.ec\ngye.ec\nibr.ec\ninfo.ec\nk12.ec\nlat.ec\nloj.ec\nmed.ec\nmil.ec\nmktg.ec\nmon.ec\nnet.ec\nntr.ec\nodont.ec\norg.ec\npro.ec\nprof.ec\npsic.ec\npsiq.ec\npub.ec\nrio.ec\nrrpp.ec\nsal.ec\ntech.ec\ntul.ec\ntur.ec\nuio.ec\nvet.ec\nxxx.ec\nedu\nee\naip.ee\ncom.ee\nedu.ee\nfie.ee\ngov.ee\nlib.ee\nmed.ee\norg.ee\npri.ee\nriik.ee\neg\nac.eg\ncom.eg\nedu.eg\neun.eg\ngov.eg\ninfo.eg\nme.eg\nmil.eg\nname.eg\nnet.eg\norg.eg\nsci.eg\nsport.eg\ntv.eg\n*.er\nes\ncom.es\nedu.es\ngob.es\nnom.es\norg.es\net\nbiz.et\ncom.et\nedu.et\ngov.et\ninfo.et\nname.et\nnet.et\norg.et\neu\nfi\naland.fi\nfj\nac.fj\nbiz.fj\ncom.fj\nedu.fj\ngov.fj\nid.fj\ninfo.fj\nmil.fj\nname.fj\nnet.fj\norg.fj\npro.fj\n*.fk\nfm\ncom.fm\nedu.fm\nnet.fm\norg.fm\nfo\nfr\nasso.fr\ncom.fr\ngouv.fr\nnom.fr\nprd.fr\ntm.fr\navoues.fr\ncci.fr\ngreta.fr\nhuissier-justice.fr\nga\ngb\ngd\nedu.gd\ngov.gd\nge\ncom.ge\ncyb.ge\nedu.ge\ngov.ge\nllc.ge\nnet.ge\nonline.ge\norg.ge\npvt.ge\nschool.ge\ntnx.ge\ngf\ngg\nco.gg\nnet.gg\norg.gg\ngh\nbiz.gh\ncom.gh\nedu.gh\ngov.gh\nmil.gh\nnet.gh\norg.gh\ngi\ncom.gi\nedu.gi\ngov.gi\nltd.gi\nmod.gi\norg.gi\ngl\nco.gl\ncom.gl\nedu.gl\nnet.gl\norg.gl\ngm\ngn\nac.gn\ncom.gn\nedu.gn\ngov.gn\nnet.gn\norg.gn\ngov\ngp\nasso.gp\ncom.gp\nedu.gp\nmobi.gp\nnet.gp\norg.gp\ngq\ngr\ncom.gr\nedu.gr\ngov.gr\nnet.gr\norg.gr\ngs\ngt\ncom.gt\nedu.gt\ngob.gt\nind.gt\nmil.gt\nnet.gt\norg.gt\ngu\ncom.gu\nedu.gu\ngov.gu\nguam.gu\ninfo.gu\nnet.gu\norg.gu\nweb.gu\ngw\ngy\nco.gy\ncom.gy\nedu.gy\ngov.gy\nnet.gy\norg.gy\nhk\ncom.hk\nedu.hk\ngov.hk\nidv.hk\nnet.hk\norg.hk\nxn--ciqpn.hk\nxn--gmqw5a.hk\nxn--55qx5d.hk\nxn--mxtq1m.hk\nxn--lcvr32d.hk\nxn--wcvs22d.hk\nxn--gmq050i.hk\nxn--uc0atv.hk\nxn--uc0ay4a.hk\nxn--od0alg.hk\nxn--zf0avx.hk\nxn--mk0axi.hk\nxn--tn0ag.hk\nxn--od0aq3b.hk\nxn--io0a7i.hk\nhm\nhn\ncom.hn\nedu.hn\ngob.hn\nmil.hn\nnet.hn\norg.hn\nhr\ncom.hr\nfrom.hr\niz.hr\nname.hr\nht\nadult.ht\nart.ht\nasso.ht\ncom.ht\ncoop.ht\nedu.ht\nfirm.ht\ngouv.ht\ninfo.ht\nmed.ht\nnet.ht\norg.ht\nperso.ht\npol.ht\npro.ht\nrel.ht\nshop.ht\nhu\n2000.hu\nagrar.hu\nbolt.hu\ncasino.hu\ncity.hu\nco.hu\nerotica.hu\nerotika.hu\nfilm.hu\nforum.hu\ngames.hu\nhotel.hu\ninfo.hu\ningatlan.hu\njogasz.hu\nkonyvelo.hu\nlakas.hu\nmedia.hu\nnews.hu\norg.hu\npriv.hu\nreklam.hu\nsex.hu\nshop.hu\nsport.hu\nsuli.hu\nszex.hu\ntm.hu\ntozsde.hu\nutazas.hu\nvideo.hu\nid\nac.id\nai.id\nbiz.id\nco.id\ndesa.id\ngo.id\nkop.id\nmil.id\nmy.id\nnet.id\nor.id\nponpes.id\nsch.id\nweb.id\nxn--9tfky.id\nie\ngov.ie\nil\nac.il\nco.il\ngov.il\nidf.il\nk12.il\nmuni.il\nnet.il\norg.il\nxn--4dbrk0ce\nxn--4dbgdty6c.xn--4dbrk0ce\nxn--5dbhl8d.xn--4dbrk0ce\nxn--8dbq2a.xn--4dbrk0ce\nxn--hebda8b.xn--4dbrk0ce\nim\nac.im\nco.im\nltd.co.im\nplc.co.im\ncom.im\nnet.im\norg.im\ntt.im\ntv.im\nin\n5g.in\n6g.in\nac.in\naero.in\nai.in\nalumni.in\nam.in\nbank.in\nbihar.in\nbiz.in\nbusiness.in\nca.in\ncn.in\nco.in\ncom.in\ncoop.in\ncs.in\ndelhi.in\ndr.in\nedu.in\ner.in\nfin.in\nfirm.in\ngen.in\ngov.in\ngujarat.in\nind.in\ninfo.in\nint.in\ninternet.in\nio.in\nme.in\nmil.in\nnet.in\nnic.in\norg.in\npg.in\npost.in\npro.in\nres.in\nschool.in\ntravel.in\ntv.in\nub.in\nuk.in\nup.in\nus.in\ninfo\nint\neu.int\nio\nco.io\ncom.io\nedu.io\ngov.io\nmil.io\nnet.io\nnom.io\norg.io\niq\ncom.iq\nedu.iq\ngov.iq\nmil.iq\nnet.iq\norg.iq\nir\nac.ir\nco.ir\ngov.ir\nid.ir\nnet.ir\norg.ir\nsch.ir\nxn--mgba3a4f16a.ir\nxn--mgba3a4fra.ir\nis\nit\nedu.it\ngov.it\nabr.it\nabruzzo.it\naosta-valley.it\naostavalley.it\nbas.it\nbasilicata.it\ncal.it\ncalabria.it\ncam.it\ncampania.it\nemilia-romagna.it\nemiliaromagna.it\nemr.it\nfriuli-v-giulia.it\nfriuli-ve-giulia.it\nfriuli-vegiulia.it\nfriuli-venezia-giulia.it\nfriuli-veneziagiulia.it\nfriuli-vgiulia.it\nfriuliv-giulia.it\nfriulive-giulia.it\nfriulivegiulia.it\nfriulivenezia-giulia.it\nfriuliveneziagiulia.it\nfriulivgiulia.it\nfvg.it\nlaz.it\nlazio.it\nlig.it\nliguria.it\nlom.it\nlombardia.it\nlombardy.it\nlucania.it\nmar.it\nmarche.it\nmol.it\nmolise.it\npiedmont.it\npiemonte.it\npmn.it\npug.it\npuglia.it\nsar.it\nsardegna.it\nsardinia.it\nsic.it\nsicilia.it\nsicily.it\ntaa.it\ntos.it\ntoscana.it\ntrentin-sud-tirol.it\nxn--trentin-sd-tirol-rzb.it\ntrentin-sudtirol.it\nxn--trentin-sdtirol-7vb.it\ntrentin-sued-tirol.it\ntrentin-suedtirol.it\ntrentino-a-adige.it\ntrentino-aadige.it\ntrentino-alto-adige.it\ntrentino-altoadige.it\ntrentino-s-tirol.it\ntrentino-stirol.it\ntrentino-sud-tirol.it\nxn--trentino-sd-tirol-c3b.it\ntrentino-sudtirol.it\nxn--trentino-sdtirol-szb.it\ntrentino-sued-tirol.it\ntrentino-suedtirol.it\ntrentinoa-adige.it\ntrentinoaadige.it\ntrentinoalto-adige.it\ntrentinoaltoadige.it\ntrentinos-tirol.it\ntrentinostirol.it\ntrentinosud-tirol.it\nxn--trentinosd-tirol-rzb.it\nxn--trentinosdtirol-7vb.it\ntrentinosued-tirol.it\ntrentinosuedtirol.it\ntrentinsud-tirol.it\nxn--trentinsd-tirol-6vb.it\ntrentinsudtirol.it\nxn--trentinsdtirol-nsb.it\ntrentinsued-tirol.it\ntrentinsuedtirol.it\ntuscany.it\numb.it\numbria.it\nval-d-aosta.it\nval-daosta.it\nvald-aosta.it\nvalle-aosta.it\nvalle-d-aosta.it\nvalle-daosta.it\nvalleaosta.it\nvalled-aosta.it\nvalledaosta.it\nvallee-aoste.it\nxn--valle-aoste-ebb.it\nvallee-d-aoste.it\nxn--valle-d-aoste-ehb.it\nvalleeaoste.it\nxn--valleaoste-e7a.it\nvalleedaoste.it\nxn--valledaoste-ebb.it\nvao.it\nvda.it\nven.it\nveneto.it\nag.it\nagrigento.it\nal.it\nalessandria.it\nalto-adige.it\naltoadige.it\nan.it\nancona.it\nandria-barletta-trani.it\nandria-trani-barletta.it\nandriabarlettatrani.it\nandriatranibarletta.it\nao.it\naosta.it\naoste.it\nap.it\naq.it\nar.it\narezzo.it\nascoli-piceno.it\nascolipiceno.it\nasti.it\nat.it\nav.it\navellino.it\nba.it\nbalsan.it\nbalsan-sudtirol.it\nxn--balsan-sdtirol-nsb.it\nbalsan-suedtirol.it\nbari.it\nbarletta-trani-andria.it\nbarlettatraniandria.it\nbelluno.it\nbenevento.it\nbergamo.it\nbg.it\nbi.it\nbiella.it\nbl.it\nbn.it\nbo.it\nbologna.it\nbolzano.it\nbolzano-altoadige.it\nbozen.it\nbozen-sudtirol.it\nxn--bozen-sdtirol-2ob.it\nbozen-suedtirol.it\nbr.it\nbrescia.it\nbrindisi.it\nbs.it\nbt.it\nbulsan.it\nbulsan-sudtirol.it\nxn--bulsan-sdtirol-nsb.it\nbulsan-suedtirol.it\nbz.it\nca.it\ncagliari.it\ncaltanissetta.it\ncampidano-medio.it\ncampidanomedio.it\ncampobasso.it\ncarbonia-iglesias.it\ncarboniaiglesias.it\ncarrara-massa.it\ncarraramassa.it\ncaserta.it\ncatania.it\ncatanzaro.it\ncb.it\nce.it\ncesena-forli.it\nxn--cesena-forl-mcb.it\ncesenaforli.it\nxn--cesenaforl-i8a.it\nch.it\nchieti.it\nci.it\ncl.it\ncn.it\nco.it\ncomo.it\ncosenza.it\ncr.it\ncremona.it\ncrotone.it\ncs.it\nct.it\ncuneo.it\ncz.it\ndell-ogliastra.it\ndellogliastra.it\nen.it\nenna.it\nfc.it\nfe.it\nfermo.it\nferrara.it\nfg.it\nfi.it\nfirenze.it\nflorence.it\nfm.it\nfoggia.it\nforli-cesena.it\nxn--forl-cesena-fcb.it\nforlicesena.it\nxn--forlcesena-c8a.it\nfr.it\nfrosinone.it\nge.it\ngenoa.it\ngenova.it\ngo.it\ngorizia.it\ngr.it\ngrosseto.it\niglesias-carbonia.it\niglesiascarbonia.it\nim.it\nimperia.it\nis.it\nisernia.it\nkr.it\nla-spezia.it\nlaquila.it\nlaspezia.it\nlatina.it\nlc.it\nle.it\nlecce.it\nlecco.it\nli.it\nlivorno.it\nlo.it\nlodi.it\nlt.it\nlu.it\nlucca.it\nmacerata.it\nmantova.it\nmassa-carrara.it\nmassacarrara.it\nmatera.it\nmb.it\nmc.it\nme.it\nmedio-campidano.it\nmediocampidano.it\nmessina.it\nmi.it\nmilan.it\nmilano.it\nmn.it\nmo.it\nmodena.it\nmonza.it\nmonza-brianza.it\nmonza-e-della-brianza.it\nmonzabrianza.it\nmonzaebrianza.it\nmonzaedellabrianza.it\nms.it\nmt.it\nna.it\nnaples.it\nnapoli.it\nno.it\nnovara.it\nnu.it\nnuoro.it\nog.it\nogliastra.it\nolbia-tempio.it\nolbiatempio.it\nor.it\noristano.it\not.it\npa.it\npadova.it\npadua.it\npalermo.it\nparma.it\npavia.it\npc.it\npd.it\npe.it\nperugia.it\npesaro-urbino.it\npesarourbino.it\npescara.it\npg.it\npi.it\npiacenza.it\npisa.it\npistoia.it\npn.it\npo.it\npordenone.it\npotenza.it\npr.it\nprato.it\npt.it\npu.it\npv.it\npz.it\nra.it\nragusa.it\nravenna.it\nrc.it\nre.it\nreggio-calabria.it\nreggio-emilia.it\nreggiocalabria.it\nreggioemilia.it\nrg.it\nri.it\nrieti.it\nrimini.it\nrm.it\nrn.it\nro.it\nroma.it\nrome.it\nrovigo.it\nsa.it\nsalerno.it\nsassari.it\nsavona.it\nsi.it\nsiena.it\nsiracusa.it\nso.it\nsondrio.it\nsp.it\nsr.it\nss.it\nsu.it\nsud-sardegna.it\nsudsardegna.it\nxn--sdtirol-n2a.it\nsuedtirol.it\nsv.it\nta.it\ntaranto.it\nte.it\ntempio-olbia.it\ntempioolbia.it\nteramo.it\nterni.it\ntn.it\nto.it\ntorino.it\ntp.it\ntr.it\ntrani-andria-barletta.it\ntrani-barletta-andria.it\ntraniandriabarletta.it\ntranibarlettaandria.it\ntrapani.it\ntrentino.it\ntrento.it\ntreviso.it\ntrieste.it\nts.it\nturin.it\ntv.it\nud.it\nudine.it\nurbino-pesaro.it\nurbinopesaro.it\nva.it\nvarese.it\nvb.it\nvc.it\nve.it\nvenezia.it\nvenice.it\nverbania.it\nverbano-cusio-ossola.it\nvercelli.it\nverona.it\nvi.it\nvibo-valentia.it\nvibovalentia.it\nvicenza.it\nviterbo.it\nvr.it\nvs.it\nvt.it\nvv.it\nje\nco.je\nnet.je\norg.je\n*.jm\njo\nagri.jo\nai.jo\ncom.jo\nedu.jo\neng.jo\nfm.jo\ngov.jo\nmil.jo\nnet.jo\norg.jo\nper.jo\nphd.jo\nsch.jo\ntv.jo\njobs\njp\nac.jp\nad.jp\nco.jp\ned.jp\ngo.jp\ngr.jp\nlg.jp\nne.jp\nor.jp\naichi.jp\nakita.jp\naomori.jp\nchiba.jp\nehime.jp\nfukui.jp\nfukuoka.jp\nfukushima.jp\ngifu.jp\ngunma.jp\nhiroshima.jp\nhokkaido.jp\nhyogo.jp\nibaraki.jp\nishikawa.jp\niwate.jp\nkagawa.jp\nkagoshima.jp\nkanagawa.jp\nkochi.jp\nkumamoto.jp\nkyoto.jp\nmie.jp\nmiyagi.jp\nmiyazaki.jp\nnagano.jp\nnagasaki.jp\nnara.jp\nniigata.jp\noita.jp\nokayama.jp\nokinawa.jp\nosaka.jp\nsaga.jp\nsaitama.jp\nshiga.jp\nshimane.jp\nshizuoka.jp\ntochigi.jp\ntokushima.jp\ntokyo.jp\ntottori.jp\ntoyama.jp\nwakayama.jp\nyamagata.jp\nyamaguchi.jp\nyamanashi.jp\nxn--ehqz56n.jp\nxn--1lqs03n.jp\nxn--qqqt11m.jp\nxn--f6qx53a.jp\nxn--djrs72d6uy.jp\nxn--mkru45i.jp\nxn--0trq7p7nn.jp\nxn--5js045d.jp\nxn--kbrq7o.jp\nxn--pssu33l.jp\nxn--ntsq17g.jp\nxn--uisz3g.jp\nxn--6btw5a.jp\nxn--1ctwo.jp\nxn--6orx2r.jp\nxn--rht61e.jp\nxn--rht27z.jp\nxn--nit225k.jp\nxn--rht3d.jp\nxn--djty4k.jp\nxn--klty5x.jp\nxn--kltx9a.jp\nxn--kltp7d.jp\nxn--c3s14m.jp\nxn--vgu402c.jp\nxn--efvn9s.jp\nxn--1lqs71d.jp\nxn--4pvxs.jp\nxn--uuwu58a.jp\nxn--zbx025d.jp\nxn--8pvr4u.jp\nxn--5rtp49c.jp\nxn--ntso0iqx3a.jp\nxn--elqq16h.jp\nxn--4it168d.jp\nxn--klt787d.jp\nxn--rny31h.jp\nxn--7t0a264c.jp\nxn--uist22h.jp\nxn--8ltr62k.jp\nxn--2m4a15e.jp\nxn--32vp30h.jp\nxn--4it797k.jp\nxn--5rtq34k.jp\nxn--k7yn95e.jp\nxn--tor131o.jp\nxn--d5qv7z876c.jp\n*.kawasaki.jp\n!city.kawasaki.jp\n*.kitakyushu.jp\n!city.kitakyushu.jp\n*.kobe.jp\n!city.kobe.jp\n*.nagoya.jp\n!city.nagoya.jp\n*.sapporo.jp\n!city.sapporo.jp\n*.sendai.jp\n!city.sendai.jp\n*.yokohama.jp\n!city.yokohama.jp\naisai.aichi.jp\nama.aichi.jp\nanjo.aichi.jp\nasuke.aichi.jp\nchiryu.aichi.jp\nchita.aichi.jp\nfuso.aichi.jp\ngamagori.aichi.jp\nhanda.aichi.jp\nhazu.aichi.jp\nhekinan.aichi.jp\nhigashiura.aichi.jp\nichinomiya.aichi.jp\ninazawa.aichi.jp\ninuyama.aichi.jp\nisshiki.aichi.jp\niwakura.aichi.jp\nkanie.aichi.jp\nkariya.aichi.jp\nkasugai.aichi.jp\nkira.aichi.jp\nkiyosu.aichi.jp\nkomaki.aichi.jp\nkonan.aichi.jp\nkota.aichi.jp\nmihama.aichi.jp\nmiyoshi.aichi.jp\nnishio.aichi.jp\nnisshin.aichi.jp\nobu.aichi.jp\noguchi.aichi.jp\noharu.aichi.jp\nokazaki.aichi.jp\nowariasahi.aichi.jp\nseto.aichi.jp\nshikatsu.aichi.jp\nshinshiro.aichi.jp\nshitara.aichi.jp\ntahara.aichi.jp\ntakahama.aichi.jp\ntobishima.aichi.jp\ntoei.aichi.jp\ntogo.aichi.jp\ntokai.aichi.jp\ntokoname.aichi.jp\ntoyoake.aichi.jp\ntoyohashi.aichi.jp\ntoyokawa.aichi.jp\ntoyone.aichi.jp\ntoyota.aichi.jp\ntsushima.aichi.jp\nyatomi.aichi.jp\nakita.akita.jp\ndaisen.akita.jp\nfujisato.akita.jp\ngojome.akita.jp\nhachirogata.akita.jp\nhappou.akita.jp\nhigashinaruse.akita.jp\nhonjo.akita.jp\nhonjyo.akita.jp\nikawa.akita.jp\nkamikoani.akita.jp\nkamioka.akita.jp\nkatagami.akita.jp\nkazuno.akita.jp\nkitaakita.akita.jp\nkosaka.akita.jp\nkyowa.akita.jp\nmisato.akita.jp\nmitane.akita.jp\nmoriyoshi.akita.jp\nnikaho.akita.jp\nnoshiro.akita.jp\nodate.akita.jp\noga.akita.jp\nogata.akita.jp\nsemboku.akita.jp\nyokote.akita.jp\nyurihonjo.akita.jp\naomori.aomori.jp\ngonohe.aomori.jp\nhachinohe.aomori.jp\nhashikami.aomori.jp\nhiranai.aomori.jp\nhirosaki.aomori.jp\nitayanagi.aomori.jp\nkuroishi.aomori.jp\nmisawa.aomori.jp\nmutsu.aomori.jp\nnakadomari.aomori.jp\nnoheji.aomori.jp\noirase.aomori.jp\nowani.aomori.jp\nrokunohe.aomori.jp\nsannohe.aomori.jp\nshichinohe.aomori.jp\nshingo.aomori.jp\ntakko.aomori.jp\ntowada.aomori.jp\ntsugaru.aomori.jp\ntsuruta.aomori.jp\nabiko.chiba.jp\nasahi.chiba.jp\nchonan.chiba.jp\nchosei.chiba.jp\nchoshi.chiba.jp\nchuo.chiba.jp\nfunabashi.chiba.jp\nfuttsu.chiba.jp\nhanamigawa.chiba.jp\nichihara.chiba.jp\nichikawa.chiba.jp\nichinomiya.chiba.jp\ninzai.chiba.jp\nisumi.chiba.jp\nkamagaya.chiba.jp\nkamogawa.chiba.jp\nkashiwa.chiba.jp\nkatori.chiba.jp\nkatsuura.chiba.jp\nkimitsu.chiba.jp\nkisarazu.chiba.jp\nkozaki.chiba.jp\nkujukuri.chiba.jp\nkyonan.chiba.jp\nmatsudo.chiba.jp\nmidori.chiba.jp\nmihama.chiba.jp\nminamiboso.chiba.jp\nmobara.chiba.jp\nmutsuzawa.chiba.jp\nnagara.chiba.jp\nnagareyama.chiba.jp\nnarashino.chiba.jp\nnarita.chiba.jp\nnoda.chiba.jp\noamishirasato.chiba.jp\nomigawa.chiba.jp\nonjuku.chiba.jp\notaki.chiba.jp\nsakae.chiba.jp\nsakura.chiba.jp\nshimofusa.chiba.jp\nshirako.chiba.jp\nshiroi.chiba.jp\nshisui.chiba.jp\nsodegaura.chiba.jp\nsosa.chiba.jp\ntako.chiba.jp\ntateyama.chiba.jp\ntogane.chiba.jp\ntohnosho.chiba.jp\ntomisato.chiba.jp\nurayasu.chiba.jp\nyachimata.chiba.jp\nyachiyo.chiba.jp\nyokaichiba.chiba.jp\nyokoshibahikari.chiba.jp\nyotsukaido.chiba.jp\nainan.ehime.jp\nhonai.ehime.jp\nikata.ehime.jp\nimabari.ehime.jp\niyo.ehime.jp\nkamijima.ehime.jp\nkihoku.ehime.jp\nkumakogen.ehime.jp\nmasaki.ehime.jp\nmatsuno.ehime.jp\nmatsuyama.ehime.jp\nnamikata.ehime.jp\nniihama.ehime.jp\nozu.ehime.jp\nsaijo.ehime.jp\nseiyo.ehime.jp\nshikokuchuo.ehime.jp\ntobe.ehime.jp\ntoon.ehime.jp\nuchiko.ehime.jp\nuwajima.ehime.jp\nyawatahama.ehime.jp\nechizen.fukui.jp\neiheiji.fukui.jp\nfukui.fukui.jp\nikeda.fukui.jp\nkatsuyama.fukui.jp\nmihama.fukui.jp\nminamiechizen.fukui.jp\nobama.fukui.jp\nohi.fukui.jp\nono.fukui.jp\nsabae.fukui.jp\nsakai.fukui.jp\ntakahama.fukui.jp\ntsuruga.fukui.jp\nwakasa.fukui.jp\nashiya.fukuoka.jp\nbuzen.fukuoka.jp\nchikugo.fukuoka.jp\nchikuho.fukuoka.jp\nchikujo.fukuoka.jp\nchikushino.fukuoka.jp\nchikuzen.fukuoka.jp\nchuo.fukuoka.jp\ndazaifu.fukuoka.jp\nfukuchi.fukuoka.jp\nhakata.fukuoka.jp\nhigashi.fukuoka.jp\nhirokawa.fukuoka.jp\nhisayama.fukuoka.jp\niizuka.fukuoka.jp\ninatsuki.fukuoka.jp\nkaho.fukuoka.jp\nkasuga.fukuoka.jp\nkasuya.fukuoka.jp\nkawara.fukuoka.jp\nkeisen.fukuoka.jp\nkoga.fukuoka.jp\nkurate.fukuoka.jp\nkurogi.fukuoka.jp\nkurume.fukuoka.jp\nminami.fukuoka.jp\nmiyako.fukuoka.jp\nmiyama.fukuoka.jp\nmiyawaka.fukuoka.jp\nmizumaki.fukuoka.jp\nmunakata.fukuoka.jp\nnakagawa.fukuoka.jp\nnakama.fukuoka.jp\nnishi.fukuoka.jp\nnogata.fukuoka.jp\nogori.fukuoka.jp\nokagaki.fukuoka.jp\nokawa.fukuoka.jp\noki.fukuoka.jp\nomuta.fukuoka.jp\nonga.fukuoka.jp\nonojo.fukuoka.jp\noto.fukuoka.jp\nsaigawa.fukuoka.jp\nsasaguri.fukuoka.jp\nshingu.fukuoka.jp\nshinyoshitomi.fukuoka.jp\nshonai.fukuoka.jp\nsoeda.fukuoka.jp\nsue.fukuoka.jp\ntachiarai.fukuoka.jp\ntagawa.fukuoka.jp\ntakata.fukuoka.jp\ntoho.fukuoka.jp\ntoyotsu.fukuoka.jp\ntsuiki.fukuoka.jp\nukiha.fukuoka.jp\numi.fukuoka.jp\nusui.fukuoka.jp\nyamada.fukuoka.jp\nyame.fukuoka.jp\nyanagawa.fukuoka.jp\nyukuhashi.fukuoka.jp\naizubange.fukushima.jp\naizumisato.fukushima.jp\naizuwakamatsu.fukushima.jp\nasakawa.fukushima.jp\nbandai.fukushima.jp\ndate.fukushima.jp\nfukushima.fukushima.jp\nfurudono.fukushima.jp\nfutaba.fukushima.jp\nhanawa.fukushima.jp\nhigashi.fukushima.jp\nhirata.fukushima.jp\nhirono.fukushima.jp\niitate.fukushima.jp\ninawashiro.fukushima.jp\nishikawa.fukushima.jp\niwaki.fukushima.jp\nizumizaki.fukushima.jp\nkagamiishi.fukushima.jp\nkaneyama.fukushima.jp\nkawamata.fukushima.jp\nkitakata.fukushima.jp\nkitashiobara.fukushima.jp\nkoori.fukushima.jp\nkoriyama.fukushima.jp\nkunimi.fukushima.jp\nmiharu.fukushima.jp\nmishima.fukushima.jp\nnamie.fukushima.jp\nnango.fukushima.jp\nnishiaizu.fukushima.jp\nnishigo.fukushima.jp\nokuma.fukushima.jp\nomotego.fukushima.jp\nono.fukushima.jp\notama.fukushima.jp\nsamegawa.fukushima.jp\nshimogo.fukushima.jp\nshirakawa.fukushima.jp\nshowa.fukushima.jp\nsoma.fukushima.jp\nsukagawa.fukushima.jp\ntaishin.fukushima.jp\ntamakawa.fukushima.jp\ntanagura.fukushima.jp\ntenei.fukushima.jp\nyabuki.fukushima.jp\nyamato.fukushima.jp\nyamatsuri.fukushima.jp\nyanaizu.fukushima.jp\nyugawa.fukushima.jp\nanpachi.gifu.jp\nena.gifu.jp\ngifu.gifu.jp\nginan.gifu.jp\ngodo.gifu.jp\ngujo.gifu.jp\nhashima.gifu.jp\nhichiso.gifu.jp\nhida.gifu.jp\nhigashishirakawa.gifu.jp\nibigawa.gifu.jp\nikeda.gifu.jp\nkakamigahara.gifu.jp\nkani.gifu.jp\nkasahara.gifu.jp\nkasamatsu.gifu.jp\nkawaue.gifu.jp\nkitagata.gifu.jp\nmino.gifu.jp\nminokamo.gifu.jp\nmitake.gifu.jp\nmizunami.gifu.jp\nmotosu.gifu.jp\nnakatsugawa.gifu.jp\nogaki.gifu.jp\nsakahogi.gifu.jp\nseki.gifu.jp\nsekigahara.gifu.jp\nshirakawa.gifu.jp\ntajimi.gifu.jp\ntakayama.gifu.jp\ntarui.gifu.jp\ntoki.gifu.jp\ntomika.gifu.jp\nwanouchi.gifu.jp\nyamagata.gifu.jp\nyaotsu.gifu.jp\nyoro.gifu.jp\nannaka.gunma.jp\nchiyoda.gunma.jp\nfujioka.gunma.jp\nhigashiagatsuma.gunma.jp\nisesaki.gunma.jp\nitakura.gunma.jp\nkanna.gunma.jp\nkanra.gunma.jp\nkatashina.gunma.jp\nkawaba.gunma.jp\nkiryu.gunma.jp\nkusatsu.gunma.jp\nmaebashi.gunma.jp\nmeiwa.gunma.jp\nmidori.gunma.jp\nminakami.gunma.jp\nnaganohara.gunma.jp\nnakanojo.gunma.jp\nnanmoku.gunma.jp\nnumata.gunma.jp\noizumi.gunma.jp\nora.gunma.jp\nota.gunma.jp\nshibukawa.gunma.jp\nshimonita.gunma.jp\nshinto.gunma.jp\nshowa.gunma.jp\ntakasaki.gunma.jp\ntakayama.gunma.jp\ntamamura.gunma.jp\ntatebayashi.gunma.jp\ntomioka.gunma.jp\ntsukiyono.gunma.jp\ntsumagoi.gunma.jp\nueno.gunma.jp\nyoshioka.gunma.jp\nasaminami.hiroshima.jp\ndaiwa.hiroshima.jp\netajima.hiroshima.jp\nfuchu.hiroshima.jp\nfukuyama.hiroshima.jp\nhatsukaichi.hiroshima.jp\nhigashihiroshima.hiroshima.jp\nhongo.hiroshima.jp\njinsekikogen.hiroshima.jp\nkaita.hiroshima.jp\nkui.hiroshima.jp\nkumano.hiroshima.jp\nkure.hiroshima.jp\nmihara.hiroshima.jp\nmiyoshi.hiroshima.jp\nnaka.hiroshima.jp\nonomichi.hiroshima.jp\nosakikamijima.hiroshima.jp\notake.hiroshima.jp\nsaka.hiroshima.jp\nsera.hiroshima.jp\nseranishi.hiroshima.jp\nshinichi.hiroshima.jp\nshobara.hiroshima.jp\ntakehara.hiroshima.jp\nabashiri.hokkaido.jp\nabira.hokkaido.jp\naibetsu.hokkaido.jp\nakabira.hokkaido.jp\nakkeshi.hokkaido.jp\nasahikawa.hokkaido.jp\nashibetsu.hokkaido.jp\nashoro.hokkaido.jp\nassabu.hokkaido.jp\natsuma.hokkaido.jp\nbibai.hokkaido.jp\nbiei.hokkaido.jp\nbifuka.hokkaido.jp\nbihoro.hokkaido.jp\nbiratori.hokkaido.jp\nchippubetsu.hokkaido.jp\nchitose.hokkaido.jp\ndate.hokkaido.jp\nebetsu.hokkaido.jp\nembetsu.hokkaido.jp\neniwa.hokkaido.jp\nerimo.hokkaido.jp\nesan.hokkaido.jp\nesashi.hokkaido.jp\nfukagawa.hokkaido.jp\nfukushima.hokkaido.jp\nfurano.hokkaido.jp\nfurubira.hokkaido.jp\nhaboro.hokkaido.jp\nhakodate.hokkaido.jp\nhamatonbetsu.hokkaido.jp\nhidaka.hokkaido.jp\nhigashikagura.hokkaido.jp\nhigashikawa.hokkaido.jp\nhiroo.hokkaido.jp\nhokuryu.hokkaido.jp\nhokuto.hokkaido.jp\nhonbetsu.hokkaido.jp\nhorokanai.hokkaido.jp\nhoronobe.hokkaido.jp\nikeda.hokkaido.jp\nimakane.hokkaido.jp\nishikari.hokkaido.jp\niwamizawa.hokkaido.jp\niwanai.hokkaido.jp\nkamifurano.hokkaido.jp\nkamikawa.hokkaido.jp\nkamishihoro.hokkaido.jp\nkamisunagawa.hokkaido.jp\nkamoenai.hokkaido.jp\nkayabe.hokkaido.jp\nkembuchi.hokkaido.jp\nkikonai.hokkaido.jp\nkimobetsu.hokkaido.jp\nkitahiroshima.hokkaido.jp\nkitami.hokkaido.jp\nkiyosato.hokkaido.jp\nkoshimizu.hokkaido.jp\nkunneppu.hokkaido.jp\nkuriyama.hokkaido.jp\nkuromatsunai.hokkaido.jp\nkushiro.hokkaido.jp\nkutchan.hokkaido.jp\nkyowa.hokkaido.jp\nmashike.hokkaido.jp\nmatsumae.hokkaido.jp\nmikasa.hokkaido.jp\nminamifurano.hokkaido.jp\nmombetsu.hokkaido.jp\nmoseushi.hokkaido.jp\nmukawa.hokkaido.jp\nmuroran.hokkaido.jp\nnaie.hokkaido.jp\nnakagawa.hokkaido.jp\nnakasatsunai.hokkaido.jp\nnakatombetsu.hokkaido.jp\nnanae.hokkaido.jp\nnanporo.hokkaido.jp\nnayoro.hokkaido.jp\nnemuro.hokkaido.jp\nniikappu.hokkaido.jp\nniki.hokkaido.jp\nnishiokoppe.hokkaido.jp\nnoboribetsu.hokkaido.jp\nnumata.hokkaido.jp\nobihiro.hokkaido.jp\nobira.hokkaido.jp\noketo.hokkaido.jp\nokoppe.hokkaido.jp\notaru.hokkaido.jp\notobe.hokkaido.jp\notofuke.hokkaido.jp\notoineppu.hokkaido.jp\noumu.hokkaido.jp\nozora.hokkaido.jp\npippu.hokkaido.jp\nrankoshi.hokkaido.jp\nrebun.hokkaido.jp\nrikubetsu.hokkaido.jp\nrishiri.hokkaido.jp\nrishirifuji.hokkaido.jp\nsaroma.hokkaido.jp\nsarufutsu.hokkaido.jp\nshakotan.hokkaido.jp\nshari.hokkaido.jp\nshibecha.hokkaido.jp\nshibetsu.hokkaido.jp\nshikabe.hokkaido.jp\nshikaoi.hokkaido.jp\nshimamaki.hokkaido.jp\nshimizu.hokkaido.jp\nshimokawa.hokkaido.jp\nshinshinotsu.hokkaido.jp\nshintoku.hokkaido.jp\nshiranuka.hokkaido.jp\nshiraoi.hokkaido.jp\nshiriuchi.hokkaido.jp\nsobetsu.hokkaido.jp\nsunagawa.hokkaido.jp\ntaiki.hokkaido.jp\ntakasu.hokkaido.jp\ntakikawa.hokkaido.jp\ntakinoue.hokkaido.jp\nteshikaga.hokkaido.jp\ntobetsu.hokkaido.jp\ntohma.hokkaido.jp\ntomakomai.hokkaido.jp\ntomari.hokkaido.jp\ntoya.hokkaido.jp\ntoyako.hokkaido.jp\ntoyotomi.hokkaido.jp\ntoyoura.hokkaido.jp\ntsubetsu.hokkaido.jp\ntsukigata.hokkaido.jp\nurakawa.hokkaido.jp\nurausu.hokkaido.jp\nuryu.hokkaido.jp\nutashinai.hokkaido.jp\nwakkanai.hokkaido.jp\nwassamu.hokkaido.jp\nyakumo.hokkaido.jp\nyoichi.hokkaido.jp\naioi.hyogo.jp\nakashi.hyogo.jp\nako.hyogo.jp\namagasaki.hyogo.jp\naogaki.hyogo.jp\nasago.hyogo.jp\nashiya.hyogo.jp\nawaji.hyogo.jp\nfukusaki.hyogo.jp\ngoshiki.hyogo.jp\nharima.hyogo.jp\nhimeji.hyogo.jp\nichikawa.hyogo.jp\ninagawa.hyogo.jp\nitami.hyogo.jp\nkakogawa.hyogo.jp\nkamigori.hyogo.jp\nkamikawa.hyogo.jp\nkasai.hyogo.jp\nkasuga.hyogo.jp\nkawanishi.hyogo.jp\nmiki.hyogo.jp\nminamiawaji.hyogo.jp\nnishinomiya.hyogo.jp\nnishiwaki.hyogo.jp\nono.hyogo.jp\nsanda.hyogo.jp\nsannan.hyogo.jp\nsasayama.hyogo.jp\nsayo.hyogo.jp\nshingu.hyogo.jp\nshinonsen.hyogo.jp\nshiso.hyogo.jp\nsumoto.hyogo.jp\ntaishi.hyogo.jp\ntaka.hyogo.jp\ntakarazuka.hyogo.jp\ntakasago.hyogo.jp\ntakino.hyogo.jp\ntamba.hyogo.jp\ntatsuno.hyogo.jp\ntoyooka.hyogo.jp\nyabu.hyogo.jp\nyashiro.hyogo.jp\nyoka.hyogo.jp\nyokawa.hyogo.jp\nami.ibaraki.jp\nasahi.ibaraki.jp\nbando.ibaraki.jp\nchikusei.ibaraki.jp\ndaigo.ibaraki.jp\nfujishiro.ibaraki.jp\nhitachi.ibaraki.jp\nhitachinaka.ibaraki.jp\nhitachiomiya.ibaraki.jp\nhitachiota.ibaraki.jp\nibaraki.ibaraki.jp\nina.ibaraki.jp\ninashiki.ibaraki.jp\nitako.ibaraki.jp\niwama.ibaraki.jp\njoso.ibaraki.jp\nkamisu.ibaraki.jp\nkasama.ibaraki.jp\nkashima.ibaraki.jp\nkasumigaura.ibaraki.jp\nkoga.ibaraki.jp\nmiho.ibaraki.jp\nmito.ibaraki.jp\nmoriya.ibaraki.jp\nnaka.ibaraki.jp\nnamegata.ibaraki.jp\noarai.ibaraki.jp\nogawa.ibaraki.jp\nomitama.ibaraki.jp\nryugasaki.ibaraki.jp\nsakai.ibaraki.jp\nsakuragawa.ibaraki.jp\nshimodate.ibaraki.jp\nshimotsuma.ibaraki.jp\nshirosato.ibaraki.jp\nsowa.ibaraki.jp\nsuifu.ibaraki.jp\ntakahagi.ibaraki.jp\ntamatsukuri.ibaraki.jp\ntokai.ibaraki.jp\ntomobe.ibaraki.jp\ntone.ibaraki.jp\ntoride.ibaraki.jp\ntsuchiura.ibaraki.jp\ntsukuba.ibaraki.jp\nuchihara.ibaraki.jp\nushiku.ibaraki.jp\nyachiyo.ibaraki.jp\nyamagata.ibaraki.jp\nyawara.ibaraki.jp\nyuki.ibaraki.jp\nanamizu.ishikawa.jp\nhakui.ishikawa.jp\nhakusan.ishikawa.jp\nkaga.ishikawa.jp\nkahoku.ishikawa.jp\nkanazawa.ishikawa.jp\nkawakita.ishikawa.jp\nkomatsu.ishikawa.jp\nnakanoto.ishikawa.jp\nnanao.ishikawa.jp\nnomi.ishikawa.jp\nnonoichi.ishikawa.jp\nnoto.ishikawa.jp\nshika.ishikawa.jp\nsuzu.ishikawa.jp\ntsubata.ishikawa.jp\ntsurugi.ishikawa.jp\nuchinada.ishikawa.jp\nwajima.ishikawa.jp\nfudai.iwate.jp\nfujisawa.iwate.jp\nhanamaki.iwate.jp\nhiraizumi.iwate.jp\nhirono.iwate.jp\nichinohe.iwate.jp\nichinoseki.iwate.jp\niwaizumi.iwate.jp\niwate.iwate.jp\njoboji.iwate.jp\nkamaishi.iwate.jp\nkanegasaki.iwate.jp\nkarumai.iwate.jp\nkawai.iwate.jp\nkitakami.iwate.jp\nkuji.iwate.jp\nkunohe.iwate.jp\nkuzumaki.iwate.jp\nmiyako.iwate.jp\nmizusawa.iwate.jp\nmorioka.iwate.jp\nninohe.iwate.jp\nnoda.iwate.jp\nofunato.iwate.jp\noshu.iwate.jp\notsuchi.iwate.jp\nrikuzentakata.iwate.jp\nshiwa.iwate.jp\nshizukuishi.iwate.jp\nsumita.iwate.jp\ntanohata.iwate.jp\ntono.iwate.jp\nyahaba.iwate.jp\nyamada.iwate.jp\nayagawa.kagawa.jp\nhigashikagawa.kagawa.jp\nkanonji.kagawa.jp\nkotohira.kagawa.jp\nmanno.kagawa.jp\nmarugame.kagawa.jp\nmitoyo.kagawa.jp\nnaoshima.kagawa.jp\nsanuki.kagawa.jp\ntadotsu.kagawa.jp\ntakamatsu.kagawa.jp\ntonosho.kagawa.jp\nuchinomi.kagawa.jp\nutazu.kagawa.jp\nzentsuji.kagawa.jp\nakune.kagoshima.jp\namami.kagoshima.jp\nhioki.kagoshima.jp\nisa.kagoshima.jp\nisen.kagoshima.jp\nizumi.kagoshima.jp\nkagoshima.kagoshima.jp\nkanoya.kagoshima.jp\nkawanabe.kagoshima.jp\nkinko.kagoshima.jp\nkouyama.kagoshima.jp\nmakurazaki.kagoshima.jp\nmatsumoto.kagoshima.jp\nminamitane.kagoshima.jp\nnakatane.kagoshima.jp\nnishinoomote.kagoshima.jp\nsatsumasendai.kagoshima.jp\nsoo.kagoshima.jp\ntarumizu.kagoshima.jp\nyusui.kagoshima.jp\naikawa.kanagawa.jp\natsugi.kanagawa.jp\nayase.kanagawa.jp\nchigasaki.kanagawa.jp\nebina.kanagawa.jp\nfujisawa.kanagawa.jp\nhadano.kanagawa.jp\nhakone.kanagawa.jp\nhiratsuka.kanagawa.jp\nisehara.kanagawa.jp\nkaisei.kanagawa.jp\nkamakura.kanagawa.jp\nkiyokawa.kanagawa.jp\nmatsuda.kanagawa.jp\nminamiashigara.kanagawa.jp\nmiura.kanagawa.jp\nnakai.kanagawa.jp\nninomiya.kanagawa.jp\nodawara.kanagawa.jp\noi.kanagawa.jp\noiso.kanagawa.jp\nsagamihara.kanagawa.jp\nsamukawa.kanagawa.jp\ntsukui.kanagawa.jp\nyamakita.kanagawa.jp\nyamato.kanagawa.jp\nyokosuka.kanagawa.jp\nyugawara.kanagawa.jp\nzama.kanagawa.jp\nzushi.kanagawa.jp\naki.kochi.jp\ngeisei.kochi.jp\nhidaka.kochi.jp\nhigashitsuno.kochi.jp\nino.kochi.jp\nkagami.kochi.jp\nkami.kochi.jp\nkitagawa.kochi.jp\nkochi.kochi.jp\nmihara.kochi.jp\nmotoyama.kochi.jp\nmuroto.kochi.jp\nnahari.kochi.jp\nnakamura.kochi.jp\nnankoku.kochi.jp\nnishitosa.kochi.jp\nniyodogawa.kochi.jp\nochi.kochi.jp\nokawa.kochi.jp\notoyo.kochi.jp\notsuki.kochi.jp\nsakawa.kochi.jp\nsukumo.kochi.jp\nsusaki.kochi.jp\ntosa.kochi.jp\ntosashimizu.kochi.jp\ntoyo.kochi.jp\ntsuno.kochi.jp\numaji.kochi.jp\nyasuda.kochi.jp\nyusuhara.kochi.jp\namakusa.kumamoto.jp\narao.kumamoto.jp\naso.kumamoto.jp\nchoyo.kumamoto.jp\ngyokuto.kumamoto.jp\nkamiamakusa.kumamoto.jp\nkikuchi.kumamoto.jp\nkumamoto.kumamoto.jp\nmashiki.kumamoto.jp\nmifune.kumamoto.jp\nminamata.kumamoto.jp\nminamioguni.kumamoto.jp\nnagasu.kumamoto.jp\nnishihara.kumamoto.jp\noguni.kumamoto.jp\nozu.kumamoto.jp\nsumoto.kumamoto.jp\ntakamori.kumamoto.jp\nuki.kumamoto.jp\nuto.kumamoto.jp\nyamaga.kumamoto.jp\nyamato.kumamoto.jp\nyatsushiro.kumamoto.jp\nayabe.kyoto.jp\nfukuchiyama.kyoto.jp\nhigashiyama.kyoto.jp\nide.kyoto.jp\nine.kyoto.jp\njoyo.kyoto.jp\nkameoka.kyoto.jp\nkamo.kyoto.jp\nkita.kyoto.jp\nkizu.kyoto.jp\nkumiyama.kyoto.jp\nkyotamba.kyoto.jp\nkyotanabe.kyoto.jp\nkyotango.kyoto.jp\nmaizuru.kyoto.jp\nminami.kyoto.jp\nminamiyamashiro.kyoto.jp\nmiyazu.kyoto.jp\nmuko.kyoto.jp\nnagaokakyo.kyoto.jp\nnakagyo.kyoto.jp\nnantan.kyoto.jp\noyamazaki.kyoto.jp\nsakyo.kyoto.jp\nseika.kyoto.jp\ntanabe.kyoto.jp\nuji.kyoto.jp\nujitawara.kyoto.jp\nwazuka.kyoto.jp\nyamashina.kyoto.jp\nyawata.kyoto.jp\nasahi.mie.jp\ninabe.mie.jp\nise.mie.jp\nkameyama.mie.jp\nkawagoe.mie.jp\nkiho.mie.jp\nkisosaki.mie.jp\nkiwa.mie.jp\nkomono.mie.jp\nkumano.mie.jp\nkuwana.mie.jp\nmatsusaka.mie.jp\nmeiwa.mie.jp\nmihama.mie.jp\nminamiise.mie.jp\nmisugi.mie.jp\nmiyama.mie.jp\nnabari.mie.jp\nshima.mie.jp\nsuzuka.mie.jp\ntado.mie.jp\ntaiki.mie.jp\ntaki.mie.jp\ntamaki.mie.jp\ntoba.mie.jp\ntsu.mie.jp\nudono.mie.jp\nureshino.mie.jp\nwatarai.mie.jp\nyokkaichi.mie.jp\nfurukawa.miyagi.jp\nhigashimatsushima.miyagi.jp\nishinomaki.miyagi.jp\niwanuma.miyagi.jp\nkakuda.miyagi.jp\nkami.miyagi.jp\nkawasaki.miyagi.jp\nmarumori.miyagi.jp\nmatsushima.miyagi.jp\nminamisanriku.miyagi.jp\nmisato.miyagi.jp\nmurata.miyagi.jp\nnatori.miyagi.jp\nogawara.miyagi.jp\nohira.miyagi.jp\nonagawa.miyagi.jp\nosaki.miyagi.jp\nrifu.miyagi.jp\nsemine.miyagi.jp\nshibata.miyagi.jp\nshichikashuku.miyagi.jp\nshikama.miyagi.jp\nshiogama.miyagi.jp\nshiroishi.miyagi.jp\ntagajo.miyagi.jp\ntaiwa.miyagi.jp\ntome.miyagi.jp\ntomiya.miyagi.jp\nwakuya.miyagi.jp\nwatari.miyagi.jp\nyamamoto.miyagi.jp\nzao.miyagi.jp\naya.miyazaki.jp\nebino.miyazaki.jp\ngokase.miyazaki.jp\nhyuga.miyazaki.jp\nkadogawa.miyazaki.jp\nkawaminami.miyazaki.jp\nkijo.miyazaki.jp\nkitagawa.miyazaki.jp\nkitakata.miyazaki.jp\nkitaura.miyazaki.jp\nkobayashi.miyazaki.jp\nkunitomi.miyazaki.jp\nkushima.miyazaki.jp\nmimata.miyazaki.jp\nmiyakonojo.miyazaki.jp\nmiyazaki.miyazaki.jp\nmorotsuka.miyazaki.jp\nnichinan.miyazaki.jp\nnishimera.miyazaki.jp\nnobeoka.miyazaki.jp\nsaito.miyazaki.jp\nshiiba.miyazaki.jp\nshintomi.miyazaki.jp\ntakaharu.miyazaki.jp\ntakanabe.miyazaki.jp\ntakazaki.miyazaki.jp\ntsuno.miyazaki.jp\nachi.nagano.jp\nagematsu.nagano.jp\nanan.nagano.jp\naoki.nagano.jp\nasahi.nagano.jp\nazumino.nagano.jp\nchikuhoku.nagano.jp\nchikuma.nagano.jp\nchino.nagano.jp\nfujimi.nagano.jp\nhakuba.nagano.jp\nhara.nagano.jp\nhiraya.nagano.jp\niida.nagano.jp\niijima.nagano.jp\niiyama.nagano.jp\niizuna.nagano.jp\nikeda.nagano.jp\nikusaka.nagano.jp\nina.nagano.jp\nkaruizawa.nagano.jp\nkawakami.nagano.jp\nkiso.nagano.jp\nkisofukushima.nagano.jp\nkitaaiki.nagano.jp\nkomagane.nagano.jp\nkomoro.nagano.jp\nmatsukawa.nagano.jp\nmatsumoto.nagano.jp\nmiasa.nagano.jp\nminamiaiki.nagano.jp\nminamimaki.nagano.jp\nminamiminowa.nagano.jp\nminowa.nagano.jp\nmiyada.nagano.jp\nmiyota.nagano.jp\nmochizuki.nagano.jp\nnagano.nagano.jp\nnagawa.nagano.jp\nnagiso.nagano.jp\nnakagawa.nagano.jp\nnakano.nagano.jp\nnozawaonsen.nagano.jp\nobuse.nagano.jp\nogawa.nagano.jp\nokaya.nagano.jp\nomachi.nagano.jp\nomi.nagano.jp\nookuwa.nagano.jp\nooshika.nagano.jp\notaki.nagano.jp\notari.nagano.jp\nsakae.nagano.jp\nsakaki.nagano.jp\nsaku.nagano.jp\nsakuho.nagano.jp\nshimosuwa.nagano.jp\nshinanomachi.nagano.jp\nshiojiri.nagano.jp\nsuwa.nagano.jp\nsuzaka.nagano.jp\ntakagi.nagano.jp\ntakamori.nagano.jp\ntakayama.nagano.jp\ntateshina.nagano.jp\ntatsuno.nagano.jp\ntogakushi.nagano.jp\ntogura.nagano.jp\ntomi.nagano.jp\nueda.nagano.jp\nwada.nagano.jp\nyamagata.nagano.jp\nyamanouchi.nagano.jp\nyasaka.nagano.jp\nyasuoka.nagano.jp\nchijiwa.nagasaki.jp\nfutsu.nagasaki.jp\ngoto.nagasaki.jp\nhasami.nagasaki.jp\nhirado.nagasaki.jp\niki.nagasaki.jp\nisahaya.nagasaki.jp\nkawatana.nagasaki.jp\nkuchinotsu.nagasaki.jp\nmatsuura.nagasaki.jp\nnagasaki.nagasaki.jp\nobama.nagasaki.jp\nomura.nagasaki.jp\noseto.nagasaki.jp\nsaikai.nagasaki.jp\nsasebo.nagasaki.jp\nseihi.nagasaki.jp\nshimabara.nagasaki.jp\nshinkamigoto.nagasaki.jp\ntogitsu.nagasaki.jp\ntsushima.nagasaki.jp\nunzen.nagasaki.jp\nando.nara.jp\ngose.nara.jp\nheguri.nara.jp\nhigashiyoshino.nara.jp\nikaruga.nara.jp\nikoma.nara.jp\nkamikitayama.nara.jp\nkanmaki.nara.jp\nkashiba.nara.jp\nkashihara.nara.jp\nkatsuragi.nara.jp\nkawai.nara.jp\nkawakami.nara.jp\nkawanishi.nara.jp\nkoryo.nara.jp\nkurotaki.nara.jp\nmitsue.nara.jp\nmiyake.nara.jp\nnara.nara.jp\nnosegawa.nara.jp\noji.nara.jp\nouda.nara.jp\noyodo.nara.jp\nsakurai.nara.jp\nsango.nara.jp\nshimoichi.nara.jp\nshimokitayama.nara.jp\nshinjo.nara.jp\nsoni.nara.jp\ntakatori.nara.jp\ntawaramoto.nara.jp\ntenkawa.nara.jp\ntenri.nara.jp\nuda.nara.jp\nyamatokoriyama.nara.jp\nyamatotakada.nara.jp\nyamazoe.nara.jp\nyoshino.nara.jp\naga.niigata.jp\nagano.niigata.jp\ngosen.niigata.jp\nitoigawa.niigata.jp\nizumozaki.niigata.jp\njoetsu.niigata.jp\nkamo.niigata.jp\nkariwa.niigata.jp\nkashiwazaki.niigata.jp\nminamiuonuma.niigata.jp\nmitsuke.niigata.jp\nmuika.niigata.jp\nmurakami.niigata.jp\nmyoko.niigata.jp\nnagaoka.niigata.jp\nniigata.niigata.jp\nojiya.niigata.jp\nomi.niigata.jp\nsado.niigata.jp\nsanjo.niigata.jp\nseiro.niigata.jp\nseirou.niigata.jp\nsekikawa.niigata.jp\nshibata.niigata.jp\ntagami.niigata.jp\ntainai.niigata.jp\ntochio.niigata.jp\ntokamachi.niigata.jp\ntsubame.niigata.jp\ntsunan.niigata.jp\nuonuma.niigata.jp\nyahiko.niigata.jp\nyoita.niigata.jp\nyuzawa.niigata.jp\nbeppu.oita.jp\nbungoono.oita.jp\nbungotakada.oita.jp\nhasama.oita.jp\nhiji.oita.jp\nhimeshima.oita.jp\nhita.oita.jp\nkamitsue.oita.jp\nkokonoe.oita.jp\nkuju.oita.jp\nkunisaki.oita.jp\nkusu.oita.jp\noita.oita.jp\nsaiki.oita.jp\ntaketa.oita.jp\ntsukumi.oita.jp\nusa.oita.jp\nusuki.oita.jp\nyufu.oita.jp\nakaiwa.okayama.jp\nasakuchi.okayama.jp\nbizen.okayama.jp\nhayashima.okayama.jp\nibara.okayama.jp\nkagamino.okayama.jp\nkasaoka.okayama.jp\nkibichuo.okayama.jp\nkumenan.okayama.jp\nkurashiki.okayama.jp\nmaniwa.okayama.jp\nmisaki.okayama.jp\nnagi.okayama.jp\nniimi.okayama.jp\nnishiawakura.okayama.jp\nokayama.okayama.jp\nsatosho.okayama.jp\nsetouchi.okayama.jp\nshinjo.okayama.jp\nshoo.okayama.jp\nsoja.okayama.jp\ntakahashi.okayama.jp\ntamano.okayama.jp\ntsuyama.okayama.jp\nwake.okayama.jp\nyakage.okayama.jp\naguni.okinawa.jp\nginowan.okinawa.jp\nginoza.okinawa.jp\ngushikami.okinawa.jp\nhaebaru.okinawa.jp\nhigashi.okinawa.jp\nhirara.okinawa.jp\niheya.okinawa.jp\nishigaki.okinawa.jp\nishikawa.okinawa.jp\nitoman.okinawa.jp\nizena.okinawa.jp\nkadena.okinawa.jp\nkin.okinawa.jp\nkitadaito.okinawa.jp\nkitanakagusuku.okinawa.jp\nkumejima.okinawa.jp\nkunigami.okinawa.jp\nminamidaito.okinawa.jp\nmotobu.okinawa.jp\nnago.okinawa.jp\nnaha.okinawa.jp\nnakagusuku.okinawa.jp\nnakijin.okinawa.jp\nnanjo.okinawa.jp\nnishihara.okinawa.jp\nogimi.okinawa.jp\nokinawa.okinawa.jp\nonna.okinawa.jp\nshimoji.okinawa.jp\ntaketomi.okinawa.jp\ntarama.okinawa.jp\ntokashiki.okinawa.jp\ntomigusuku.okinawa.jp\ntonaki.okinawa.jp\nurasoe.okinawa.jp\nuruma.okinawa.jp\nyaese.okinawa.jp\nyomitan.okinawa.jp\nyonabaru.okinawa.jp\nyonaguni.okinawa.jp\nzamami.okinawa.jp\nabeno.osaka.jp\nchihayaakasaka.osaka.jp\nchuo.osaka.jp\ndaito.osaka.jp\nfujiidera.osaka.jp\nhabikino.osaka.jp\nhannan.osaka.jp\nhigashiosaka.osaka.jp\nhigashisumiyoshi.osaka.jp\nhigashiyodogawa.osaka.jp\nhirakata.osaka.jp\nibaraki.osaka.jp\nikeda.osaka.jp\nizumi.osaka.jp\nizumiotsu.osaka.jp\nizumisano.osaka.jp\nkadoma.osaka.jp\nkaizuka.osaka.jp\nkanan.osaka.jp\nkashiwara.osaka.jp\nkatano.osaka.jp\nkawachinagano.osaka.jp\nkishiwada.osaka.jp\nkita.osaka.jp\nkumatori.osaka.jp\nmatsubara.osaka.jp\nminato.osaka.jp\nminoh.osaka.jp\nmisaki.osaka.jp\nmoriguchi.osaka.jp\nneyagawa.osaka.jp\nnishi.osaka.jp\nnose.osaka.jp\nosakasayama.osaka.jp\nsakai.osaka.jp\nsayama.osaka.jp\nsennan.osaka.jp\nsettsu.osaka.jp\nshijonawate.osaka.jp\nshimamoto.osaka.jp\nsuita.osaka.jp\ntadaoka.osaka.jp\ntaishi.osaka.jp\ntajiri.osaka.jp\ntakaishi.osaka.jp\ntakatsuki.osaka.jp\ntondabayashi.osaka.jp\ntoyonaka.osaka.jp\ntoyono.osaka.jp\nyao.osaka.jp\nariake.saga.jp\narita.saga.jp\nfukudomi.saga.jp\ngenkai.saga.jp\nhamatama.saga.jp\nhizen.saga.jp\nimari.saga.jp\nkamimine.saga.jp\nkanzaki.saga.jp\nkaratsu.saga.jp\nkashima.saga.jp\nkitagata.saga.jp\nkitahata.saga.jp\nkiyama.saga.jp\nkouhoku.saga.jp\nkyuragi.saga.jp\nnishiarita.saga.jp\nogi.saga.jp\nomachi.saga.jp\nouchi.saga.jp\nsaga.saga.jp\nshiroishi.saga.jp\ntaku.saga.jp\ntara.saga.jp\ntosu.saga.jp\nyoshinogari.saga.jp\narakawa.saitama.jp\nasaka.saitama.jp\nchichibu.saitama.jp\nfujimi.saitama.jp\nfujimino.saitama.jp\nfukaya.saitama.jp\nhanno.saitama.jp\nhanyu.saitama.jp\nhasuda.saitama.jp\nhatogaya.saitama.jp\nhatoyama.saitama.jp\nhidaka.saitama.jp\nhigashichichibu.saitama.jp\nhigashimatsuyama.saitama.jp\nhonjo.saitama.jp\nina.saitama.jp\niruma.saitama.jp\niwatsuki.saitama.jp\nkamiizumi.saitama.jp\nkamikawa.saitama.jp\nkamisato.saitama.jp\nkasukabe.saitama.jp\nkawagoe.saitama.jp\nkawaguchi.saitama.jp\nkawajima.saitama.jp\nkazo.saitama.jp\nkitamoto.saitama.jp\nkoshigaya.saitama.jp\nkounosu.saitama.jp\nkuki.saitama.jp\nkumagaya.saitama.jp\nmatsubushi.saitama.jp\nminano.saitama.jp\nmisato.saitama.jp\nmiyashiro.saitama.jp\nmiyoshi.saitama.jp\nmoroyama.saitama.jp\nnagatoro.saitama.jp\nnamegawa.saitama.jp\nniiza.saitama.jp\nogano.saitama.jp\nogawa.saitama.jp\nogose.saitama.jp\nokegawa.saitama.jp\nomiya.saitama.jp\notaki.saitama.jp\nranzan.saitama.jp\nryokami.saitama.jp\nsaitama.saitama.jp\nsakado.saitama.jp\nsatte.saitama.jp\nsayama.saitama.jp\nshiki.saitama.jp\nshiraoka.saitama.jp\nsoka.saitama.jp\nsugito.saitama.jp\ntoda.saitama.jp\ntokigawa.saitama.jp\ntokorozawa.saitama.jp\ntsurugashima.saitama.jp\nurawa.saitama.jp\nwarabi.saitama.jp\nyashio.saitama.jp\nyokoze.saitama.jp\nyono.saitama.jp\nyorii.saitama.jp\nyoshida.saitama.jp\nyoshikawa.saitama.jp\nyoshimi.saitama.jp\naisho.shiga.jp\ngamo.shiga.jp\nhigashiomi.shiga.jp\nhikone.shiga.jp\nkoka.shiga.jp\nkonan.shiga.jp\nkosei.shiga.jp\nkoto.shiga.jp\nkusatsu.shiga.jp\nmaibara.shiga.jp\nmoriyama.shiga.jp\nnagahama.shiga.jp\nnishiazai.shiga.jp\nnotogawa.shiga.jp\nomihachiman.shiga.jp\notsu.shiga.jp\nritto.shiga.jp\nryuoh.shiga.jp\ntakashima.shiga.jp\ntakatsuki.shiga.jp\ntorahime.shiga.jp\ntoyosato.shiga.jp\nyasu.shiga.jp\nakagi.shimane.jp\nama.shimane.jp\ngotsu.shimane.jp\nhamada.shimane.jp\nhigashiizumo.shimane.jp\nhikawa.shimane.jp\nhikimi.shimane.jp\nizumo.shimane.jp\nkakinoki.shimane.jp\nmasuda.shimane.jp\nmatsue.shimane.jp\nmisato.shimane.jp\nnishinoshima.shimane.jp\nohda.shimane.jp\nokinoshima.shimane.jp\nokuizumo.shimane.jp\nshimane.shimane.jp\ntamayu.shimane.jp\ntsuwano.shimane.jp\nunnan.shimane.jp\nyakumo.shimane.jp\nyasugi.shimane.jp\nyatsuka.shimane.jp\narai.shizuoka.jp\natami.shizuoka.jp\nfuji.shizuoka.jp\nfujieda.shizuoka.jp\nfujikawa.shizuoka.jp\nfujinomiya.shizuoka.jp\nfukuroi.shizuoka.jp\ngotemba.shizuoka.jp\nhaibara.shizuoka.jp\nhamamatsu.shizuoka.jp\nhigashiizu.shizuoka.jp\nito.shizuoka.jp\niwata.shizuoka.jp\nizu.shizuoka.jp\nizunokuni.shizuoka.jp\nkakegawa.shizuoka.jp\nkannami.shizuoka.jp\nkawanehon.shizuoka.jp\nkawazu.shizuoka.jp\nkikugawa.shizuoka.jp\nkosai.shizuoka.jp\nmakinohara.shizuoka.jp\nmatsuzaki.shizuoka.jp\nminamiizu.shizuoka.jp\nmishima.shizuoka.jp\nmorimachi.shizuoka.jp\nnishiizu.shizuoka.jp\nnumazu.shizuoka.jp\nomaezaki.shizuoka.jp\nshimada.shizuoka.jp\nshimizu.shizuoka.jp\nshimoda.shizuoka.jp\nshizuoka.shizuoka.jp\nsusono.shizuoka.jp\nyaizu.shizuoka.jp\nyoshida.shizuoka.jp\nashikaga.tochigi.jp\nbato.tochigi.jp\nhaga.tochigi.jp\nichikai.tochigi.jp\niwafune.tochigi.jp\nkaminokawa.tochigi.jp\nkanuma.tochigi.jp\nkarasuyama.tochigi.jp\nkuroiso.tochigi.jp\nmashiko.tochigi.jp\nmibu.tochigi.jp\nmoka.tochigi.jp\nmotegi.tochigi.jp\nnasu.tochigi.jp\nnasushiobara.tochigi.jp\nnikko.tochigi.jp\nnishikata.tochigi.jp\nnogi.tochigi.jp\nohira.tochigi.jp\nohtawara.tochigi.jp\noyama.tochigi.jp\nsakura.tochigi.jp\nsano.tochigi.jp\nshimotsuke.tochigi.jp\nshioya.tochigi.jp\ntakanezawa.tochigi.jp\ntochigi.tochigi.jp\ntsuga.tochigi.jp\nujiie.tochigi.jp\nutsunomiya.tochigi.jp\nyaita.tochigi.jp\naizumi.tokushima.jp\nanan.tokushima.jp\nichiba.tokushima.jp\nitano.tokushima.jp\nkainan.tokushima.jp\nkomatsushima.tokushima.jp\nmatsushige.tokushima.jp\nmima.tokushima.jp\nminami.tokushima.jp\nmiyoshi.tokushima.jp\nmugi.tokushima.jp\nnakagawa.tokushima.jp\nnaruto.tokushima.jp\nsanagochi.tokushima.jp\nshishikui.tokushima.jp\ntokushima.tokushima.jp\nwajiki.tokushima.jp\nadachi.tokyo.jp\nakiruno.tokyo.jp\nakishima.tokyo.jp\naogashima.tokyo.jp\narakawa.tokyo.jp\nbunkyo.tokyo.jp\nchiyoda.tokyo.jp\nchofu.tokyo.jp\nchuo.tokyo.jp\nedogawa.tokyo.jp\nfuchu.tokyo.jp\nfussa.tokyo.jp\nhachijo.tokyo.jp\nhachioji.tokyo.jp\nhamura.tokyo.jp\nhigashikurume.tokyo.jp\nhigashimurayama.tokyo.jp\nhigashiyamato.tokyo.jp\nhino.tokyo.jp\nhinode.tokyo.jp\nhinohara.tokyo.jp\ninagi.tokyo.jp\nitabashi.tokyo.jp\nkatsushika.tokyo.jp\nkita.tokyo.jp\nkiyose.tokyo.jp\nkodaira.tokyo.jp\nkoganei.tokyo.jp\nkokubunji.tokyo.jp\nkomae.tokyo.jp\nkoto.tokyo.jp\nkouzushima.tokyo.jp\nkunitachi.tokyo.jp\nmachida.tokyo.jp\nmeguro.tokyo.jp\nminato.tokyo.jp\nmitaka.tokyo.jp\nmizuho.tokyo.jp\nmusashimurayama.tokyo.jp\nmusashino.tokyo.jp\nnakano.tokyo.jp\nnerima.tokyo.jp\nogasawara.tokyo.jp\nokutama.tokyo.jp\nome.tokyo.jp\noshima.tokyo.jp\nota.tokyo.jp\nsetagaya.tokyo.jp\nshibuya.tokyo.jp\nshinagawa.tokyo.jp\nshinjuku.tokyo.jp\nsuginami.tokyo.jp\nsumida.tokyo.jp\ntachikawa.tokyo.jp\ntaito.tokyo.jp\ntama.tokyo.jp\ntoshima.tokyo.jp\nchizu.tottori.jp\nhino.tottori.jp\nkawahara.tottori.jp\nkoge.tottori.jp\nkotoura.tottori.jp\nmisasa.tottori.jp\nnanbu.tottori.jp\nnichinan.tottori.jp\nsakaiminato.tottori.jp\ntottori.tottori.jp\nwakasa.tottori.jp\nyazu.tottori.jp\nyonago.tottori.jp\nasahi.toyama.jp\nfuchu.toyama.jp\nfukumitsu.toyama.jp\nfunahashi.toyama.jp\nhimi.toyama.jp\nimizu.toyama.jp\ninami.toyama.jp\njohana.toyama.jp\nkamiichi.toyama.jp\nkurobe.toyama.jp\nnakaniikawa.toyama.jp\nnamerikawa.toyama.jp\nnanto.toyama.jp\nnyuzen.toyama.jp\noyabe.toyama.jp\ntaira.toyama.jp\ntakaoka.toyama.jp\ntateyama.toyama.jp\ntoga.toyama.jp\ntonami.toyama.jp\ntoyama.toyama.jp\nunazuki.toyama.jp\nuozu.toyama.jp\nyamada.toyama.jp\narida.wakayama.jp\naridagawa.wakayama.jp\ngobo.wakayama.jp\nhashimoto.wakayama.jp\nhidaka.wakayama.jp\nhirogawa.wakayama.jp\ninami.wakayama.jp\niwade.wakayama.jp\nkainan.wakayama.jp\nkamitonda.wakayama.jp\nkatsuragi.wakayama.jp\nkimino.wakayama.jp\nkinokawa.wakayama.jp\nkitayama.wakayama.jp\nkoya.wakayama.jp\nkoza.wakayama.jp\nkozagawa.wakayama.jp\nkudoyama.wakayama.jp\nkushimoto.wakayama.jp\nmihama.wakayama.jp\nmisato.wakayama.jp\nnachikatsuura.wakayama.jp\nshingu.wakayama.jp\nshirahama.wakayama.jp\ntaiji.wakayama.jp\ntanabe.wakayama.jp\nwakayama.wakayama.jp\nyuasa.wakayama.jp\nyura.wakayama.jp\nasahi.yamagata.jp\nfunagata.yamagata.jp\nhigashine.yamagata.jp\niide.yamagata.jp\nkahoku.yamagata.jp\nkaminoyama.yamagata.jp\nkaneyama.yamagata.jp\nkawanishi.yamagata.jp\nmamurogawa.yamagata.jp\nmikawa.yamagata.jp\nmurayama.yamagata.jp\nnagai.yamagata.jp\nnakayama.yamagata.jp\nnanyo.yamagata.jp\nnishikawa.yamagata.jp\nobanazawa.yamagata.jp\noe.yamagata.jp\noguni.yamagata.jp\nohkura.yamagata.jp\noishida.yamagata.jp\nsagae.yamagata.jp\nsakata.yamagata.jp\nsakegawa.yamagata.jp\nshinjo.yamagata.jp\nshirataka.yamagata.jp\nshonai.yamagata.jp\ntakahata.yamagata.jp\ntendo.yamagata.jp\ntozawa.yamagata.jp\ntsuruoka.yamagata.jp\nyamagata.yamagata.jp\nyamanobe.yamagata.jp\nyonezawa.yamagata.jp\nyuza.yamagata.jp\nabu.yamaguchi.jp\nhagi.yamaguchi.jp\nhikari.yamaguchi.jp\nhofu.yamaguchi.jp\niwakuni.yamaguchi.jp\nkudamatsu.yamaguchi.jp\nmitou.yamaguchi.jp\nnagato.yamaguchi.jp\noshima.yamaguchi.jp\nshimonoseki.yamaguchi.jp\nshunan.yamaguchi.jp\ntabuse.yamaguchi.jp\ntokuyama.yamaguchi.jp\ntoyota.yamaguchi.jp\nube.yamaguchi.jp\nyuu.yamaguchi.jp\nchuo.yamanashi.jp\ndoshi.yamanashi.jp\nfuefuki.yamanashi.jp\nfujikawa.yamanashi.jp\nfujikawaguchiko.yamanashi.jp\nfujiyoshida.yamanashi.jp\nhayakawa.yamanashi.jp\nhokuto.yamanashi.jp\nichikawamisato.yamanashi.jp\nkai.yamanashi.jp\nkofu.yamanashi.jp\nkoshu.yamanashi.jp\nkosuge.yamanashi.jp\nminami-alps.yamanashi.jp\nminobu.yamanashi.jp\nnakamichi.yamanashi.jp\nnanbu.yamanashi.jp\nnarusawa.yamanashi.jp\nnirasaki.yamanashi.jp\nnishikatsura.yamanashi.jp\noshino.yamanashi.jp\notsuki.yamanashi.jp\nshowa.yamanashi.jp\ntabayama.yamanashi.jp\ntsuru.yamanashi.jp\nuenohara.yamanashi.jp\nyamanakako.yamanashi.jp\nyamanashi.yamanashi.jp\nke\nac.ke\nco.ke\ngo.ke\ninfo.ke\nme.ke\nmobi.ke\nne.ke\nor.ke\nsc.ke\nkg\ncom.kg\nedu.kg\ngov.kg\nmil.kg\nnet.kg\norg.kg\nkh\ncom.kh\nedu.kh\ngov.kh\nnet.kh\norg.kh\nki\nbiz.ki\ncom.ki\nedu.ki\ngov.ki\ninfo.ki\nnet.ki\norg.ki\nkm\nass.km\ncom.km\nedu.km\ngov.km\nmil.km\nnom.km\norg.km\nprd.km\ntm.km\nasso.km\ncoop.km\ngouv.km\nmedecin.km\nnotaires.km\npharmaciens.km\npresse.km\nveterinaire.km\nkn\nedu.kn\ngov.kn\nnet.kn\norg.kn\nkp\ncom.kp\nedu.kp\ngov.kp\norg.kp\nrep.kp\ntra.kp\nkr\nac.kr\nai.kr\nco.kr\nes.kr\ngo.kr\nhs.kr\nio.kr\nit.kr\nkg.kr\nme.kr\nmil.kr\nms.kr\nne.kr\nor.kr\npe.kr\nre.kr\nsc.kr\nbusan.kr\nchungbuk.kr\nchungnam.kr\ndaegu.kr\ndaejeon.kr\ngangwon.kr\ngwangju.kr\ngyeongbuk.kr\ngyeonggi.kr\ngyeongnam.kr\nincheon.kr\njeju.kr\njeonbuk.kr\njeonnam.kr\nseoul.kr\nulsan.kr\nkw\ncom.kw\nedu.kw\nemb.kw\ngov.kw\nind.kw\nnet.kw\norg.kw\nky\ncom.ky\nedu.ky\nnet.ky\norg.ky\nkz\ncom.kz\nedu.kz\ngov.kz\nmil.kz\nnet.kz\norg.kz\nla\ncom.la\nedu.la\ngov.la\ninfo.la\nint.la\nnet.la\norg.la\nper.la\nlb\ncom.lb\nedu.lb\ngov.lb\nnet.lb\norg.lb\nlc\nco.lc\ncom.lc\nedu.lc\ngov.lc\nnet.lc\norg.lc\nli\nlk\nac.lk\nassn.lk\ncom.lk\nedu.lk\ngov.lk\ngrp.lk\nhotel.lk\nint.lk\nltd.lk\nnet.lk\nngo.lk\norg.lk\nsch.lk\nsoc.lk\nweb.lk\nlr\ncom.lr\nedu.lr\ngov.lr\nnet.lr\norg.lr\nls\nac.ls\nbiz.ls\nco.ls\nedu.ls\ngov.ls\ninfo.ls\nnet.ls\norg.ls\nsc.ls\nlt\ngov.lt\nlu\nlv\nasn.lv\ncom.lv\nconf.lv\nedu.lv\ngov.lv\nid.lv\nmil.lv\nnet.lv\norg.lv\nly\ncom.ly\nedu.ly\ngov.ly\nid.ly\nmed.ly\nnet.ly\norg.ly\nplc.ly\nsch.ly\nma\nac.ma\nco.ma\ngov.ma\nnet.ma\norg.ma\npress.ma\nmc\nasso.mc\ntm.mc\nmd\nme\nac.me\nco.me\nedu.me\ngov.me\nits.me\nnet.me\norg.me\npriv.me\nmg\nco.mg\ncom.mg\nedu.mg\ngov.mg\nmil.mg\nnom.mg\norg.mg\nprd.mg\nmh\nmil\nmk\ncom.mk\nedu.mk\ngov.mk\ninf.mk\nname.mk\nnet.mk\norg.mk\nml\nac.ml\nart.ml\nasso.ml\ncom.ml\nedu.ml\ngouv.ml\ngov.ml\ninfo.ml\ninst.ml\nnet.ml\norg.ml\npr.ml\npresse.ml\n*.mm\nmn\nedu.mn\ngov.mn\norg.mn\nmo\ncom.mo\nedu.mo\ngov.mo\nnet.mo\norg.mo\nmobi\nmp\nmq\nmr\ngov.mr\nms\ncom.ms\nedu.ms\ngov.ms\nnet.ms\norg.ms\nmt\ncom.mt\nedu.mt\nnet.mt\norg.mt\nmu\nac.mu\nco.mu\ncom.mu\ngov.mu\nnet.mu\nor.mu\norg.mu\nmuseum\nmv\naero.mv\nbiz.mv\ncom.mv\ncoop.mv\nedu.mv\ngov.mv\ninfo.mv\nint.mv\nmil.mv\nmuseum.mv\nname.mv\nnet.mv\norg.mv\npro.mv\nmw\nac.mw\nbiz.mw\nco.mw\ncom.mw\ncoop.mw\nedu.mw\ngov.mw\nint.mw\nnet.mw\norg.mw\nmx\ncom.mx\nedu.mx\ngob.mx\nnet.mx\norg.mx\nmy\nbiz.my\ncom.my\nedu.my\ngov.my\nmil.my\nname.my\nnet.my\norg.my\nmz\nac.mz\nadv.mz\nco.mz\nedu.mz\ngov.mz\nmil.mz\nnet.mz\norg.mz\nna\nalt.na\nco.na\ncom.na\ngov.na\nnet.na\norg.na\nname\nnc\nasso.nc\nnom.nc\nne\nnet\nnf\narts.nf\ncom.nf\nfirm.nf\ninfo.nf\nnet.nf\nother.nf\nper.nf\nrec.nf\nstore.nf\nweb.nf\nng\ncom.ng\nedu.ng\ngov.ng\ni.ng\nmil.ng\nmobi.ng\nname.ng\nnet.ng\norg.ng\nsch.ng\nni\nac.ni\nbiz.ni\nco.ni\ncom.ni\nedu.ni\ngob.ni\nin.ni\ninfo.ni\nint.ni\nmil.ni\nnet.ni\nnom.ni\norg.ni\nweb.ni\nnl\nno\nfhs.no\nfolkebibl.no\nfylkesbibl.no\ngielda.no\nherad.no\nidrett.no\nkommune.no\nmuseum.no\npriv.no\nsuohkan.no\ntjielte.no\nuenorge.no\nvgs.no\ndep.no\nmil.no\nstat.no\naa.no\nah.no\nbu.no\nfm.no\nhl.no\nhm.no\njan-mayen.no\nmr.no\nnl.no\nnt.no\nof.no\nol.no\noslo.no\nrl.no\nsf.no\nst.no\nsvalbard.no\ntm.no\ntr.no\nva.no\nvf.no\ngs.aa.no\ngs.ah.no\ngs.bu.no\ngs.fm.no\ngs.hl.no\ngs.hm.no\ngs.jan-mayen.no\ngs.mr.no\ngs.nl.no\ngs.nt.no\ngs.of.no\ngs.ol.no\ngs.oslo.no\ngs.rl.no\ngs.sf.no\ngs.st.no\ngs.svalbard.no\ngs.tm.no\ngs.tr.no\ngs.va.no\ngs.vf.no\nakrehamn.no\nxn--krehamn-dxa.no\nalgard.no\nxn--lgrd-poac.no\narna.no\nbronnoysund.no\nxn--brnnysund-m8ac.no\nbrumunddal.no\nbryne.no\ndrobak.no\nxn--drbak-wua.no\negersund.no\nfetsund.no\nfloro.no\nxn--flor-jra.no\nfredrikstad.no\nhokksund.no\nhonefoss.no\nxn--hnefoss-q1a.no\njessheim.no\njorpeland.no\nxn--jrpeland-54a.no\nkirkenes.no\nkopervik.no\nkrokstadelva.no\nlangevag.no\nxn--langevg-jxa.no\nleirvik.no\nmjondalen.no\nxn--mjndalen-64a.no\nmo-i-rana.no\nmosjoen.no\nxn--mosjen-eya.no\nnesoddtangen.no\norkanger.no\nosoyro.no\nxn--osyro-wua.no\nraholt.no\nxn--rholt-mra.no\nsandnessjoen.no\nxn--sandnessjen-ogb.no\nskedsmokorset.no\nslattum.no\nspjelkavik.no\nstathelle.no\nstavern.no\nstjordalshalsen.no\nxn--stjrdalshalsen-sqb.no\ntananger.no\ntranby.no\nvossevangen.no\naarborte.no\naejrie.no\nafjord.no\nxn--fjord-lra.no\nagdenes.no\nnes.akershus.no\naknoluokta.no\nxn--koluokta-7ya57h.no\nal.no\nxn--l-1fa.no\nalaheadju.no\nxn--laheadju-7ya.no\nalesund.no\nxn--lesund-hua.no\nalstahaug.no\nalta.no\nxn--lt-liac.no\nalvdal.no\namli.no\nxn--mli-tla.no\namot.no\nxn--mot-tla.no\nandasuolo.no\nandebu.no\nandoy.no\nxn--andy-ira.no\nardal.no\nxn--rdal-poa.no\naremark.no\narendal.no\nxn--s-1fa.no\naseral.no\nxn--seral-lra.no\nasker.no\naskim.no\naskoy.no\nxn--asky-ira.no\naskvoll.no\nasnes.no\nxn--snes-poa.no\naudnedal.no\naukra.no\naure.no\naurland.no\naurskog-holand.no\nxn--aurskog-hland-jnb.no\naustevoll.no\naustrheim.no\naveroy.no\nxn--avery-yua.no\nbadaddja.no\nxn--bdddj-mrabd.no\nxn--brum-voa.no\nbahcavuotna.no\nxn--bhcavuotna-s4a.no\nbahccavuotna.no\nxn--bhccavuotna-k7a.no\nbaidar.no\nxn--bidr-5nac.no\nbajddar.no\nxn--bjddar-pta.no\nbalat.no\nxn--blt-elab.no\nbalestrand.no\nballangen.no\nbalsfjord.no\nbamble.no\nbardu.no\nbarum.no\nbatsfjord.no\nxn--btsfjord-9za.no\nbearalvahki.no\nxn--bearalvhki-y4a.no\nbeardu.no\nbeiarn.no\nberg.no\nbergen.no\nberlevag.no\nxn--berlevg-jxa.no\nbievat.no\nxn--bievt-0qa.no\nbindal.no\nbirkenes.no\nbjerkreim.no\nbjugn.no\nbodo.no\nxn--bod-2na.no\nbokn.no\nbomlo.no\nxn--bmlo-gra.no\nbremanger.no\nbronnoy.no\nxn--brnny-wuac.no\nbudejju.no\nnes.buskerud.no\nbygland.no\nbykle.no\ncahcesuolo.no\nxn--hcesuolo-7ya35b.no\ndavvenjarga.no\nxn--davvenjrga-y4a.no\ndavvesiida.no\ndeatnu.no\ndielddanuorri.no\ndivtasvuodna.no\ndivttasvuotna.no\ndonna.no\nxn--dnna-gra.no\ndovre.no\ndrammen.no\ndrangedal.no\ndyroy.no\nxn--dyry-ira.no\neid.no\neidfjord.no\neidsberg.no\neidskog.no\neidsvoll.no\neigersund.no\nelverum.no\nenebakk.no\nengerdal.no\netne.no\netnedal.no\nevenassi.no\nxn--eveni-0qa01ga.no\nevenes.no\nevje-og-hornnes.no\nfarsund.no\nfauske.no\nfedje.no\nfet.no\nfinnoy.no\nxn--finny-yua.no\nfitjar.no\nfjaler.no\nfjell.no\nfla.no\nxn--fl-zia.no\nflakstad.no\nflatanger.no\nflekkefjord.no\nflesberg.no\nflora.no\nfolldal.no\nforde.no\nxn--frde-gra.no\nforsand.no\nfosnes.no\nxn--frna-woa.no\nfrana.no\nfrogn.no\nfroland.no\nfrosta.no\nfroya.no\nxn--frya-hra.no\nfuoisku.no\nfuossko.no\nfusa.no\nfyresdal.no\ngaivuotna.no\nxn--givuotna-8ya.no\ngalsa.no\nxn--gls-elac.no\ngamvik.no\ngangaviika.no\nxn--ggaviika-8ya47h.no\ngaular.no\ngausdal.no\ngiehtavuoatna.no\ngildeskal.no\nxn--gildeskl-g0a.no\ngiske.no\ngjemnes.no\ngjerdrum.no\ngjerstad.no\ngjesdal.no\ngjovik.no\nxn--gjvik-wua.no\ngloppen.no\ngol.no\ngran.no\ngrane.no\ngranvin.no\ngratangen.no\ngrimstad.no\ngrong.no\ngrue.no\ngulen.no\nguovdageaidnu.no\nha.no\nxn--h-2fa.no\nhabmer.no\nxn--hbmer-xqa.no\nhadsel.no\nxn--hgebostad-g3a.no\nhagebostad.no\nhalden.no\nhalsa.no\nhamar.no\nhamaroy.no\nxn--hamary-fya.no\nhammarfeasta.no\nxn--hmmrfeasta-s4ac.no\nhammerfest.no\nhapmir.no\nxn--hpmir-xqa.no\nharam.no\nhareid.no\nharstad.no\nhasvik.no\nhattfjelldal.no\nhaugesund.no\nos.hedmark.no\nvaler.hedmark.no\nxn--vler-qoa.hedmark.no\nhemne.no\nhemnes.no\nhemsedal.no\nhitra.no\nhjartdal.no\nhjelmeland.no\nhobol.no\nxn--hobl-ira.no\nhof.no\nhol.no\nhole.no\nholmestrand.no\nholtalen.no\nxn--holtlen-hxa.no\nos.hordaland.no\nhornindal.no\nhorten.no\nhoyanger.no\nxn--hyanger-q1a.no\nhoylandet.no\nxn--hylandet-54a.no\nhurdal.no\nhurum.no\nhvaler.no\nhyllestad.no\nibestad.no\ninderoy.no\nxn--indery-fya.no\niveland.no\nivgu.no\njevnaker.no\njolster.no\nxn--jlster-bya.no\njondal.no\nkafjord.no\nxn--kfjord-iua.no\nkarasjohka.no\nxn--krjohka-hwab49j.no\nkarasjok.no\nkarlsoy.no\nxn--karlsy-fya.no\nkarmoy.no\nxn--karmy-yua.no\nkautokeino.no\nklabu.no\nxn--klbu-woa.no\nklepp.no\nkongsberg.no\nkongsvinger.no\nkraanghke.no\nxn--kranghke-b0a.no\nkragero.no\nxn--krager-gya.no\nkristiansand.no\nkristiansund.no\nkrodsherad.no\nxn--krdsherad-m8a.no\nxn--kvfjord-nxa.no\nxn--kvnangen-k0a.no\nkvafjord.no\nkvalsund.no\nkvam.no\nkvanangen.no\nkvinesdal.no\nkvinnherad.no\nkviteseid.no\nkvitsoy.no\nxn--kvitsy-fya.no\nlaakesvuemie.no\nxn--lrdal-sra.no\nlahppi.no\nxn--lhppi-xqa.no\nlardal.no\nlarvik.no\nlavagis.no\nlavangen.no\nleangaviika.no\nxn--leagaviika-52b.no\nlebesby.no\nleikanger.no\nleirfjord.no\nleka.no\nleksvik.no\nlenvik.no\nlerdal.no\nlesja.no\nlevanger.no\nlier.no\nlierne.no\nlillehammer.no\nlillesand.no\nlindas.no\nxn--linds-pra.no\nlindesnes.no\nloabat.no\nxn--loabt-0qa.no\nlodingen.no\nxn--ldingen-q1a.no\nlom.no\nloppa.no\nlorenskog.no\nxn--lrenskog-54a.no\nloten.no\nxn--lten-gra.no\nlund.no\nlunner.no\nluroy.no\nxn--lury-ira.no\nluster.no\nlyngdal.no\nlyngen.no\nmalatvuopmi.no\nxn--mlatvuopmi-s4a.no\nmalselv.no\nxn--mlselv-iua.no\nmalvik.no\nmandal.no\nmarker.no\nmarnardal.no\nmasfjorden.no\nmasoy.no\nxn--msy-ula0h.no\nmatta-varjjat.no\nxn--mtta-vrjjat-k7af.no\nmeland.no\nmeldal.no\nmelhus.no\nmeloy.no\nxn--mely-ira.no\nmeraker.no\nxn--merker-kua.no\nmidsund.no\nmidtre-gauldal.no\nmoareke.no\nxn--moreke-jua.no\nmodalen.no\nmodum.no\nmolde.no\nheroy.more-og-romsdal.no\nsande.more-og-romsdal.no\nxn--hery-ira.xn--mre-og-romsdal-qqb.no\nsande.xn--mre-og-romsdal-qqb.no\nmoskenes.no\nmoss.no\nmuosat.no\nxn--muost-0qa.no\nnaamesjevuemie.no\nxn--nmesjevuemie-tcba.no\nxn--nry-yla5g.no\nnamdalseid.no\nnamsos.no\nnamsskogan.no\nnannestad.no\nnaroy.no\nnarviika.no\nnarvik.no\nnaustdal.no\nnavuotna.no\nxn--nvuotna-hwa.no\nnedre-eiker.no\nnesna.no\nnesodden.no\nnesseby.no\nnesset.no\nnissedal.no\nnittedal.no\nnord-aurdal.no\nnord-fron.no\nnord-odal.no\nnorddal.no\nnordkapp.no\nbo.nordland.no\nxn--b-5ga.nordland.no\nheroy.nordland.no\nxn--hery-ira.nordland.no\nnordre-land.no\nnordreisa.no\nnore-og-uvdal.no\nnotodden.no\nnotteroy.no\nxn--nttery-byae.no\nodda.no\noksnes.no\nxn--ksnes-uua.no\nomasvuotna.no\noppdal.no\noppegard.no\nxn--oppegrd-ixa.no\norkdal.no\norland.no\nxn--rland-uua.no\norskog.no\nxn--rskog-uua.no\norsta.no\nxn--rsta-fra.no\nosen.no\nosteroy.no\nxn--ostery-fya.no\nvaler.ostfold.no\nxn--vler-qoa.xn--stfold-9xa.no\nostre-toten.no\nxn--stre-toten-zcb.no\noverhalla.no\novre-eiker.no\nxn--vre-eiker-k8a.no\noyer.no\nxn--yer-zna.no\noygarden.no\nxn--ygarden-p1a.no\noystre-slidre.no\nxn--ystre-slidre-ujb.no\nporsanger.no\nporsangu.no\nxn--porsgu-sta26f.no\nporsgrunn.no\nrade.no\nxn--rde-ula.no\nradoy.no\nxn--rady-ira.no\nxn--rlingen-mxa.no\nrahkkeravju.no\nxn--rhkkervju-01af.no\nraisa.no\nxn--risa-5na.no\nrakkestad.no\nralingen.no\nrana.no\nrandaberg.no\nrauma.no\nre.no\nrendalen.no\nrennebu.no\nrennesoy.no\nxn--rennesy-v1a.no\nrindal.no\nringebu.no\nringerike.no\nringsaker.no\nrisor.no\nxn--risr-ira.no\nrissa.no\nroan.no\nrodoy.no\nxn--rdy-0nab.no\nrollag.no\nromsa.no\nromskog.no\nxn--rmskog-bya.no\nroros.no\nxn--rros-gra.no\nrost.no\nxn--rst-0na.no\nroyken.no\nxn--ryken-vua.no\nroyrvik.no\nxn--ryrvik-bya.no\nruovat.no\nrygge.no\nsalangen.no\nsalat.no\nxn--slat-5na.no\nxn--slt-elab.no\nsaltdal.no\nsamnanger.no\nsandefjord.no\nsandnes.no\nsandoy.no\nxn--sandy-yua.no\nsarpsborg.no\nsauda.no\nsauherad.no\nsel.no\nselbu.no\nselje.no\nseljord.no\nsiellak.no\nsigdal.no\nsiljan.no\nsirdal.no\nskanit.no\nxn--sknit-yqa.no\nskanland.no\nxn--sknland-fxa.no\nskaun.no\nskedsmo.no\nski.no\nskien.no\nskierva.no\nxn--skierv-uta.no\nskiptvet.no\nskjak.no\nxn--skjk-soa.no\nskjervoy.no\nxn--skjervy-v1a.no\nskodje.no\nsmola.no\nxn--smla-hra.no\nsnaase.no\nxn--snase-nra.no\nsnasa.no\nxn--snsa-roa.no\nsnillfjord.no\nsnoasa.no\nsogndal.no\nsogne.no\nxn--sgne-gra.no\nsokndal.no\nsola.no\nsolund.no\nsomna.no\nxn--smna-gra.no\nsondre-land.no\nxn--sndre-land-0cb.no\nsongdalen.no\nsor-aurdal.no\nxn--sr-aurdal-l8a.no\nsor-fron.no\nxn--sr-fron-q1a.no\nsor-odal.no\nxn--sr-odal-q1a.no\nsor-varanger.no\nxn--sr-varanger-ggb.no\nsorfold.no\nxn--srfold-bya.no\nsorreisa.no\nxn--srreisa-q1a.no\nsortland.no\nsorum.no\nxn--srum-gra.no\nspydeberg.no\nstange.no\nstavanger.no\nsteigen.no\nsteinkjer.no\nstjordal.no\nxn--stjrdal-s1a.no\nstokke.no\nstor-elvdal.no\nstord.no\nstordal.no\nstorfjord.no\nstrand.no\nstranda.no\nstryn.no\nsula.no\nsuldal.no\nsund.no\nsunndal.no\nsurnadal.no\nsveio.no\nsvelvik.no\nsykkylven.no\ntana.no\nbo.telemark.no\nxn--b-5ga.telemark.no\ntime.no\ntingvoll.no\ntinn.no\ntjeldsund.no\ntjome.no\nxn--tjme-hra.no\ntokke.no\ntolga.no\ntonsberg.no\nxn--tnsberg-q1a.no\ntorsken.no\nxn--trna-woa.no\ntrana.no\ntranoy.no\nxn--trany-yua.no\ntroandin.no\ntrogstad.no\nxn--trgstad-r1a.no\ntromsa.no\ntromso.no\nxn--troms-zua.no\ntrondheim.no\ntrysil.no\ntvedestrand.no\ntydal.no\ntynset.no\ntysfjord.no\ntysnes.no\nxn--tysvr-vra.no\ntysvar.no\nullensaker.no\nullensvang.no\nulstein.no\nulvik.no\nunjarga.no\nxn--unjrga-rta.no\nutsira.no\nvaapste.no\nvadso.no\nxn--vads-jra.no\nxn--vry-yla5g.no\nvaga.no\nxn--vg-yiab.no\nvagan.no\nxn--vgan-qoa.no\nvagsoy.no\nxn--vgsy-qoa0j.no\nvaksdal.no\nvalle.no\nvang.no\nvanylven.no\nvardo.no\nxn--vard-jra.no\nvarggat.no\nxn--vrggt-xqad.no\nvaroy.no\nvefsn.no\nvega.no\nvegarshei.no\nxn--vegrshei-c0a.no\nvennesla.no\nverdal.no\nverran.no\nvestby.no\nsande.vestfold.no\nvestnes.no\nvestre-slidre.no\nvestre-toten.no\nvestvagoy.no\nxn--vestvgy-ixa6o.no\nvevelstad.no\nvik.no\nvikna.no\nvindafjord.no\nvoagat.no\nvolda.no\nvoss.no\n*.np\nnr\nbiz.nr\ncom.nr\nedu.nr\ngov.nr\ninfo.nr\nnet.nr\norg.nr\nnu\nnz\nac.nz\nco.nz\ncri.nz\ngeek.nz\ngen.nz\ngovt.nz\nhealth.nz\niwi.nz\nkiwi.nz\nmaori.nz\nxn--mori-qsa.nz\nmil.nz\nnet.nz\norg.nz\nparliament.nz\nschool.nz\nom\nco.om\ncom.om\nedu.om\ngov.om\nmed.om\nmuseum.om\nnet.om\norg.om\npro.om\nonion\norg\npa\nabo.pa\nac.pa\ncom.pa\nedu.pa\ngob.pa\ning.pa\nmed.pa\nnet.pa\nnom.pa\norg.pa\nsld.pa\npe\ncom.pe\nedu.pe\ngob.pe\nmil.pe\nnet.pe\nnom.pe\norg.pe\npf\ncom.pf\nedu.pf\norg.pf\n*.pg\nph\ncom.ph\nedu.ph\ngov.ph\ni.ph\nmil.ph\nnet.ph\nngo.ph\norg.ph\npk\nac.pk\nbiz.pk\ncom.pk\nedu.pk\nfam.pk\ngkp.pk\ngob.pk\ngog.pk\ngok.pk\ngop.pk\ngos.pk\ngov.pk\nnet.pk\norg.pk\nweb.pk\npl\ncom.pl\nnet.pl\norg.pl\nagro.pl\naid.pl\natm.pl\nauto.pl\nbiz.pl\nedu.pl\ngmina.pl\ngsm.pl\ninfo.pl\nmail.pl\nmedia.pl\nmiasta.pl\nmil.pl\nnieruchomosci.pl\nnom.pl\npc.pl\npowiat.pl\npriv.pl\nrealestate.pl\nrel.pl\nsex.pl\nshop.pl\nsklep.pl\nsos.pl\nszkola.pl\ntargi.pl\ntm.pl\ntourism.pl\ntravel.pl\nturystyka.pl\ngov.pl\nap.gov.pl\ngriw.gov.pl\nic.gov.pl\nis.gov.pl\nkmpsp.gov.pl\nkonsulat.gov.pl\nkppsp.gov.pl\nkwp.gov.pl\nkwpsp.gov.pl\nmup.gov.pl\nmw.gov.pl\noia.gov.pl\noirm.gov.pl\noke.gov.pl\noow.gov.pl\noschr.gov.pl\noum.gov.pl\npa.gov.pl\npinb.gov.pl\npiw.gov.pl\npo.gov.pl\npr.gov.pl\npsp.gov.pl\npsse.gov.pl\npup.gov.pl\nrzgw.gov.pl\nsa.gov.pl\nsdn.gov.pl\nsko.gov.pl\nso.gov.pl\nsr.gov.pl\nstarostwo.gov.pl\nug.gov.pl\nugim.gov.pl\num.gov.pl\numig.gov.pl\nupow.gov.pl\nuppo.gov.pl\nus.gov.pl\nuw.gov.pl\nuzs.gov.pl\nwif.gov.pl\nwiih.gov.pl\nwinb.gov.pl\nwios.gov.pl\nwitd.gov.pl\nwiw.gov.pl\nwkz.gov.pl\nwsa.gov.pl\nwskr.gov.pl\nwsse.gov.pl\nwuoz.gov.pl\nwzmiuw.gov.pl\nzp.gov.pl\nzpisdn.gov.pl\naugustow.pl\nbabia-gora.pl\nbedzin.pl\nbeskidy.pl\nbialowieza.pl\nbialystok.pl\nbielawa.pl\nbieszczady.pl\nboleslawiec.pl\nbydgoszcz.pl\nbytom.pl\ncieszyn.pl\nczeladz.pl\nczest.pl\ndlugoleka.pl\nelblag.pl\nelk.pl\nglogow.pl\ngniezno.pl\ngorlice.pl\ngrajewo.pl\nilawa.pl\njaworzno.pl\njelenia-gora.pl\njgora.pl\nkalisz.pl\nkarpacz.pl\nkartuzy.pl\nkaszuby.pl\nkatowice.pl\nkazimierz-dolny.pl\nkepno.pl\nketrzyn.pl\nklodzko.pl\nkobierzyce.pl\nkolobrzeg.pl\nkonin.pl\nkonskowola.pl\nkutno.pl\nlapy.pl\nlebork.pl\nlegnica.pl\nlezajsk.pl\nlimanowa.pl\nlomza.pl\nlowicz.pl\nlubin.pl\nlukow.pl\nmalbork.pl\nmalopolska.pl\nmazowsze.pl\nmazury.pl\nmielec.pl\nmielno.pl\nmragowo.pl\nnaklo.pl\nnowaruda.pl\nnysa.pl\nolawa.pl\nolecko.pl\nolkusz.pl\nolsztyn.pl\nopoczno.pl\nopole.pl\nostroda.pl\nostroleka.pl\nostrowiec.pl\nostrowwlkp.pl\npila.pl\npisz.pl\npodhale.pl\npodlasie.pl\npolkowice.pl\npomorskie.pl\npomorze.pl\nprochowice.pl\npruszkow.pl\nprzeworsk.pl\npulawy.pl\nradom.pl\nrawa-maz.pl\nrybnik.pl\nrzeszow.pl\nsanok.pl\nsejny.pl\nskoczow.pl\nslask.pl\nslupsk.pl\nsosnowiec.pl\nstalowa-wola.pl\nstarachowice.pl\nstargard.pl\nsuwalki.pl\nswidnica.pl\nswiebodzin.pl\nswinoujscie.pl\nszczecin.pl\nszczytno.pl\ntarnobrzeg.pl\ntgory.pl\nturek.pl\ntychy.pl\nustka.pl\nwalbrzych.pl\nwarmia.pl\nwarszawa.pl\nwaw.pl\nwegrow.pl\nwielun.pl\nwlocl.pl\nwloclawek.pl\nwodzislaw.pl\nwolomin.pl\nwroclaw.pl\nzachpomor.pl\nzagan.pl\nzarow.pl\nzgora.pl\nzgorzelec.pl\npm\npn\nco.pn\nedu.pn\ngov.pn\nnet.pn\norg.pn\npost\npr\nbiz.pr\ncom.pr\nedu.pr\ngov.pr\ninfo.pr\nisla.pr\nname.pr\nnet.pr\norg.pr\npro.pr\nac.pr\nest.pr\nprof.pr\npro\naaa.pro\naca.pro\nacct.pro\navocat.pro\nbar.pro\ncpa.pro\neng.pro\njur.pro\nlaw.pro\nmed.pro\nrecht.pro\nps\ncom.ps\nedu.ps\ngov.ps\nnet.ps\norg.ps\nplo.ps\nsec.ps\npt\ncom.pt\nedu.pt\ngov.pt\nint.pt\nnet.pt\nnome.pt\norg.pt\npubl.pt\npw\ngov.pw\npy\ncom.py\ncoop.py\nedu.py\ngov.py\nmil.py\nnet.py\norg.py\nqa\ncom.qa\nedu.qa\ngov.qa\nmil.qa\nname.qa\nnet.qa\norg.qa\nsch.qa\nre\nasso.re\ncom.re\nro\narts.ro\ncom.ro\nfirm.ro\ninfo.ro\nnom.ro\nnt.ro\norg.ro\nrec.ro\nstore.ro\ntm.ro\nwww.ro\nrs\nac.rs\nco.rs\nedu.rs\ngov.rs\nin.rs\norg.rs\nru\nrw\nac.rw\nco.rw\ncoop.rw\ngov.rw\nmil.rw\nnet.rw\norg.rw\nsa\ncom.sa\nedu.sa\ngov.sa\nmed.sa\nnet.sa\norg.sa\npub.sa\nsch.sa\nsb\ncom.sb\nedu.sb\ngov.sb\nnet.sb\norg.sb\nsc\ncom.sc\nedu.sc\ngov.sc\nnet.sc\norg.sc\nsd\ncom.sd\nedu.sd\ngov.sd\ninfo.sd\nmed.sd\nnet.sd\norg.sd\ntv.sd\nse\na.se\nac.se\nb.se\nbd.se\nbrand.se\nc.se\nd.se\ne.se\nf.se\nfh.se\nfhsk.se\nfhv.se\ng.se\nh.se\ni.se\nk.se\nkomforb.se\nkommunalforbund.se\nkomvux.se\nl.se\nlanbib.se\nm.se\nn.se\nnaturbruksgymn.se\no.se\norg.se\np.se\nparti.se\npp.se\npress.se\nr.se\ns.se\nt.se\ntm.se\nu.se\nw.se\nx.se\ny.se\nz.se\nsg\ncom.sg\nedu.sg\ngov.sg\nnet.sg\norg.sg\nsh\ncom.sh\ngov.sh\nmil.sh\nnet.sh\norg.sh\nsi\nsj\nsk\norg.sk\nsl\ncom.sl\nedu.sl\ngov.sl\nnet.sl\norg.sl\nsm\nsn\nart.sn\ncom.sn\nedu.sn\ngouv.sn\norg.sn\nuniv.sn\nso\ncom.so\nedu.so\ngov.so\nme.so\nnet.so\norg.so\nsr\nss\nbiz.ss\nco.ss\ncom.ss\nedu.ss\ngov.ss\nme.ss\nnet.ss\norg.ss\nsch.ss\nst\nco.st\ncom.st\nconsulado.st\nedu.st\nembaixada.st\nmil.st\nnet.st\norg.st\nprincipe.st\nsaotome.st\nstore.st\nsu\nsv\ncom.sv\nedu.sv\ngob.sv\norg.sv\nred.sv\nsx\ngov.sx\nsy\ncom.sy\nedu.sy\ngov.sy\nmil.sy\nnet.sy\norg.sy\nsz\nac.sz\nco.sz\norg.sz\ntc\ntd\ntel\ntf\ntg\nth\nac.th\nco.th\ngo.th\nin.th\nmi.th\nnet.th\nor.th\ntj\nbiz.tj\nco.tj\ncom.tj\nedu.tj\ngo.tj\ngov.tj\nint.tj\nmil.tj\nname.tj\nnet.tj\nnic.tj\norg.tj\ntest.tj\nweb.tj\ntk\ntl\ngov.tl\ntm\nco.tm\ncom.tm\nedu.tm\ngov.tm\nmil.tm\nnet.tm\nnom.tm\norg.tm\ntn\ncom.tn\nens.tn\nfin.tn\ngov.tn\nind.tn\ninfo.tn\nintl.tn\nmincom.tn\nnat.tn\nnet.tn\norg.tn\nperso.tn\ntourism.tn\nto\ncom.to\nedu.to\ngov.to\nmil.to\nnet.to\norg.to\ntr\nav.tr\nbbs.tr\nbel.tr\nbiz.tr\ncom.tr\ndr.tr\nedu.tr\ngen.tr\ngov.tr\ninfo.tr\nk12.tr\nkep.tr\nmil.tr\nname.tr\nnet.tr\norg.tr\npol.tr\ntel.tr\ntsk.tr\ntv.tr\nweb.tr\nnc.tr\ngov.nc.tr\ntt\nbiz.tt\nco.tt\ncom.tt\nedu.tt\ngov.tt\ninfo.tt\nmil.tt\nname.tt\nnet.tt\norg.tt\npro.tt\ntv\ntw\nclub.tw\ncom.tw\nebiz.tw\nedu.tw\ngame.tw\ngov.tw\nidv.tw\nmil.tw\nnet.tw\norg.tw\ntz\nac.tz\nco.tz\ngo.tz\nhotel.tz\ninfo.tz\nme.tz\nmil.tz\nmobi.tz\nne.tz\nor.tz\nsc.tz\ntv.tz\nua\ncom.ua\nedu.ua\ngov.ua\nin.ua\nnet.ua\norg.ua\ncherkassy.ua\ncherkasy.ua\nchernigov.ua\nchernihiv.ua\nchernivtsi.ua\nchernovtsy.ua\nck.ua\ncn.ua\ncr.ua\ncrimea.ua\ncv.ua\ndn.ua\ndnepropetrovsk.ua\ndnipropetrovsk.ua\ndonetsk.ua\ndp.ua\nif.ua\nivano-frankivsk.ua\nkh.ua\nkharkiv.ua\nkharkov.ua\nkherson.ua\nkhmelnitskiy.ua\nkhmelnytskyi.ua\nkiev.ua\nkirovograd.ua\nkm.ua\nkr.ua\nkropyvnytskyi.ua\nkrym.ua\nks.ua\nkv.ua\nkyiv.ua\nlg.ua\nlt.ua\nlugansk.ua\nluhansk.ua\nlutsk.ua\nlv.ua\nlviv.ua\nmk.ua\nmykolaiv.ua\nnikolaev.ua\nod.ua\nodesa.ua\nodessa.ua\npl.ua\npoltava.ua\nrivne.ua\nrovno.ua\nrv.ua\nsb.ua\nsebastopol.ua\nsevastopol.ua\nsm.ua\nsumy.ua\nte.ua\nternopil.ua\nuz.ua\nuzhgorod.ua\nuzhhorod.ua\nvinnica.ua\nvinnytsia.ua\nvn.ua\nvolyn.ua\nyalta.ua\nzakarpattia.ua\nzaporizhzhe.ua\nzaporizhzhia.ua\nzhitomir.ua\nzhytomyr.ua\nzp.ua\nzt.ua\nug\nac.ug\nco.ug\ncom.ug\nedu.ug\ngo.ug\ngov.ug\nmil.ug\nne.ug\nor.ug\norg.ug\nsc.ug\nus.ug\nuk\nac.uk\nco.uk\ngov.uk\nltd.uk\nme.uk\nnet.uk\nnhs.uk\norg.uk\nplc.uk\npolice.uk\n*.sch.uk\nus\ndni.us\nisa.us\nnsn.us\nak.us\nal.us\nar.us\nas.us\naz.us\nca.us\nco.us\nct.us\ndc.us\nde.us\nfl.us\nga.us\ngu.us\nhi.us\nia.us\nid.us\nil.us\nin.us\nks.us\nky.us\nla.us\nma.us\nmd.us\nme.us\nmi.us\nmn.us\nmo.us\nms.us\nmt.us\nnc.us\nnd.us\nne.us\nnh.us\nnj.us\nnm.us\nnv.us\nny.us\noh.us\nok.us\nor.us\npa.us\npr.us\nri.us\nsc.us\nsd.us\ntn.us\ntx.us\nut.us\nva.us\nvi.us\nvt.us\nwa.us\nwi.us\nwv.us\nwy.us\nk12.ak.us\nk12.al.us\nk12.ar.us\nk12.as.us\nk12.az.us\nk12.ca.us\nk12.co.us\nk12.ct.us\nk12.dc.us\nk12.fl.us\nk12.ga.us\nk12.gu.us\nk12.ia.us\nk12.id.us\nk12.il.us\nk12.in.us\nk12.ks.us\nk12.ky.us\nk12.la.us\nk12.ma.us\nk12.md.us\nk12.me.us\nk12.mi.us\nk12.mn.us\nk12.mo.us\nk12.ms.us\nk12.mt.us\nk12.nc.us\nk12.ne.us\nk12.nh.us\nk12.nj.us\nk12.nm.us\nk12.nv.us\nk12.ny.us\nk12.oh.us\nk12.ok.us\nk12.or.us\nk12.pa.us\nk12.pr.us\nk12.sc.us\nk12.tn.us\nk12.tx.us\nk12.ut.us\nk12.va.us\nk12.vi.us\nk12.vt.us\nk12.wa.us\nk12.wi.us\ncc.ak.us\nlib.ak.us\ncc.al.us\nlib.al.us\ncc.ar.us\nlib.ar.us\ncc.as.us\nlib.as.us\ncc.az.us\nlib.az.us\ncc.ca.us\nlib.ca.us\ncc.co.us\nlib.co.us\ncc.ct.us\nlib.ct.us\ncc.dc.us\nlib.dc.us\ncc.de.us\ncc.fl.us\nlib.fl.us\ncc.ga.us\nlib.ga.us\ncc.gu.us\nlib.gu.us\ncc.hi.us\nlib.hi.us\ncc.ia.us\nlib.ia.us\ncc.id.us\nlib.id.us\ncc.il.us\nlib.il.us\ncc.in.us\nlib.in.us\ncc.ks.us\nlib.ks.us\ncc.ky.us\nlib.ky.us\ncc.la.us\nlib.la.us\ncc.ma.us\nlib.ma.us\ncc.md.us\nlib.md.us\ncc.me.us\nlib.me.us\ncc.mi.us\nlib.mi.us\ncc.mn.us\nlib.mn.us\ncc.mo.us\nlib.mo.us\ncc.ms.us\ncc.mt.us\nlib.mt.us\ncc.nc.us\nlib.nc.us\ncc.ne.us\nlib.ne.us\ncc.nh.us\nlib.nh.us\ncc.nj.us\nlib.nj.us\ncc.nm.us\nlib.nm.us\ncc.nv.us\nlib.nv.us\ncc.ny.us\nlib.ny.us\ncc.oh.us\nlib.oh.us\ncc.ok.us\nlib.ok.us\ncc.or.us\nlib.or.us\ncc.pa.us\nlib.pa.us\ncc.pr.us\nlib.pr.us\ncc.ri.us\nlib.ri.us\ncc.sc.us\nlib.sc.us\ncc.sd.us\nlib.sd.us\ncc.tn.us\nlib.tn.us\ncc.tx.us\nlib.tx.us\ncc.ut.us\nlib.ut.us\ncc.va.us\nlib.va.us\ncc.vi.us\nlib.vi.us\ncc.vt.us\nlib.vt.us\ncc.wa.us\nlib.wa.us\ncc.wi.us\nlib.wi.us\ncc.wv.us\ncc.wy.us\nk12.wy.us\nlib.wy.us\nchtr.k12.ma.us\nparoch.k12.ma.us\npvt.k12.ma.us\nann-arbor.mi.us\ncog.mi.us\ndst.mi.us\neaton.mi.us\ngen.mi.us\nmus.mi.us\ntec.mi.us\nwashtenaw.mi.us\nuy\ncom.uy\nedu.uy\ngub.uy\nmil.uy\nnet.uy\norg.uy\nuz\nco.uz\ncom.uz\nnet.uz\norg.uz\nva\nvc\ncom.vc\nedu.vc\ngov.vc\nmil.vc\nnet.vc\norg.vc\nve\narts.ve\nbib.ve\nco.ve\ncom.ve\ne12.ve\nedu.ve\nemprende.ve\nfirm.ve\ngob.ve\ngov.ve\nia.ve\ninfo.ve\nint.ve\nmil.ve\nnet.ve\nnom.ve\norg.ve\nrar.ve\nrec.ve\nstore.ve\ntec.ve\nweb.ve\nvg\nedu.vg\nvi\nco.vi\ncom.vi\nk12.vi\nnet.vi\norg.vi\nvn\nac.vn\nai.vn\nbiz.vn\ncom.vn\nedu.vn\ngov.vn\nhealth.vn\nid.vn\ninfo.vn\nint.vn\nio.vn\nname.vn\nnet.vn\norg.vn\npro.vn\nangiang.vn\nbacgiang.vn\nbackan.vn\nbaclieu.vn\nbacninh.vn\nbaria-vungtau.vn\nbentre.vn\nbinhdinh.vn\nbinhduong.vn\nbinhphuoc.vn\nbinhthuan.vn\ncamau.vn\ncantho.vn\ncaobang.vn\ndaklak.vn\ndaknong.vn\ndanang.vn\ndienbien.vn\ndongnai.vn\ndongthap.vn\ngialai.vn\nhagiang.vn\nhaiduong.vn\nhaiphong.vn\nhanam.vn\nhanoi.vn\nhatinh.vn\nhaugiang.vn\nhoabinh.vn\nhue.vn\nhungyen.vn\nkhanhhoa.vn\nkiengiang.vn\nkontum.vn\nlaichau.vn\nlamdong.vn\nlangson.vn\nlaocai.vn\nlongan.vn\nnamdinh.vn\nnghean.vn\nninhbinh.vn\nninhthuan.vn\nphutho.vn\nphuyen.vn\nquangbinh.vn\nquangnam.vn\nquangngai.vn\nquangninh.vn\nquangtri.vn\nsoctrang.vn\nsonla.vn\ntayninh.vn\nthaibinh.vn\nthainguyen.vn\nthanhhoa.vn\nthanhphohochiminh.vn\nthuathienhue.vn\ntiengiang.vn\ntravinh.vn\ntuyenquang.vn\nvinhlong.vn\nvinhphuc.vn\nyenbai.vn\nvu\ncom.vu\nedu.vu\nnet.vu\norg.vu\nwf\nws\ncom.ws\nedu.ws\ngov.ws\nnet.ws\norg.ws\nyt\nxn--mgbaam7a8h\nxn--y9a3aq\nxn--54b7fta0cc\nxn--90ae\nxn--mgbcpq6gpa1a\nxn--90ais\nxn--fiqs8s\nxn--fiqz9s\nxn--lgbbat1ad8j\nxn--wgbh1c\nxn--e1a4c\nxn--qxa6a\nxn--mgbah1a3hjkrd\nxn--node\nxn--qxam\nxn--j6w193g\nxn--gmqw5a.xn--j6w193g\nxn--55qx5d.xn--j6w193g\nxn--mxtq1m.xn--j6w193g\nxn--wcvs22d.xn--j6w193g\nxn--uc0atv.xn--j6w193g\nxn--od0alg.xn--j6w193g\nxn--2scrj9c\nxn--3hcrj9c\nxn--45br5cyl\nxn--h2breg3eve\nxn--h2brj9c8c\nxn--mgbgu82a\nxn--rvc1e0am3e\nxn--h2brj9c\nxn--mgbbh1a\nxn--mgbbh1a71e\nxn--fpcrj9c3d\nxn--gecrj9c\nxn--s9brj9c\nxn--45brj9c\nxn--xkc2dl3a5ee0h\nxn--mgba3a4f16a\nxn--mgba3a4fra\nxn--mgbtx2b\nxn--mgbayh7gpa\nxn--3e0b707e\nxn--80ao21a\nxn--q7ce6a\nxn--fzc2c9e2c\nxn--xkc2al3hye2a\nxn--mgbc0a9azcg\nxn--d1alf\nxn--l1acc\nxn--mix891f\nxn--mix082f\nxn--mgbx4cd0ab\nxn--mgb9awbf\nxn--mgbai9azgqp6j\nxn--mgbai9a5eva00b\nxn--ygbi2ammx\nxn--90a3ac\nxn--80au.xn--90a3ac\nxn--90azh.xn--90a3ac\nxn--d1at.xn--90a3ac\nxn--c1avg.xn--90a3ac\nxn--o1ac.xn--90a3ac\nxn--o1ach.xn--90a3ac\nxn--p1ai\nxn--wgbl6a\nxn--mgberp4a5d4ar\nxn--mgberp4a5d4a87g\nxn--mgbqly7c0a67fbc\nxn--mgbqly7cvafr\nxn--mgbpl2fh\nxn--yfro4i67o\nxn--clchc0ea0b2g2a9gcd\nxn--ogbpf8fl\nxn--mgbtf8fl\nxn--o3cw4h\nxn--o3cyx2a.xn--o3cw4h\nxn--12co0c3b4eva.xn--o3cw4h\nxn--m3ch0j3a.xn--o3cw4h\nxn--h3cuzk1di.xn--o3cw4h\nxn--12c1fe0br.xn--o3cw4h\nxn--12cfi8ixb8l.xn--o3cw4h\nxn--pgbs0dh\nxn--kpry57d\nxn--kprw13d\nxn--nnx388a\nxn--j1amh\nxn--mgb2ddes\nxxx\nye\ncom.ye\nedu.ye\ngov.ye\nmil.ye\nnet.ye\norg.ye\nac.za\nagric.za\nalt.za\nco.za\nedu.za\ngov.za\ngrondar.za\nlaw.za\nmil.za\nnet.za\nngo.za\nnic.za\nnis.za\nnom.za\norg.za\nschool.za\ntm.za\nweb.za\nzm\nac.zm\nbiz.zm\nco.zm\ncom.zm\nedu.zm\ngov.zm\ninfo.zm\nmil.zm\nnet.zm\norg.zm\nsch.zm\nzw\nac.zw\nco.zw\ngov.zw\nmil.zw\norg.zw\naaa\naarp\nabb\nabbott\nabbvie\nabc\nable\nabogado\nabudhabi\nacademy\naccenture\naccountant\naccountants\naco\nactor\nads\nadult\naeg\naetna\nafl\nafrica\nagakhan\nagency\naig\nairbus\nairforce\nairtel\nakdn\nalibaba\nalipay\nallfinanz\nallstate\nally\nalsace\nalstom\namazon\namericanexpress\namericanfamily\namex\namfam\namica\namsterdam\nanalytics\nandroid\nanquan\nanz\naol\napartments\napp\napple\naquarelle\narab\naramco\narchi\narmy\nart\narte\nasda\nassociates\nathleta\nattorney\nauction\naudi\naudible\naudio\nauspost\nauthor\nauto\nautos\naws\naxa\nazure\nbaby\nbaidu\nbanamex\nband\nbank\nbar\nbarcelona\nbarclaycard\nbarclays\nbarefoot\nbargains\nbaseball\nbasketball\nbauhaus\nbayern\nbbc\nbbt\nbbva\nbcg\nbcn\nbeats\nbeauty\nbeer\nberlin\nbest\nbestbuy\nbet\nbharti\nbible\nbid\nbike\nbing\nbingo\nbio\nblack\nblackfriday\nblockbuster\nblog\nbloomberg\nblue\nbms\nbmw\nbnpparibas\nboats\nboehringer\nbofa\nbom\nbond\nboo\nbook\nbooking\nbosch\nbostik\nboston\nbot\nboutique\nbox\nbradesco\nbridgestone\nbroadway\nbroker\nbrother\nbrussels\nbuild\nbuilders\nbusiness\nbuy\nbuzz\nbzh\ncab\ncafe\ncal\ncall\ncalvinklein\ncam\ncamera\ncamp\ncanon\ncapetown\ncapital\ncapitalone\ncar\ncaravan\ncards\ncare\ncareer\ncareers\ncars\ncasa\ncase\ncash\ncasino\ncatering\ncatholic\ncba\ncbn\ncbre\ncenter\nceo\ncern\ncfa\ncfd\nchanel\nchannel\ncharity\nchase\nchat\ncheap\nchintai\nchristmas\nchrome\nchurch\ncipriani\ncircle\ncisco\ncitadel\nciti\ncitic\ncity\nclaims\ncleaning\nclick\nclinic\nclinique\nclothing\ncloud\nclub\nclubmed\ncoach\ncodes\ncoffee\ncollege\ncologne\ncommbank\ncommunity\ncompany\ncompare\ncomputer\ncomsec\ncondos\nconstruction\nconsulting\ncontact\ncontractors\ncooking\ncool\ncorsica\ncountry\ncoupon\ncoupons\ncourses\ncpa\ncredit\ncreditcard\ncreditunion\ncricket\ncrown\ncrs\ncruise\ncruises\ncuisinella\ncymru\ncyou\ndad\ndance\ndata\ndate\ndating\ndatsun\nday\ndclk\ndds\ndeal\ndealer\ndeals\ndegree\ndelivery\ndell\ndeloitte\ndelta\ndemocrat\ndental\ndentist\ndesi\ndesign\ndev\ndhl\ndiamonds\ndiet\ndigital\ndirect\ndirectory\ndiscount\ndiscover\ndish\ndiy\ndnp\ndocs\ndoctor\ndog\ndomains\ndot\ndownload\ndrive\ndtv\ndubai\ndupont\ndurban\ndvag\ndvr\nearth\neat\neco\nedeka\neducation\nemail\nemerck\nenergy\nengineer\nengineering\nenterprises\nepson\nequipment\nericsson\nerni\nesq\nestate\neurovision\neus\nevents\nexchange\nexpert\nexposed\nexpress\nextraspace\nfage\nfail\nfairwinds\nfaith\nfamily\nfan\nfans\nfarm\nfarmers\nfashion\nfast\nfedex\nfeedback\nferrari\nferrero\nfidelity\nfido\nfilm\nfinal\nfinance\nfinancial\nfire\nfirestone\nfirmdale\nfish\nfishing\nfit\nfitness\nflickr\nflights\nflir\nflorist\nflowers\nfly\nfoo\nfood\nfootball\nford\nforex\nforsale\nforum\nfoundation\nfox\nfree\nfresenius\nfrl\nfrogans\nfrontier\nftr\nfujitsu\nfun\nfund\nfurniture\nfutbol\nfyi\ngal\ngallery\ngallo\ngallup\ngame\ngames\ngap\ngarden\ngay\ngbiz\ngdn\ngea\ngent\ngenting\ngeorge\nggee\ngift\ngifts\ngives\ngiving\nglass\ngle\nglobal\nglobo\ngmail\ngmbh\ngmo\ngmx\ngodaddy\ngold\ngoldpoint\ngolf\ngoodyear\ngoog\ngoogle\ngop\ngot\ngrainger\ngraphics\ngratis\ngreen\ngripe\ngrocery\ngroup\ngucci\nguge\nguide\nguitars\nguru\nhair\nhamburg\nhangout\nhaus\nhbo\nhdfc\nhdfcbank\nhealth\nhealthcare\nhelp\nhelsinki\nhere\nhermes\nhiphop\nhisamitsu\nhitachi\nhiv\nhkt\nhockey\nholdings\nholiday\nhomedepot\nhomegoods\nhomes\nhomesense\nhonda\nhorse\nhospital\nhost\nhosting\nhot\nhotel\nhotels\nhotmail\nhouse\nhow\nhsbc\nhughes\nhyatt\nhyundai\nibm\nicbc\nice\nicu\nieee\nifm\nikano\nimamat\nimdb\nimmo\nimmobilien\ninc\nindustries\ninfiniti\ning\nink\ninstitute\ninsurance\ninsure\ninternational\nintuit\ninvestments\nipiranga\nirish\nismaili\nist\nistanbul\nitau\nitv\njaguar\njava\njcb\njeep\njetzt\njewelry\njio\njll\njmp\njnj\njoburg\njot\njoy\njpmorgan\njprs\njuegos\njuniper\nkaufen\nkddi\nkerryhotels\nkerryproperties\nkfh\nkia\nkids\nkim\nkindle\nkitchen\nkiwi\nkoeln\nkomatsu\nkosher\nkpmg\nkpn\nkrd\nkred\nkuokgroup\nkyoto\nlacaixa\nlamborghini\nlamer\nland\nlandrover\nlanxess\nlasalle\nlat\nlatino\nlatrobe\nlaw\nlawyer\nlds\nlease\nleclerc\nlefrak\nlegal\nlego\nlexus\nlgbt\nlidl\nlife\nlifeinsurance\nlifestyle\nlighting\nlike\nlilly\nlimited\nlimo\nlincoln\nlink\nlive\nliving\nllc\nllp\nloan\nloans\nlocker\nlocus\nlol\nlondon\nlotte\nlotto\nlove\nlpl\nlplfinancial\nltd\nltda\nlundbeck\nluxe\nluxury\nmadrid\nmaif\nmaison\nmakeup\nman\nmanagement\nmango\nmap\nmarket\nmarketing\nmarkets\nmarriott\nmarshalls\nmattel\nmba\nmckinsey\nmed\nmedia\nmeet\nmelbourne\nmeme\nmemorial\nmen\nmenu\nmerck\nmerckmsd\nmiami\nmicrosoft\nmini\nmint\nmit\nmitsubishi\nmlb\nmls\nmma\nmobile\nmoda\nmoe\nmoi\nmom\nmonash\nmoney\nmonster\nmormon\nmortgage\nmoscow\nmoto\nmotorcycles\nmov\nmovie\nmsd\nmtn\nmtr\nmusic\nnab\nnagoya\nnavy\nnba\nnec\nnetbank\nnetflix\nnetwork\nneustar\nnew\nnews\nnext\nnextdirect\nnexus\nnfl\nngo\nnhk\nnico\nnike\nnikon\nninja\nnissan\nnissay\nnokia\nnorton\nnow\nnowruz\nnowtv\nnra\nnrw\nntt\nnyc\nobi\nobserver\noffice\nokinawa\nolayan\nolayangroup\nollo\nomega\none\nong\nonl\nonline\nooo\nopen\noracle\norange\norganic\norigins\nosaka\notsuka\nott\novh\npage\npanasonic\nparis\npars\npartners\nparts\nparty\npay\npccw\npet\npfizer\npharmacy\nphd\nphilips\nphone\nphoto\nphotography\nphotos\nphysio\npics\npictet\npictures\npid\npin\nping\npink\npioneer\npizza\nplace\nplay\nplaystation\nplumbing\nplus\npnc\npohl\npoker\npolitie\nporn\npraxi\npress\nprime\nprod\nproductions\nprof\nprogressive\npromo\nproperties\nproperty\nprotection\npru\nprudential\npub\npwc\nqpon\nquebec\nquest\nracing\nradio\nread\nrealestate\nrealtor\nrealty\nrecipes\nred\nredumbrella\nrehab\nreise\nreisen\nreit\nreliance\nren\nrent\nrentals\nrepair\nreport\nrepublican\nrest\nrestaurant\nreview\nreviews\nrexroth\nrich\nrichardli\nricoh\nril\nrio\nrip\nrocks\nrodeo\nrogers\nroom\nrsvp\nrugby\nruhr\nrun\nrwe\nryukyu\nsaarland\nsafe\nsafety\nsakura\nsale\nsalon\nsamsclub\nsamsung\nsandvik\nsandvikcoromant\nsanofi\nsap\nsarl\nsas\nsave\nsaxo\nsbi\nsbs\nscb\nschaeffler\nschmidt\nscholarships\nschool\nschule\nschwarz\nscience\nscot\nsearch\nseat\nsecure\nsecurity\nseek\nselect\nsener\nservices\nseven\nsew\nsex\nsexy\nsfr\nshangrila\nsharp\nshell\nshia\nshiksha\nshoes\nshop\nshopping\nshouji\nshow\nsilk\nsina\nsingles\nsite\nski\nskin\nsky\nskype\nsling\nsmart\nsmile\nsncf\nsoccer\nsocial\nsoftbank\nsoftware\nsohu\nsolar\nsolutions\nsong\nsony\nsoy\nspa\nspace\nsport\nspot\nsrl\nstada\nstaples\nstar\nstatebank\nstatefarm\nstc\nstcgroup\nstockholm\nstorage\nstore\nstream\nstudio\nstudy\nstyle\nsucks\nsupplies\nsupply\nsupport\nsurf\nsurgery\nsuzuki\nswatch\nswiss\nsydney\nsystems\ntab\ntaipei\ntalk\ntaobao\ntarget\ntatamotors\ntatar\ntattoo\ntax\ntaxi\ntci\ntdk\nteam\ntech\ntechnology\ntemasek\ntennis\nteva\nthd\ntheater\ntheatre\ntiaa\ntickets\ntienda\ntips\ntires\ntirol\ntjmaxx\ntjx\ntkmaxx\ntmall\ntoday\ntokyo\ntools\ntop\ntoray\ntoshiba\ntotal\ntours\ntown\ntoyota\ntoys\ntrade\ntrading\ntraining\ntravel\ntravelers\ntravelersinsurance\ntrust\ntrv\ntube\ntui\ntunes\ntushu\ntvs\nubank\nubs\nunicom\nuniversity\nuno\nuol\nups\nvacations\nvana\nvanguard\nvegas\nventures\nverisign\nversicherung\nvet\nviajes\nvideo\nvig\nviking\nvillas\nvin\nvip\nvirgin\nvisa\nvision\nviva\nvivo\nvlaanderen\nvodka\nvolvo\nvote\nvoting\nvoto\nvoyage\nwales\nwalmart\nwalter\nwang\nwanggou\nwatch\nwatches\nweather\nweatherchannel\nweb\nwebcam\nweber\nwebsite\nwed\nwedding\nweibo\nweir\nwhoswho\nwien\nwiki\nwilliamhill\nwin\nwindows\nwine\nwinners\nwme\nwoodside\nwork\nworks\nworld\nwow\nwtc\nwtf\nxbox\nxerox\nxihuan\nxin\nxn--11b4c3d\nxn--1ck2e1b\nxn--1qqw23a\nxn--30rr7y\nxn--3bst00m\nxn--3ds443g\nxn--3pxu8k\nxn--42c2d9a\nxn--45q11c\nxn--4gbrim\nxn--55qw42g\nxn--55qx5d\nxn--5su34j936bgsg\nxn--5tzm5g\nxn--6frz82g\nxn--6qq986b3xl\nxn--80adxhks\nxn--80aqecdr1a\nxn--80asehdb\nxn--80aswg\nxn--8y0a063a\nxn--9dbq2a\nxn--9et52u\nxn--9krt00a\nxn--b4w605ferd\nxn--bck1b9a5dre4c\nxn--c1avg\nxn--c2br7g\nxn--cck2b3b\nxn--cckwcxetd\nxn--cg4bki\nxn--czr694b\nxn--czrs0t\nxn--czru2d\nxn--d1acj3b\nxn--eckvdtc9d\nxn--efvy88h\nxn--fct429k\nxn--fhbei\nxn--fiq228c5hs\nxn--fiq64b\nxn--fjq720a\nxn--flw351e\nxn--fzys8d69uvgm\nxn--g2xx48c\nxn--gckr3f0f\nxn--gk3at1e\nxn--hxt814e\nxn--i1b6b1a6a2e\nxn--imr513n\nxn--io0a7i\nxn--j1aef\nxn--jlq480n2rg\nxn--jvr189m\nxn--kcrx77d1x4a\nxn--kput3i\nxn--mgba3a3ejt\nxn--mgba7c0bbn0a\nxn--mgbab2bd\nxn--mgbca7dzdo\nxn--mgbi4ecexp\nxn--mgbt3dhd\nxn--mk1bu44c\nxn--mxtq1m\nxn--ngbc5azd\nxn--ngbe9e0a\nxn--ngbrx\nxn--nqv7f\nxn--nqv7fs00ema\nxn--nyqy26a\nxn--otu796d\nxn--p1acf\nxn--pssy2u\nxn--q9jyb4c\nxn--qcka1pmc\nxn--rhqv96g\nxn--rovu88b\nxn--ses554g\nxn--t60b56a\nxn--tckwe\nxn--tiq49xqyj\nxn--unup4y\nxn--vermgensberater-ctb\nxn--vermgensberatung-pwb\nxn--vhquv\nxn--vuq861b\nxn--w4r85el8fhu5dnra\nxn--w4rs40l\nxn--xhq521b\nxn--zfr164b\nxyz\nyachts\nyahoo\nyamaxun\nyandex\nyodobashi\nyoga\nyokohama\nyou\nyoutube\nyun\nzappos\nzara\nzero\nzip\nzone\nzuerich\nco.krd\nedu.krd\nart.pl\ngliwice.pl\nkrakow.pl\npoznan.pl\nwroc.pl\nzakopane.pl\ncc.ua\ninf.ua\nltd.ua\n611.to\na2hosted.com\ncpserver.com\nactivetrail.biz\nmyaddr.dev\nmyaddr.io\ndyn.addr.tools\nmyaddr.tools\nadobeaemcloud.com\n*.dev.adobeaemcloud.com\naem.live\nhlx.live\nadobeaemcloud.net\naem.network\naem.page\nhlx.page\naem.reviews\nadobeio-static.net\nadobeioruntime.net\nafrica.com\n*.auiusercontent.com\nbeep.pl\naiven.app\n*.aivencloud.com\nakadns.net\nakamai.net\nakamai-staging.net\nakamaiedge.net\nakamaiedge-staging.net\nakamaihd.net\nakamaihd-staging.net\nakamaiorigin.net\nakamaiorigin-staging.net\nakamaized.net\nakamaized-staging.net\nedgekey.net\nedgekey-staging.net\nedgesuite.net\nedgesuite-staging.net\nbarsy.ca\n*.compute.estate\n*.alces.network\nalibabacloudcs.com\nms.fun\nms.show\nkasserver.com\naltervista.org\nalwaysdata.net\nmyamaze.net\nexecute-api.cn-north-1.amazonaws.com.cn\nexecute-api.cn-northwest-1.amazonaws.com.cn\nexecute-api.af-south-1.amazonaws.com\nexecute-api.ap-east-1.amazonaws.com\nexecute-api.ap-northeast-1.amazonaws.com\nexecute-api.ap-northeast-2.amazonaws.com\nexecute-api.ap-northeast-3.amazonaws.com\nexecute-api.ap-south-1.amazonaws.com\nexecute-api.ap-south-2.amazonaws.com\nexecute-api.ap-southeast-1.amazonaws.com\nexecute-api.ap-southeast-2.amazonaws.com\nexecute-api.ap-southeast-3.amazonaws.com\nexecute-api.ap-southeast-4.amazonaws.com\nexecute-api.ap-southeast-5.amazonaws.com\nexecute-api.ca-central-1.amazonaws.com\nexecute-api.ca-west-1.amazonaws.com\nexecute-api.eu-central-1.amazonaws.com\nexecute-api.eu-central-2.amazonaws.com\nexecute-api.eu-north-1.amazonaws.com\nexecute-api.eu-south-1.amazonaws.com\nexecute-api.eu-south-2.amazonaws.com\nexecute-api.eu-west-1.amazonaws.com\nexecute-api.eu-west-2.amazonaws.com\nexecute-api.eu-west-3.amazonaws.com\nexecute-api.il-central-1.amazonaws.com\nexecute-api.me-central-1.amazonaws.com\nexecute-api.me-south-1.amazonaws.com\nexecute-api.sa-east-1.amazonaws.com\nexecute-api.us-east-1.amazonaws.com\nexecute-api.us-east-2.amazonaws.com\nexecute-api.us-gov-east-1.amazonaws.com\nexecute-api.us-gov-west-1.amazonaws.com\nexecute-api.us-west-1.amazonaws.com\nexecute-api.us-west-2.amazonaws.com\ncloudfront.net\nauth.af-south-1.amazoncognito.com\nauth.ap-east-1.amazoncognito.com\nauth.ap-northeast-1.amazoncognito.com\nauth.ap-northeast-2.amazoncognito.com\nauth.ap-northeast-3.amazoncognito.com\nauth.ap-south-1.amazoncognito.com\nauth.ap-south-2.amazoncognito.com\nauth.ap-southeast-1.amazoncognito.com\nauth.ap-southeast-2.amazoncognito.com\nauth.ap-southeast-3.amazoncognito.com\nauth.ap-southeast-4.amazoncognito.com\nauth.ap-southeast-5.amazoncognito.com\nauth.ap-southeast-7.amazoncognito.com\nauth.ca-central-1.amazoncognito.com\nauth.ca-west-1.amazoncognito.com\nauth.eu-central-1.amazoncognito.com\nauth.eu-central-2.amazoncognito.com\nauth.eu-north-1.amazoncognito.com\nauth.eu-south-1.amazoncognito.com\nauth.eu-south-2.amazoncognito.com\nauth.eu-west-1.amazoncognito.com\nauth.eu-west-2.amazoncognito.com\nauth.eu-west-3.amazoncognito.com\nauth.il-central-1.amazoncognito.com\nauth.me-central-1.amazoncognito.com\nauth.me-south-1.amazoncognito.com\nauth.mx-central-1.amazoncognito.com\nauth.sa-east-1.amazoncognito.com\nauth.us-east-1.amazoncognito.com\nauth-fips.us-east-1.amazoncognito.com\nauth.us-east-2.amazoncognito.com\nauth-fips.us-east-2.amazoncognito.com\nauth-fips.us-gov-east-1.amazoncognito.com\nauth-fips.us-gov-west-1.amazoncognito.com\nauth.us-west-1.amazoncognito.com\nauth-fips.us-west-1.amazoncognito.com\nauth.us-west-2.amazoncognito.com\nauth-fips.us-west-2.amazoncognito.com\nauth.cognito-idp.eusc-de-east-1.on.amazonwebservices.eu\n*.compute.amazonaws.com.cn\n*.compute.amazonaws.com\n*.compute-1.amazonaws.com\nus-east-1.amazonaws.com\nemrappui-prod.cn-north-1.amazonaws.com.cn\nemrnotebooks-prod.cn-north-1.amazonaws.com.cn\nemrstudio-prod.cn-north-1.amazonaws.com.cn\nemrappui-prod.cn-northwest-1.amazonaws.com.cn\nemrnotebooks-prod.cn-northwest-1.amazonaws.com.cn\nemrstudio-prod.cn-northwest-1.amazonaws.com.cn\nemrappui-prod.af-south-1.amazonaws.com\nemrnotebooks-prod.af-south-1.amazonaws.com\nemrstudio-prod.af-south-1.amazonaws.com\nemrappui-prod.ap-east-1.amazonaws.com\nemrnotebooks-prod.ap-east-1.amazonaws.com\nemrstudio-prod.ap-east-1.amazonaws.com\nemrappui-prod.ap-northeast-1.amazonaws.com\nemrnotebooks-prod.ap-northeast-1.amazonaws.com\nemrstudio-prod.ap-northeast-1.amazonaws.com\nemrappui-prod.ap-northeast-2.amazonaws.com\nemrnotebooks-prod.ap-northeast-2.amazonaws.com\nemrstudio-prod.ap-northeast-2.amazonaws.com\nemrappui-prod.ap-northeast-3.amazonaws.com\nemrnotebooks-prod.ap-northeast-3.amazonaws.com\nemrstudio-prod.ap-northeast-3.amazonaws.com\nemrappui-prod.ap-south-1.amazonaws.com\nemrnotebooks-prod.ap-south-1.amazonaws.com\nemrstudio-prod.ap-south-1.amazonaws.com\nemrappui-prod.ap-south-2.amazonaws.com\nemrnotebooks-prod.ap-south-2.amazonaws.com\nemrstudio-prod.ap-south-2.amazonaws.com\nemrappui-prod.ap-southeast-1.amazonaws.com\nemrnotebooks-prod.ap-southeast-1.amazonaws.com\nemrstudio-prod.ap-southeast-1.amazonaws.com\nemrappui-prod.ap-southeast-2.amazonaws.com\nemrnotebooks-prod.ap-southeast-2.amazonaws.com\nemrstudio-prod.ap-southeast-2.amazonaws.com\nemrappui-prod.ap-southeast-3.amazonaws.com\nemrnotebooks-prod.ap-southeast-3.amazonaws.com\nemrstudio-prod.ap-southeast-3.amazonaws.com\nemrappui-prod.ap-southeast-4.amazonaws.com\nemrnotebooks-prod.ap-southeast-4.amazonaws.com\nemrstudio-prod.ap-southeast-4.amazonaws.com\nemrappui-prod.ca-central-1.amazonaws.com\nemrnotebooks-prod.ca-central-1.amazonaws.com\nemrstudio-prod.ca-central-1.amazonaws.com\nemrappui-prod.ca-west-1.amazonaws.com\nemrnotebooks-prod.ca-west-1.amazonaws.com\nemrstudio-prod.ca-west-1.amazonaws.com\nemrappui-prod.eu-central-1.amazonaws.com\nemrnotebooks-prod.eu-central-1.amazonaws.com\nemrstudio-prod.eu-central-1.amazonaws.com\nemrappui-prod.eu-central-2.amazonaws.com\nemrnotebooks-prod.eu-central-2.amazonaws.com\nemrstudio-prod.eu-central-2.amazonaws.com\nemrappui-prod.eu-north-1.amazonaws.com\nemrnotebooks-prod.eu-north-1.amazonaws.com\nemrstudio-prod.eu-north-1.amazonaws.com\nemrappui-prod.eu-south-1.amazonaws.com\nemrnotebooks-prod.eu-south-1.amazonaws.com\nemrstudio-prod.eu-south-1.amazonaws.com\nemrappui-prod.eu-south-2.amazonaws.com\nemrnotebooks-prod.eu-south-2.amazonaws.com\nemrstudio-prod.eu-south-2.amazonaws.com\nemrappui-prod.eu-west-1.amazonaws.com\nemrnotebooks-prod.eu-west-1.amazonaws.com\nemrstudio-prod.eu-west-1.amazonaws.com\nemrappui-prod.eu-west-2.amazonaws.com\nemrnotebooks-prod.eu-west-2.amazonaws.com\nemrstudio-prod.eu-west-2.amazonaws.com\nemrappui-prod.eu-west-3.amazonaws.com\nemrnotebooks-prod.eu-west-3.amazonaws.com\nemrstudio-prod.eu-west-3.amazonaws.com\nemrappui-prod.il-central-1.amazonaws.com\nemrnotebooks-prod.il-central-1.amazonaws.com\nemrstudio-prod.il-central-1.amazonaws.com\nemrappui-prod.me-central-1.amazonaws.com\nemrnotebooks-prod.me-central-1.amazonaws.com\nemrstudio-prod.me-central-1.amazonaws.com\nemrappui-prod.me-south-1.amazonaws.com\nemrnotebooks-prod.me-south-1.amazonaws.com\nemrstudio-prod.me-south-1.amazonaws.com\nemrappui-prod.sa-east-1.amazonaws.com\nemrnotebooks-prod.sa-east-1.amazonaws.com\nemrstudio-prod.sa-east-1.amazonaws.com\nemrappui-prod.us-east-1.amazonaws.com\nemrnotebooks-prod.us-east-1.amazonaws.com\nemrstudio-prod.us-east-1.amazonaws.com\nemrappui-prod.us-east-2.amazonaws.com\nemrnotebooks-prod.us-east-2.amazonaws.com\nemrstudio-prod.us-east-2.amazonaws.com\nemrappui-prod.us-gov-east-1.amazonaws.com\nemrnotebooks-prod.us-gov-east-1.amazonaws.com\nemrstudio-prod.us-gov-east-1.amazonaws.com\nemrappui-prod.us-gov-west-1.amazonaws.com\nemrnotebooks-prod.us-gov-west-1.amazonaws.com\nemrstudio-prod.us-gov-west-1.amazonaws.com\nemrappui-prod.us-west-1.amazonaws.com\nemrnotebooks-prod.us-west-1.amazonaws.com\nemrstudio-prod.us-west-1.amazonaws.com\nemrappui-prod.us-west-2.amazonaws.com\nemrnotebooks-prod.us-west-2.amazonaws.com\nemrstudio-prod.us-west-2.amazonaws.com\n*.airflow.af-south-1.on.aws\n*.airflow.ap-east-1.on.aws\n*.airflow.ap-northeast-1.on.aws\n*.airflow.ap-northeast-2.on.aws\n*.airflow.ap-northeast-3.on.aws\n*.airflow.ap-south-1.on.aws\n*.airflow.ap-south-2.on.aws\n*.airflow.ap-southeast-1.on.aws\n*.airflow.ap-southeast-2.on.aws\n*.airflow.ap-southeast-3.on.aws\n*.airflow.ap-southeast-4.on.aws\n*.airflow.ap-southeast-5.on.aws\n*.airflow.ca-central-1.on.aws\n*.airflow.ca-west-1.on.aws\n*.airflow.eu-central-1.on.aws\n*.airflow.eu-central-2.on.aws\n*.airflow.eu-north-1.on.aws\n*.airflow.eu-south-1.on.aws\n*.airflow.eu-south-2.on.aws\n*.airflow.eu-west-1.on.aws\n*.airflow.eu-west-2.on.aws\n*.airflow.eu-west-3.on.aws\n*.airflow.il-central-1.on.aws\n*.airflow.me-central-1.on.aws\n*.airflow.me-south-1.on.aws\n*.airflow.sa-east-1.on.aws\n*.airflow.us-east-1.on.aws\n*.airflow.us-east-2.on.aws\n*.airflow.us-west-1.on.aws\n*.airflow.us-west-2.on.aws\n*.cn-north-1.airflow.amazonaws.com.cn\n*.cn-northwest-1.airflow.amazonaws.com.cn\n*.airflow.cn-north-1.on.amazonwebservices.com.cn\n*.airflow.cn-northwest-1.on.amazonwebservices.com.cn\n*.af-south-1.airflow.amazonaws.com\n*.ap-east-1.airflow.amazonaws.com\n*.ap-northeast-1.airflow.amazonaws.com\n*.ap-northeast-2.airflow.amazonaws.com\n*.ap-northeast-3.airflow.amazonaws.com\n*.ap-south-1.airflow.amazonaws.com\n*.ap-south-2.airflow.amazonaws.com\n*.ap-southeast-1.airflow.amazonaws.com\n*.ap-southeast-2.airflow.amazonaws.com\n*.ap-southeast-3.airflow.amazonaws.com\n*.ap-southeast-4.airflow.amazonaws.com\n*.ap-southeast-5.airflow.amazonaws.com\n*.ap-southeast-7.airflow.amazonaws.com\n*.ca-central-1.airflow.amazonaws.com\n*.ca-west-1.airflow.amazonaws.com\n*.eu-central-1.airflow.amazonaws.com\n*.eu-central-2.airflow.amazonaws.com\n*.eu-north-1.airflow.amazonaws.com\n*.eu-south-1.airflow.amazonaws.com\n*.eu-south-2.airflow.amazonaws.com\n*.eu-west-1.airflow.amazonaws.com\n*.eu-west-2.airflow.amazonaws.com\n*.eu-west-3.airflow.amazonaws.com\n*.il-central-1.airflow.amazonaws.com\n*.me-central-1.airflow.amazonaws.com\n*.me-south-1.airflow.amazonaws.com\n*.sa-east-1.airflow.amazonaws.com\n*.us-east-1.airflow.amazonaws.com\n*.us-east-2.airflow.amazonaws.com\n*.us-west-1.airflow.amazonaws.com\n*.us-west-2.airflow.amazonaws.com\n*.rds.cn-north-1.amazonaws.com.cn\n*.rds.cn-northwest-1.amazonaws.com.cn\n*.af-south-1.rds.amazonaws.com\n*.ap-east-1.rds.amazonaws.com\n*.ap-east-2.rds.amazonaws.com\n*.ap-northeast-1.rds.amazonaws.com\n*.ap-northeast-2.rds.amazonaws.com\n*.ap-northeast-3.rds.amazonaws.com\n*.ap-south-1.rds.amazonaws.com\n*.ap-south-2.rds.amazonaws.com\n*.ap-southeast-1.rds.amazonaws.com\n*.ap-southeast-2.rds.amazonaws.com\n*.ap-southeast-3.rds.amazonaws.com\n*.ap-southeast-4.rds.amazonaws.com\n*.ap-southeast-5.rds.amazonaws.com\n*.ap-southeast-6.rds.amazonaws.com\n*.ap-southeast-7.rds.amazonaws.com\n*.ca-central-1.rds.amazonaws.com\n*.ca-west-1.rds.amazonaws.com\n*.eu-central-1.rds.amazonaws.com\n*.eu-central-2.rds.amazonaws.com\n*.eu-west-1.rds.amazonaws.com\n*.eu-west-2.rds.amazonaws.com\n*.eu-west-3.rds.amazonaws.com\n*.il-central-1.rds.amazonaws.com\n*.me-central-1.rds.amazonaws.com\n*.me-south-1.rds.amazonaws.com\n*.mx-central-1.rds.amazonaws.com\n*.sa-east-1.rds.amazonaws.com\n*.us-east-1.rds.amazonaws.com\n*.us-east-2.rds.amazonaws.com\n*.us-gov-east-1.rds.amazonaws.com\n*.us-gov-west-1.rds.amazonaws.com\n*.us-northeast-1.rds.amazonaws.com\n*.us-west-1.rds.amazonaws.com\n*.us-west-2.rds.amazonaws.com\ns3.dualstack.cn-north-1.amazonaws.com.cn\ns3-accesspoint.dualstack.cn-north-1.amazonaws.com.cn\ns3-website.dualstack.cn-north-1.amazonaws.com.cn\ns3.cn-north-1.amazonaws.com.cn\ns3-accesspoint.cn-north-1.amazonaws.com.cn\ns3-deprecated.cn-north-1.amazonaws.com.cn\ns3-object-lambda.cn-north-1.amazonaws.com.cn\ns3-website.cn-north-1.amazonaws.com.cn\ns3.dualstack.cn-northwest-1.amazonaws.com.cn\ns3-accesspoint.dualstack.cn-northwest-1.amazonaws.com.cn\ns3.cn-northwest-1.amazonaws.com.cn\ns3-accesspoint.cn-northwest-1.amazonaws.com.cn\ns3-object-lambda.cn-northwest-1.amazonaws.com.cn\ns3-website.cn-northwest-1.amazonaws.com.cn\ns3.dualstack.af-south-1.amazonaws.com\ns3-accesspoint.dualstack.af-south-1.amazonaws.com\ns3-website.dualstack.af-south-1.amazonaws.com\ns3.af-south-1.amazonaws.com\ns3-accesspoint.af-south-1.amazonaws.com\ns3-object-lambda.af-south-1.amazonaws.com\ns3-website.af-south-1.amazonaws.com\ns3.dualstack.ap-east-1.amazonaws.com\ns3-accesspoint.dualstack.ap-east-1.amazonaws.com\ns3.ap-east-1.amazonaws.com\ns3-accesspoint.ap-east-1.amazonaws.com\ns3-object-lambda.ap-east-1.amazonaws.com\ns3-website.ap-east-1.amazonaws.com\ns3.dualstack.ap-northeast-1.amazonaws.com\ns3-accesspoint.dualstack.ap-northeast-1.amazonaws.com\ns3-website.dualstack.ap-northeast-1.amazonaws.com\ns3.ap-northeast-1.amazonaws.com\ns3-accesspoint.ap-northeast-1.amazonaws.com\ns3-object-lambda.ap-northeast-1.amazonaws.com\ns3-website.ap-northeast-1.amazonaws.com\ns3.dualstack.ap-northeast-2.amazonaws.com\ns3-accesspoint.dualstack.ap-northeast-2.amazonaws.com\ns3-website.dualstack.ap-northeast-2.amazonaws.com\ns3.ap-northeast-2.amazonaws.com\ns3-accesspoint.ap-northeast-2.amazonaws.com\ns3-object-lambda.ap-northeast-2.amazonaws.com\ns3-website.ap-northeast-2.amazonaws.com\ns3.dualstack.ap-northeast-3.amazonaws.com\ns3-accesspoint.dualstack.ap-northeast-3.amazonaws.com\ns3-website.dualstack.ap-northeast-3.amazonaws.com\ns3.ap-northeast-3.amazonaws.com\ns3-accesspoint.ap-northeast-3.amazonaws.com\ns3-object-lambda.ap-northeast-3.amazonaws.com\ns3-website.ap-northeast-3.amazonaws.com\ns3.dualstack.ap-south-1.amazonaws.com\ns3-accesspoint.dualstack.ap-south-1.amazonaws.com\ns3-website.dualstack.ap-south-1.amazonaws.com\ns3.ap-south-1.amazonaws.com\ns3-accesspoint.ap-south-1.amazonaws.com\ns3-object-lambda.ap-south-1.amazonaws.com\ns3-website.ap-south-1.amazonaws.com\ns3.dualstack.ap-south-2.amazonaws.com\ns3-accesspoint.dualstack.ap-south-2.amazonaws.com\ns3-website.dualstack.ap-south-2.amazonaws.com\ns3.ap-south-2.amazonaws.com\ns3-accesspoint.ap-south-2.amazonaws.com\ns3-object-lambda.ap-south-2.amazonaws.com\ns3-website.ap-south-2.amazonaws.com\ns3.dualstack.ap-southeast-1.amazonaws.com\ns3-accesspoint.dualstack.ap-southeast-1.amazonaws.com\ns3-website.dualstack.ap-southeast-1.amazonaws.com\ns3.ap-southeast-1.amazonaws.com\ns3-accesspoint.ap-southeast-1.amazonaws.com\ns3-object-lambda.ap-southeast-1.amazonaws.com\ns3-website.ap-southeast-1.amazonaws.com\ns3.dualstack.ap-southeast-2.amazonaws.com\ns3-accesspoint.dualstack.ap-southeast-2.amazonaws.com\ns3-website.dualstack.ap-southeast-2.amazonaws.com\ns3.ap-southeast-2.amazonaws.com\ns3-accesspoint.ap-southeast-2.amazonaws.com\ns3-object-lambda.ap-southeast-2.amazonaws.com\ns3-website.ap-southeast-2.amazonaws.com\ns3.dualstack.ap-southeast-3.amazonaws.com\ns3-accesspoint.dualstack.ap-southeast-3.amazonaws.com\ns3-website.dualstack.ap-southeast-3.amazonaws.com\ns3.ap-southeast-3.amazonaws.com\ns3-accesspoint.ap-southeast-3.amazonaws.com\ns3-object-lambda.ap-southeast-3.amazonaws.com\ns3-website.ap-southeast-3.amazonaws.com\ns3.dualstack.ap-southeast-4.amazonaws.com\ns3-accesspoint.dualstack.ap-southeast-4.amazonaws.com\ns3-website.dualstack.ap-southeast-4.amazonaws.com\ns3.ap-southeast-4.amazonaws.com\ns3-accesspoint.ap-southeast-4.amazonaws.com\ns3-object-lambda.ap-southeast-4.amazonaws.com\ns3-website.ap-southeast-4.amazonaws.com\ns3.dualstack.ap-southeast-5.amazonaws.com\ns3-accesspoint.dualstack.ap-southeast-5.amazonaws.com\ns3-website.dualstack.ap-southeast-5.amazonaws.com\ns3.ap-southeast-5.amazonaws.com\ns3-accesspoint.ap-southeast-5.amazonaws.com\ns3-deprecated.ap-southeast-5.amazonaws.com\ns3-object-lambda.ap-southeast-5.amazonaws.com\ns3-website.ap-southeast-5.amazonaws.com\ns3.dualstack.ca-central-1.amazonaws.com\ns3-accesspoint.dualstack.ca-central-1.amazonaws.com\ns3-accesspoint-fips.dualstack.ca-central-1.amazonaws.com\ns3-fips.dualstack.ca-central-1.amazonaws.com\ns3-website.dualstack.ca-central-1.amazonaws.com\ns3.ca-central-1.amazonaws.com\ns3-accesspoint.ca-central-1.amazonaws.com\ns3-accesspoint-fips.ca-central-1.amazonaws.com\ns3-fips.ca-central-1.amazonaws.com\ns3-object-lambda.ca-central-1.amazonaws.com\ns3-website.ca-central-1.amazonaws.com\ns3.dualstack.ca-west-1.amazonaws.com\ns3-accesspoint.dualstack.ca-west-1.amazonaws.com\ns3-accesspoint-fips.dualstack.ca-west-1.amazonaws.com\ns3-fips.dualstack.ca-west-1.amazonaws.com\ns3-website.dualstack.ca-west-1.amazonaws.com\ns3.ca-west-1.amazonaws.com\ns3-accesspoint.ca-west-1.amazonaws.com\ns3-accesspoint-fips.ca-west-1.amazonaws.com\ns3-fips.ca-west-1.amazonaws.com\ns3-object-lambda.ca-west-1.amazonaws.com\ns3-website.ca-west-1.amazonaws.com\ns3.dualstack.eu-central-1.amazonaws.com\ns3-accesspoint.dualstack.eu-central-1.amazonaws.com\ns3-website.dualstack.eu-central-1.amazonaws.com\ns3.eu-central-1.amazonaws.com\ns3-accesspoint.eu-central-1.amazonaws.com\ns3-object-lambda.eu-central-1.amazonaws.com\ns3-website.eu-central-1.amazonaws.com\ns3.dualstack.eu-central-2.amazonaws.com\ns3-accesspoint.dualstack.eu-central-2.amazonaws.com\ns3-website.dualstack.eu-central-2.amazonaws.com\ns3.eu-central-2.amazonaws.com\ns3-accesspoint.eu-central-2.amazonaws.com\ns3-object-lambda.eu-central-2.amazonaws.com\ns3-website.eu-central-2.amazonaws.com\ns3.dualstack.eu-north-1.amazonaws.com\ns3-accesspoint.dualstack.eu-north-1.amazonaws.com\ns3.eu-north-1.amazonaws.com\ns3-accesspoint.eu-north-1.amazonaws.com\ns3-object-lambda.eu-north-1.amazonaws.com\ns3-website.eu-north-1.amazonaws.com\ns3.dualstack.eu-south-1.amazonaws.com\ns3-accesspoint.dualstack.eu-south-1.amazonaws.com\ns3-website.dualstack.eu-south-1.amazonaws.com\ns3.eu-south-1.amazonaws.com\ns3-accesspoint.eu-south-1.amazonaws.com\ns3-object-lambda.eu-south-1.amazonaws.com\ns3-website.eu-south-1.amazonaws.com\ns3.dualstack.eu-south-2.amazonaws.com\ns3-accesspoint.dualstack.eu-south-2.amazonaws.com\ns3-website.dualstack.eu-south-2.amazonaws.com\ns3.eu-south-2.amazonaws.com\ns3-accesspoint.eu-south-2.amazonaws.com\ns3-object-lambda.eu-south-2.amazonaws.com\ns3-website.eu-south-2.amazonaws.com\ns3.dualstack.eu-west-1.amazonaws.com\ns3-accesspoint.dualstack.eu-west-1.amazonaws.com\ns3-website.dualstack.eu-west-1.amazonaws.com\ns3.eu-west-1.amazonaws.com\ns3-accesspoint.eu-west-1.amazonaws.com\ns3-deprecated.eu-west-1.amazonaws.com\ns3-object-lambda.eu-west-1.amazonaws.com\ns3-website.eu-west-1.amazonaws.com\ns3.dualstack.eu-west-2.amazonaws.com\ns3-accesspoint.dualstack.eu-west-2.amazonaws.com\ns3.eu-west-2.amazonaws.com\ns3-accesspoint.eu-west-2.amazonaws.com\ns3-object-lambda.eu-west-2.amazonaws.com\ns3-website.eu-west-2.amazonaws.com\ns3.dualstack.eu-west-3.amazonaws.com\ns3-accesspoint.dualstack.eu-west-3.amazonaws.com\ns3-website.dualstack.eu-west-3.amazonaws.com\ns3.eu-west-3.amazonaws.com\ns3-accesspoint.eu-west-3.amazonaws.com\ns3-object-lambda.eu-west-3.amazonaws.com\ns3-website.eu-west-3.amazonaws.com\ns3.dualstack.il-central-1.amazonaws.com\ns3-accesspoint.dualstack.il-central-1.amazonaws.com\ns3-website.dualstack.il-central-1.amazonaws.com\ns3.il-central-1.amazonaws.com\ns3-accesspoint.il-central-1.amazonaws.com\ns3-object-lambda.il-central-1.amazonaws.com\ns3-website.il-central-1.amazonaws.com\ns3.dualstack.me-central-1.amazonaws.com\ns3-accesspoint.dualstack.me-central-1.amazonaws.com\ns3-website.dualstack.me-central-1.amazonaws.com\ns3.me-central-1.amazonaws.com\ns3-accesspoint.me-central-1.amazonaws.com\ns3-object-lambda.me-central-1.amazonaws.com\ns3-website.me-central-1.amazonaws.com\ns3.dualstack.me-south-1.amazonaws.com\ns3-accesspoint.dualstack.me-south-1.amazonaws.com\ns3.me-south-1.amazonaws.com\ns3-accesspoint.me-south-1.amazonaws.com\ns3-object-lambda.me-south-1.amazonaws.com\ns3-website.me-south-1.amazonaws.com\ns3.amazonaws.com\ns3-1.amazonaws.com\ns3-ap-east-1.amazonaws.com\ns3-ap-northeast-1.amazonaws.com\ns3-ap-northeast-2.amazonaws.com\ns3-ap-northeast-3.amazonaws.com\ns3-ap-south-1.amazonaws.com\ns3-ap-southeast-1.amazonaws.com\ns3-ap-southeast-2.amazonaws.com\ns3-ca-central-1.amazonaws.com\ns3-eu-central-1.amazonaws.com\ns3-eu-north-1.amazonaws.com\ns3-eu-west-1.amazonaws.com\ns3-eu-west-2.amazonaws.com\ns3-eu-west-3.amazonaws.com\ns3-external-1.amazonaws.com\ns3-fips-us-gov-east-1.amazonaws.com\ns3-fips-us-gov-west-1.amazonaws.com\nmrap.accesspoint.s3-global.amazonaws.com\ns3-me-south-1.amazonaws.com\ns3-sa-east-1.amazonaws.com\ns3-us-east-2.amazonaws.com\ns3-us-gov-east-1.amazonaws.com\ns3-us-gov-west-1.amazonaws.com\ns3-us-west-1.amazonaws.com\ns3-us-west-2.amazonaws.com\ns3-website-ap-northeast-1.amazonaws.com\ns3-website-ap-southeast-1.amazonaws.com\ns3-website-ap-southeast-2.amazonaws.com\ns3-website-eu-west-1.amazonaws.com\ns3-website-sa-east-1.amazonaws.com\ns3-website-us-east-1.amazonaws.com\ns3-website-us-gov-west-1.amazonaws.com\ns3-website-us-west-1.amazonaws.com\ns3-website-us-west-2.amazonaws.com\ns3.dualstack.sa-east-1.amazonaws.com\ns3-accesspoint.dualstack.sa-east-1.amazonaws.com\ns3-website.dualstack.sa-east-1.amazonaws.com\ns3.sa-east-1.amazonaws.com\ns3-accesspoint.sa-east-1.amazonaws.com\ns3-object-lambda.sa-east-1.amazonaws.com\ns3-website.sa-east-1.amazonaws.com\ns3.dualstack.us-east-1.amazonaws.com\ns3-accesspoint.dualstack.us-east-1.amazonaws.com\ns3-accesspoint-fips.dualstack.us-east-1.amazonaws.com\ns3-fips.dualstack.us-east-1.amazonaws.com\ns3-website.dualstack.us-east-1.amazonaws.com\ns3.us-east-1.amazonaws.com\ns3-accesspoint.us-east-1.amazonaws.com\ns3-accesspoint-fips.us-east-1.amazonaws.com\ns3-deprecated.us-east-1.amazonaws.com\ns3-fips.us-east-1.amazonaws.com\ns3-object-lambda.us-east-1.amazonaws.com\ns3-website.us-east-1.amazonaws.com\ns3.dualstack.us-east-2.amazonaws.com\ns3-accesspoint.dualstack.us-east-2.amazonaws.com\ns3-accesspoint-fips.dualstack.us-east-2.amazonaws.com\ns3-fips.dualstack.us-east-2.amazonaws.com\ns3-website.dualstack.us-east-2.amazonaws.com\ns3.us-east-2.amazonaws.com\ns3-accesspoint.us-east-2.amazonaws.com\ns3-accesspoint-fips.us-east-2.amazonaws.com\ns3-deprecated.us-east-2.amazonaws.com\ns3-fips.us-east-2.amazonaws.com\ns3-object-lambda.us-east-2.amazonaws.com\ns3-website.us-east-2.amazonaws.com\ns3.dualstack.us-gov-east-1.amazonaws.com\ns3-accesspoint.dualstack.us-gov-east-1.amazonaws.com\ns3-accesspoint-fips.dualstack.us-gov-east-1.amazonaws.com\ns3-fips.dualstack.us-gov-east-1.amazonaws.com\ns3-website.dualstack.us-gov-east-1.amazonaws.com\ns3.us-gov-east-1.amazonaws.com\ns3-accesspoint.us-gov-east-1.amazonaws.com\ns3-accesspoint-fips.us-gov-east-1.amazonaws.com\ns3-fips.us-gov-east-1.amazonaws.com\ns3-object-lambda.us-gov-east-1.amazonaws.com\ns3-website.us-gov-east-1.amazonaws.com\ns3.dualstack.us-gov-west-1.amazonaws.com\ns3-accesspoint.dualstack.us-gov-west-1.amazonaws.com\ns3-accesspoint-fips.dualstack.us-gov-west-1.amazonaws.com\ns3-fips.dualstack.us-gov-west-1.amazonaws.com\ns3-website.dualstack.us-gov-west-1.amazonaws.com\ns3.us-gov-west-1.amazonaws.com\ns3-accesspoint.us-gov-west-1.amazonaws.com\ns3-accesspoint-fips.us-gov-west-1.amazonaws.com\ns3-fips.us-gov-west-1.amazonaws.com\ns3-object-lambda.us-gov-west-1.amazonaws.com\ns3-website.us-gov-west-1.amazonaws.com\ns3.dualstack.us-west-1.amazonaws.com\ns3-accesspoint.dualstack.us-west-1.amazonaws.com\ns3-accesspoint-fips.dualstack.us-west-1.amazonaws.com\ns3-fips.dualstack.us-west-1.amazonaws.com\ns3-website.dualstack.us-west-1.amazonaws.com\ns3.us-west-1.amazonaws.com\ns3-accesspoint.us-west-1.amazonaws.com\ns3-accesspoint-fips.us-west-1.amazonaws.com\ns3-fips.us-west-1.amazonaws.com\ns3-object-lambda.us-west-1.amazonaws.com\ns3-website.us-west-1.amazonaws.com\ns3.dualstack.us-west-2.amazonaws.com\ns3-accesspoint.dualstack.us-west-2.amazonaws.com\ns3-accesspoint-fips.dualstack.us-west-2.amazonaws.com\ns3-fips.dualstack.us-west-2.amazonaws.com\ns3-website.dualstack.us-west-2.amazonaws.com\ns3.us-west-2.amazonaws.com\ns3-accesspoint.us-west-2.amazonaws.com\ns3-accesspoint-fips.us-west-2.amazonaws.com\ns3-deprecated.us-west-2.amazonaws.com\ns3-fips.us-west-2.amazonaws.com\ns3-object-lambda.us-west-2.amazonaws.com\ns3-website.us-west-2.amazonaws.com\nlabeling.ap-northeast-1.sagemaker.aws\nlabeling.ap-northeast-2.sagemaker.aws\nlabeling.ap-south-1.sagemaker.aws\nlabeling.ap-southeast-1.sagemaker.aws\nlabeling.ap-southeast-2.sagemaker.aws\nlabeling.ca-central-1.sagemaker.aws\nlabeling.eu-central-1.sagemaker.aws\nlabeling.eu-west-1.sagemaker.aws\nlabeling.eu-west-2.sagemaker.aws\nlabeling.us-east-1.sagemaker.aws\nlabeling.us-east-2.sagemaker.aws\nlabeling.us-west-2.sagemaker.aws\nnotebook.af-south-1.sagemaker.aws\nnotebook.ap-east-1.sagemaker.aws\nnotebook.ap-northeast-1.sagemaker.aws\nnotebook.ap-northeast-2.sagemaker.aws\nnotebook.ap-northeast-3.sagemaker.aws\nnotebook.ap-south-1.sagemaker.aws\nnotebook.ap-south-2.sagemaker.aws\nnotebook.ap-southeast-1.sagemaker.aws\nnotebook.ap-southeast-2.sagemaker.aws\nnotebook.ap-southeast-3.sagemaker.aws\nnotebook.ap-southeast-4.sagemaker.aws\nnotebook.ca-central-1.sagemaker.aws\nnotebook-fips.ca-central-1.sagemaker.aws\nnotebook.ca-west-1.sagemaker.aws\nnotebook-fips.ca-west-1.sagemaker.aws\nnotebook.eu-central-1.sagemaker.aws\nnotebook.eu-central-2.sagemaker.aws\nnotebook.eu-north-1.sagemaker.aws\nnotebook.eu-south-1.sagemaker.aws\nnotebook.eu-south-2.sagemaker.aws\nnotebook.eu-west-1.sagemaker.aws\nnotebook.eu-west-2.sagemaker.aws\nnotebook.eu-west-3.sagemaker.aws\nnotebook.il-central-1.sagemaker.aws\nnotebook.me-central-1.sagemaker.aws\nnotebook.me-south-1.sagemaker.aws\nnotebook.sa-east-1.sagemaker.aws\nnotebook.us-east-1.sagemaker.aws\nnotebook-fips.us-east-1.sagemaker.aws\nnotebook.us-east-2.sagemaker.aws\nnotebook-fips.us-east-2.sagemaker.aws\nnotebook.us-gov-east-1.sagemaker.aws\nnotebook-fips.us-gov-east-1.sagemaker.aws\nnotebook.us-gov-west-1.sagemaker.aws\nnotebook-fips.us-gov-west-1.sagemaker.aws\nnotebook.us-west-1.sagemaker.aws\nnotebook-fips.us-west-1.sagemaker.aws\nnotebook.us-west-2.sagemaker.aws\nnotebook-fips.us-west-2.sagemaker.aws\nnotebook.cn-north-1.sagemaker.com.cn\nnotebook.cn-northwest-1.sagemaker.com.cn\nstudio.af-south-1.sagemaker.aws\nstudio.ap-east-1.sagemaker.aws\nstudio.ap-northeast-1.sagemaker.aws\nstudio.ap-northeast-2.sagemaker.aws\nstudio.ap-northeast-3.sagemaker.aws\nstudio.ap-south-1.sagemaker.aws\nstudio.ap-southeast-1.sagemaker.aws\nstudio.ap-southeast-2.sagemaker.aws\nstudio.ap-southeast-3.sagemaker.aws\nstudio.ca-central-1.sagemaker.aws\nstudio.eu-central-1.sagemaker.aws\nstudio.eu-central-2.sagemaker.aws\nstudio.eu-north-1.sagemaker.aws\nstudio.eu-south-1.sagemaker.aws\nstudio.eu-south-2.sagemaker.aws\nstudio.eu-west-1.sagemaker.aws\nstudio.eu-west-2.sagemaker.aws\nstudio.eu-west-3.sagemaker.aws\nstudio.il-central-1.sagemaker.aws\nstudio.me-central-1.sagemaker.aws\nstudio.me-south-1.sagemaker.aws\nstudio.sa-east-1.sagemaker.aws\nstudio.us-east-1.sagemaker.aws\nstudio.us-east-2.sagemaker.aws\nstudio.us-gov-east-1.sagemaker.aws\nstudio-fips.us-gov-east-1.sagemaker.aws\nstudio.us-gov-west-1.sagemaker.aws\nstudio-fips.us-gov-west-1.sagemaker.aws\nstudio.us-west-1.sagemaker.aws\nstudio.us-west-2.sagemaker.aws\nstudio.cn-north-1.sagemaker.com.cn\nstudio.cn-northwest-1.sagemaker.com.cn\n*.experiments.sagemaker.aws\nanalytics-gateway.ap-northeast-1.amazonaws.com\nanalytics-gateway.ap-northeast-2.amazonaws.com\nanalytics-gateway.ap-south-1.amazonaws.com\nanalytics-gateway.ap-southeast-1.amazonaws.com\nanalytics-gateway.ap-southeast-2.amazonaws.com\nanalytics-gateway.eu-central-1.amazonaws.com\nanalytics-gateway.eu-west-1.amazonaws.com\nanalytics-gateway.us-east-1.amazonaws.com\nanalytics-gateway.us-east-2.amazonaws.com\nanalytics-gateway.us-west-2.amazonaws.com\namplifyapp.com\n*.awsapprunner.com\nwebview-assets.aws-cloud9.af-south-1.amazonaws.com\nvfs.cloud9.af-south-1.amazonaws.com\nwebview-assets.cloud9.af-south-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-east-1.amazonaws.com\nvfs.cloud9.ap-east-1.amazonaws.com\nwebview-assets.cloud9.ap-east-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-northeast-1.amazonaws.com\nvfs.cloud9.ap-northeast-1.amazonaws.com\nwebview-assets.cloud9.ap-northeast-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-northeast-2.amazonaws.com\nvfs.cloud9.ap-northeast-2.amazonaws.com\nwebview-assets.cloud9.ap-northeast-2.amazonaws.com\nwebview-assets.aws-cloud9.ap-northeast-3.amazonaws.com\nvfs.cloud9.ap-northeast-3.amazonaws.com\nwebview-assets.cloud9.ap-northeast-3.amazonaws.com\nwebview-assets.aws-cloud9.ap-south-1.amazonaws.com\nvfs.cloud9.ap-south-1.amazonaws.com\nwebview-assets.cloud9.ap-south-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-southeast-1.amazonaws.com\nvfs.cloud9.ap-southeast-1.amazonaws.com\nwebview-assets.cloud9.ap-southeast-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-southeast-2.amazonaws.com\nvfs.cloud9.ap-southeast-2.amazonaws.com\nwebview-assets.cloud9.ap-southeast-2.amazonaws.com\nwebview-assets.aws-cloud9.ca-central-1.amazonaws.com\nvfs.cloud9.ca-central-1.amazonaws.com\nwebview-assets.cloud9.ca-central-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-central-1.amazonaws.com\nvfs.cloud9.eu-central-1.amazonaws.com\nwebview-assets.cloud9.eu-central-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-north-1.amazonaws.com\nvfs.cloud9.eu-north-1.amazonaws.com\nwebview-assets.cloud9.eu-north-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-south-1.amazonaws.com\nvfs.cloud9.eu-south-1.amazonaws.com\nwebview-assets.cloud9.eu-south-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-west-1.amazonaws.com\nvfs.cloud9.eu-west-1.amazonaws.com\nwebview-assets.cloud9.eu-west-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-west-2.amazonaws.com\nvfs.cloud9.eu-west-2.amazonaws.com\nwebview-assets.cloud9.eu-west-2.amazonaws.com\nwebview-assets.aws-cloud9.eu-west-3.amazonaws.com\nvfs.cloud9.eu-west-3.amazonaws.com\nwebview-assets.cloud9.eu-west-3.amazonaws.com\nwebview-assets.aws-cloud9.il-central-1.amazonaws.com\nvfs.cloud9.il-central-1.amazonaws.com\nwebview-assets.aws-cloud9.me-south-1.amazonaws.com\nvfs.cloud9.me-south-1.amazonaws.com\nwebview-assets.cloud9.me-south-1.amazonaws.com\nwebview-assets.aws-cloud9.sa-east-1.amazonaws.com\nvfs.cloud9.sa-east-1.amazonaws.com\nwebview-assets.cloud9.sa-east-1.amazonaws.com\nwebview-assets.aws-cloud9.us-east-1.amazonaws.com\nvfs.cloud9.us-east-1.amazonaws.com\nwebview-assets.cloud9.us-east-1.amazonaws.com\nwebview-assets.aws-cloud9.us-east-2.amazonaws.com\nvfs.cloud9.us-east-2.amazonaws.com\nwebview-assets.cloud9.us-east-2.amazonaws.com\nwebview-assets.aws-cloud9.us-west-1.amazonaws.com\nvfs.cloud9.us-west-1.amazonaws.com\nwebview-assets.cloud9.us-west-1.amazonaws.com\nwebview-assets.aws-cloud9.us-west-2.amazonaws.com\nvfs.cloud9.us-west-2.amazonaws.com\nwebview-assets.cloud9.us-west-2.amazonaws.com\nawsapps.com\ncn-north-1.eb.amazonaws.com.cn\ncn-northwest-1.eb.amazonaws.com.cn\nelasticbeanstalk.com\naf-south-1.elasticbeanstalk.com\nap-east-1.elasticbeanstalk.com\nap-northeast-1.elasticbeanstalk.com\nap-northeast-2.elasticbeanstalk.com\nap-northeast-3.elasticbeanstalk.com\nap-south-1.elasticbeanstalk.com\nap-southeast-1.elasticbeanstalk.com\nap-southeast-2.elasticbeanstalk.com\nap-southeast-3.elasticbeanstalk.com\nap-southeast-5.elasticbeanstalk.com\nap-southeast-7.elasticbeanstalk.com\nca-central-1.elasticbeanstalk.com\neu-central-1.elasticbeanstalk.com\neu-north-1.elasticbeanstalk.com\neu-south-1.elasticbeanstalk.com\neu-south-2.elasticbeanstalk.com\neu-west-1.elasticbeanstalk.com\neu-west-2.elasticbeanstalk.com\neu-west-3.elasticbeanstalk.com\nil-central-1.elasticbeanstalk.com\nme-central-1.elasticbeanstalk.com\nme-south-1.elasticbeanstalk.com\nsa-east-1.elasticbeanstalk.com\nus-east-1.elasticbeanstalk.com\nus-east-2.elasticbeanstalk.com\nus-gov-east-1.elasticbeanstalk.com\nus-gov-west-1.elasticbeanstalk.com\nus-west-1.elasticbeanstalk.com\nus-west-2.elasticbeanstalk.com\n*.elb.amazonaws.com.cn\n*.elb.amazonaws.com\nawsglobalaccelerator.com\nlambda-url.af-south-1.on.aws\nlambda-url.ap-east-1.on.aws\nlambda-url.ap-northeast-1.on.aws\nlambda-url.ap-northeast-2.on.aws\nlambda-url.ap-northeast-3.on.aws\nlambda-url.ap-south-1.on.aws\nlambda-url.ap-southeast-1.on.aws\nlambda-url.ap-southeast-2.on.aws\nlambda-url.ap-southeast-3.on.aws\nlambda-url.ca-central-1.on.aws\nlambda-url.eu-central-1.on.aws\nlambda-url.eu-north-1.on.aws\nlambda-url.eu-south-1.on.aws\nlambda-url.eu-west-1.on.aws\nlambda-url.eu-west-2.on.aws\nlambda-url.eu-west-3.on.aws\nlambda-url.me-south-1.on.aws\nlambda-url.sa-east-1.on.aws\nlambda-url.us-east-1.on.aws\nlambda-url.us-east-2.on.aws\nlambda-url.us-west-1.on.aws\nlambda-url.us-west-2.on.aws\n*.private.repost.aws\ntransfer-webapp.af-south-1.on.aws\ntransfer-webapp.ap-east-1.on.aws\ntransfer-webapp.ap-northeast-1.on.aws\ntransfer-webapp.ap-northeast-2.on.aws\ntransfer-webapp.ap-northeast-3.on.aws\ntransfer-webapp.ap-south-1.on.aws\ntransfer-webapp.ap-south-2.on.aws\ntransfer-webapp.ap-southeast-1.on.aws\ntransfer-webapp.ap-southeast-2.on.aws\ntransfer-webapp.ap-southeast-3.on.aws\ntransfer-webapp.ap-southeast-4.on.aws\ntransfer-webapp.ap-southeast-5.on.aws\ntransfer-webapp.ap-southeast-7.on.aws\ntransfer-webapp.ca-central-1.on.aws\ntransfer-webapp.ca-west-1.on.aws\ntransfer-webapp.eu-central-1.on.aws\ntransfer-webapp.eu-central-2.on.aws\ntransfer-webapp.eu-north-1.on.aws\ntransfer-webapp.eu-south-1.on.aws\ntransfer-webapp.eu-south-2.on.aws\ntransfer-webapp.eu-west-1.on.aws\ntransfer-webapp.eu-west-2.on.aws\ntransfer-webapp.eu-west-3.on.aws\ntransfer-webapp.il-central-1.on.aws\ntransfer-webapp.me-central-1.on.aws\ntransfer-webapp.me-south-1.on.aws\ntransfer-webapp.mx-central-1.on.aws\ntransfer-webapp.sa-east-1.on.aws\ntransfer-webapp.us-east-1.on.aws\ntransfer-webapp.us-east-2.on.aws\ntransfer-webapp.us-gov-east-1.on.aws\ntransfer-webapp-fips.us-gov-east-1.on.aws\ntransfer-webapp.us-gov-west-1.on.aws\ntransfer-webapp-fips.us-gov-west-1.on.aws\ntransfer-webapp.us-west-1.on.aws\ntransfer-webapp.us-west-2.on.aws\ntransfer-webapp.cn-north-1.on.amazonwebservices.com.cn\ntransfer-webapp.cn-northwest-1.on.amazonwebservices.com.cn\neero.online\neero-stage.online\nopentunnel.xyz\nantagonist.cloud\nclaude.app\nclaudeusercontent.com\nframe.claudeusercontent.com\n*.cursorusercontent.com\napigee.io\npanel.dev\nsiiites.com\nint.apple\n*.cloud.int.apple\n*.r.cloud.int.apple\n*.ap-north-1.r.cloud.int.apple\n*.ap-south-1.r.cloud.int.apple\n*.ap-south-2.r.cloud.int.apple\n*.eu-central-1.r.cloud.int.apple\n*.eu-north-1.r.cloud.int.apple\n*.us-central-1.r.cloud.int.apple\n*.us-central-2.r.cloud.int.apple\n*.us-east-1.r.cloud.int.apple\n*.us-east-2.r.cloud.int.apple\n*.us-west-1.r.cloud.int.apple\n*.us-west-2.r.cloud.int.apple\n*.us-west-3.r.cloud.int.apple\nappspacehosted.com\nappspaceusercontent.com\nappudo.net\nappwrite.global\nappwrite.network\n*.appwrite.run\non-aptible.com\nf5.si\narvanedge.ir\nuser.aseinet.ne.jp\ngv.vc\nd.gv.vc\nuser.party.eus\npimienta.org\npoivron.org\npotager.org\nsweetpepper.org\nmyasustor.com\n*.atlassian-3p.com\n*.atlassian-3p-us-gov-mod.com\n*.atlassian-isolated-3p.com\ncdn.prod.atlassian-dev.net\nmyfritz.link\nmyfritz.net\n*.awdev.ca\n*.advisor.ws\necommerce-shop.pl\nb-data.io\nbalena-devices.com\nbase.ec\nofficial.ec\nbuyshop.jp\nfashionstore.jp\nhandcrafted.jp\nkawaiishop.jp\nsupersale.jp\ntheshop.jp\nshopselect.net\nbase.shop\nbeagleboard.io\nbearblog.dev\n*.beget.app\n*.begetcdn.cloud\npages.gay\nbnr.la\nbitbucket.io\nblackbaudcdn.net\nof.je\nsquare.site\nbluebite.io\nboomla.net\nboutir.com\nboxfuse.io\nsquare7.ch\nbplaced.com\nbplaced.de\nsquare7.de\nbplaced.net\nsquare7.net\nbrave.app\n*.s.brave.app\nbrave.dev\n*.s.brave.dev\nbrave.io\n*.s.brave.io\nshop.brendly.ba\nshop.brendly.hr\nshop.brendly.rs\nbrowsersafetymark.io\nradio.am\nradio.fm\ncdn.bubble.io\nbubbleapps.io\n*.bwcloud-os-instance.de\ncafjs.com\ncanva-apps.cn\ncanva-code.cn\nmy.canvasite.cn\nkhsj.cn\ncanva-apps.com\ncanva-hosted-embed.com\ncanvacode.com\nrice-labs.com\ncanva.link\ncanva.run\nmy.canva.site\ndrr.ac\nuwu.ai\ncarrd.co\ncrd.co\nju.mp\napi.gov.uk\ncdn77-storage.com\nrsc.contentproxy9.cz\nr.cdn77.net\ncdn77-ssl.net\nc.cdn77.org\nrsc.cdn77.org\nssl.origin.cdn77-secure.org\nza.bz\nbr.com\ncn.com\nde.com\neu.com\njpn.com\nmex.com\nru.com\nsa.com\nuk.com\nus.com\nza.com\ncom.de\ngb.net\nhu.net\njp.net\nse.net\nuk.net\nae.org\ncom.se\ncx.ua\ndiscourse.diy\ndiscourse.group\ndiscourse.team\nclerk.app\nclerkstage.app\n*.lcl.dev\n*.lclstage.dev\n*.stg.dev\n*.stgstage.dev\ncleverapps.cc\n*.services.clever-cloud.com\ncleverapps.io\ncleverapps.tech\nclickrising.net\ncloudns.asia\ncloudns.be\ncloud-ip.biz\ncloudns.biz\ncloud-ip.cc\ncloudns.cc\ncloudns.ch\ncloudns.cl\ncloudns.club\nabrdns.com\ndnsabr.com\nip-ddns.com\ncloudns.cx\ncloudns.eu\ncloudns.in\ncloudns.info\nddns-ip.net\ndns-cloud.net\ndns-dynamic.net\ncloudns.nz\ncloudns.org\nip-dynamic.org\ncloudns.ph\ncloudns.pro\ncloudns.pw\ncloudns.us\nc66.me\ncloud66.ws\njdevcloud.com\nwpdevcloud.com\ncloudaccess.host\nfreesite.host\ncloudaccess.net\ncloudbeesusercontent.io\n*.cloudera.site\ncloudflare.app\ncf-ipfs.com\ncloudflare-ipfs.com\ntrycloudflare.com\npages.dev\nr2.dev\nworkers.dev\ncloudflare.net\ncdn.cloudflare.net\ncdn.cloudflareanycast.net\ncdn.cloudflarecn.net\ncdn.cloudflareglobal.net\ncust.cloudscale.ch\nobjects.lpg.cloudscale.ch\nobjects.rma.cloudscale.ch\nlpg.objectstorage.ch\nrma.objectstorage.ch\nwnext.app\ncnpy.gdn\n*.otap.co\nco.ca\nco.com\nsch.ac\ndev.cv\nstore.cv\ncodeberg.page\ncodepen.app\ncodepen.dev\ncsb.app\npreview.csb.app\nco.nl\nco.no\n*.devinapps.com\nwebhosting.be\nprvw.eu\nhosting-cluster.nl\nctfcloud.net\nconvex.app\nconvex.cloud\neu-west-1.convex.cloud\nus-east-1.convex.cloud\nconvex.site\neu-west-1.convex.site\nus-east-1.convex.site\nac.ru\nedu.ru\ngov.ru\nint.ru\nmil.ru\ncorespeed.app\ndyn.cosidns.de\ndnsupdater.de\ndynamisches-dns.de\ninternet-dns.de\nl-o-g-i-n.de\ndynamic-dns.info\nfeste-ip.net\nknx-server.net\nstatic-access.net\ncraft.me\nrealm.cz\ncfolks.pl\ncyon.link\ncyon.site\nbiz.dk\nco.dk\nfirm.dk\nreg.dk\nstore.dk\ndyndns.dappnode.io\nbuiltwithdark.com\ndarklang.io\ndemo.datadetect.com\ninstance.datadetect.com\nedgestack.me\ndattolocal.com\ndattorelay.com\ndattoweb.com\nmydatto.com\ndattolocal.net\nmydatto.net\nddnss.de\ndyn.ddnss.de\ndyndns.ddnss.de\ndyn-ip24.de\ndyndns1.de\nhome-webserver.de\ndyn.home-webserver.de\nmyhome-server.de\nddnss.org\ndebian.net\ndefinima.io\ndefinima.net\ndeno.dev\ndeno-staging.dev\ndeno.net\nsandbox.deno.net\ndeployagent.com\npiebox.site\ndeployagent.space\ndedyn.io\ndeuxfleurs.eu\ndeuxfleurs.page\n*.at.ply.gg\nd6.ply.gg\njoinmc.link\nplayit.plus\n*.at.playit.plus\nwith.playit.plus\nicp0.io\n*.raw.icp0.io\nicp1.io\n*.raw.icp1.io\nopencloud.me\n*.icp.net\ncaffeine.site\ncaffeine.xyz\nmybox.company\nintouch.email\nmybox.me\nmybox.page\ndfirma.pl\ndkonto.pl\nyou2.pl\nondigitalocean.app\n*.digitaloceanspaces.com\nqzz.io\nus.kg\nxx.kg\ndpdns.org\ndiscordsays.com\ndiscordsez.com\njozi.biz\nccwu.cc\ncc.cd\nus.ci\nde5.net\ndnshome.at\nresolve.bar\nddns.berlin\ndnshome.cloud\nddnssec.de\ndnshome.de\ndyndnssec.de\nheimdns.de\nsrvdns.de\ndnshome.eu\ndnshome.it\ndyn.now\nheimdns.online\nddns.wtf\nonline.th\nshop.th\nco.scot\nme.scot\norg.scot\ndrayddns.com\nshoparena.pl\ndreamhosters.com\ndurumis.com\nduckdns.org\ndy.fi\ntunk.org\ndyndns.biz\nfor-better.biz\nfor-more.biz\nfor-some.biz\nfor-the.biz\nselfip.biz\nwebhop.biz\nftpaccess.cc\ngame-server.cc\nmyphotos.cc\nscrapping.cc\nblogdns.com\ncechire.com\ndnsalias.com\ndnsdojo.com\ndoesntexist.com\ndontexist.com\ndoomdns.com\ndyn-o-saur.com\ndynalias.com\ndyndns-at-home.com\ndyndns-at-work.com\ndyndns-blog.com\ndyndns-free.com\ndyndns-home.com\ndyndns-ip.com\ndyndns-mail.com\ndyndns-office.com\ndyndns-pics.com\ndyndns-remote.com\ndyndns-server.com\ndyndns-web.com\ndyndns-wiki.com\ndyndns-work.com\nest-a-la-maison.com\nest-a-la-masion.com\nest-le-patron.com\nest-mon-blogueur.com\nfrom-ak.com\nfrom-al.com\nfrom-ar.com\nfrom-ca.com\nfrom-ct.com\nfrom-dc.com\nfrom-de.com\nfrom-fl.com\nfrom-ga.com\nfrom-hi.com\nfrom-ia.com\nfrom-id.com\nfrom-il.com\nfrom-in.com\nfrom-ks.com\nfrom-ky.com\nfrom-ma.com\nfrom-md.com\nfrom-mi.com\nfrom-mn.com\nfrom-mo.com\nfrom-ms.com\nfrom-mt.com\nfrom-nc.com\nfrom-nd.com\nfrom-ne.com\nfrom-nh.com\nfrom-nj.com\nfrom-nm.com\nfrom-nv.com\nfrom-oh.com\nfrom-ok.com\nfrom-or.com\nfrom-pa.com\nfrom-pr.com\nfrom-ri.com\nfrom-sc.com\nfrom-sd.com\nfrom-tn.com\nfrom-tx.com\nfrom-ut.com\nfrom-va.com\nfrom-vt.com\nfrom-wa.com\nfrom-wi.com\nfrom-wv.com\nfrom-wy.com\ngetmyip.com\ngotdns.com\nhobby-site.com\nhomelinux.com\nhomeunix.com\niamallama.com\nis-a-anarchist.com\nis-a-blogger.com\nis-a-bookkeeper.com\nis-a-bulls-fan.com\nis-a-caterer.com\nis-a-chef.com\nis-a-conservative.com\nis-a-cpa.com\nis-a-cubicle-slave.com\nis-a-democrat.com\nis-a-designer.com\nis-a-doctor.com\nis-a-financialadvisor.com\nis-a-geek.com\nis-a-green.com\nis-a-guru.com\nis-a-hard-worker.com\nis-a-hunter.com\nis-a-landscaper.com\nis-a-lawyer.com\nis-a-liberal.com\nis-a-libertarian.com\nis-a-llama.com\nis-a-musician.com\nis-a-nascarfan.com\nis-a-nurse.com\nis-a-painter.com\nis-a-personaltrainer.com\nis-a-photographer.com\nis-a-player.com\nis-a-republican.com\nis-a-rockstar.com\nis-a-socialist.com\nis-a-student.com\nis-a-teacher.com\nis-a-techie.com\nis-a-therapist.com\nis-an-accountant.com\nis-an-actor.com\nis-an-actress.com\nis-an-anarchist.com\nis-an-artist.com\nis-an-engineer.com\nis-an-entertainer.com\nis-certified.com\nis-gone.com\nis-into-anime.com\nis-into-cars.com\nis-into-cartoons.com\nis-into-games.com\nis-leet.com\nis-not-certified.com\nis-slick.com\nis-uberleet.com\nis-with-theband.com\nisa-geek.com\nisa-hockeynut.com\nissmarterthanyou.com\nlikes-pie.com\nlikescandy.com\nneat-url.com\nsaves-the-whales.com\nselfip.com\nsells-for-less.com\nsells-for-u.com\nservebbs.com\nsimple-url.com\nspace-to-rent.com\nteaches-yoga.com\nwritesthisblog.com\nath.cx\nfuettertdasnetz.de\nisteingeek.de\nistmein.de\nlebtimnetz.de\nleitungsen.de\ntraeumtgerade.de\nbarrel-of-knowledge.info\nbarrell-of-knowledge.info\ndyndns.info\nfor-our.info\ngroks-the.info\ngroks-this.info\nhere-for-more.info\nknowsitall.info\nselfip.info\nwebhop.info\nforgot.her.name\nforgot.his.name\nat-band-camp.net\nblogdns.net\nbroke-it.net\nbuyshouses.net\ndnsalias.net\ndnsdojo.net\ndoes-it.net\ndontexist.net\ndynalias.net\ndynathome.net\nendofinternet.net\nfrom-az.net\nfrom-co.net\nfrom-la.net\nfrom-ny.net\ngets-it.net\nham-radio-op.net\nhomeftp.net\nhomeip.net\nhomelinux.net\nhomeunix.net\nin-the-band.net\nis-a-chef.net\nis-a-geek.net\nisa-geek.net\nkicks-ass.net\noffice-on-the.net\npodzone.net\nscrapper-site.net\nselfip.net\nsells-it.net\nservebbs.net\nserveftp.net\nthruhere.net\nwebhop.net\nmerseine.nu\nmine.nu\nshacknet.nu\nblogdns.org\nblogsite.org\nboldlygoingnowhere.org\ndnsalias.org\ndnsdojo.org\ndoesntexist.org\ndontexist.org\ndoomdns.org\ndvrdns.org\ndynalias.org\ndyndns.org\ngo.dyndns.org\nhome.dyndns.org\nendofinternet.org\nendoftheinternet.org\nfrom-me.org\ngame-host.org\ngotdns.org\nhobby-site.org\nhomedns.org\nhomeftp.org\nhomelinux.org\nhomeunix.org\nis-a-bruinsfan.org\nis-a-candidate.org\nis-a-celticsfan.org\nis-a-chef.org\nis-a-geek.org\nis-a-knight.org\nis-a-linux-user.org\nis-a-patsfan.org\nis-a-soxfan.org\nis-found.org\nis-lost.org\nis-saved.org\nis-very-bad.org\nis-very-evil.org\nis-very-good.org\nis-very-nice.org\nis-very-sweet.org\nisa-geek.org\nkicks-ass.org\nmisconfused.org\npodzone.org\nreadmyblog.org\nselfip.org\nsellsyourhome.org\nservebbs.org\nserveftp.org\nservegame.org\nstuff-4-sale.org\nwebhop.org\nbetter-than.tv\ndyndns.tv\non-the-web.tv\nworse-than.tv\nis-by.us\nland-4-sale.us\nstuff-4-sale.us\ndyndns.ws\nmypets.ws\n1cooldns.com\nbumbleshrimp.com\nddnsfree.com\nddnsgeek.com\nddnsguru.com\ndynuddns.com\ndynuhosting.com\ngiize.com\ngleeze.com\nkozow.com\nloseyourip.com\nooguy.com\npivohosting.com\ntheworkpc.com\nwiredbladehosting.com\ncasacam.net\ndynu.net\ndynuddns.net\nmysynology.net\nopik.net\nspryt.net\naccesscam.org\ncamdvr.org\nfreeddns.org\nmywire.org\nroxa.org\nwebredirect.org\nmyddns.rocks\ndynv6.net\ne4.cz\neasypanel.app\neasypanel.host\n*.ewp.live\ntwmail.cc\ntwmail.net\ntwmail.org\nmymailer.com.tw\nurl.tw\nat.emf.camp\nrt.ht\nelementor.cloud\nelementor.cool\nemergent.cloud\npreview.emergentagent.com\nemergent.host\nmytuleap.com\ntuleap-partners.com\nencr.app\nfrontend.encr.app\nencoreapi.com\nlp.dev\napi.lp.dev\nobjects.lp.dev\neu.encoway.cloud\neu.org\nal.eu.org\nasso.eu.org\nat.eu.org\nau.eu.org\nbe.eu.org\nbg.eu.org\nca.eu.org\ncd.eu.org\nch.eu.org\ncn.eu.org\ncy.eu.org\ncz.eu.org\nde.eu.org\ndk.eu.org\nedu.eu.org\nee.eu.org\nes.eu.org\nfi.eu.org\nfr.eu.org\ngr.eu.org\nhr.eu.org\nhu.eu.org\nie.eu.org\nil.eu.org\nin.eu.org\nint.eu.org\nis.eu.org\nit.eu.org\njp.eu.org\nkr.eu.org\nlt.eu.org\nlu.eu.org\nlv.eu.org\nme.eu.org\nmk.eu.org\nmt.eu.org\nmy.eu.org\nnet.eu.org\nng.eu.org\nnl.eu.org\nno.eu.org\nnz.eu.org\npl.eu.org\npt.eu.org\nro.eu.org\nru.eu.org\nse.eu.org\nsi.eu.org\nsk.eu.org\ntr.eu.org\nuk.eu.org\nus.eu.org\neurodir.ru\neu-1.evennode.com\neu-2.evennode.com\neu-3.evennode.com\neu-4.evennode.com\nus-1.evennode.com\nus-2.evennode.com\nus-3.evennode.com\nus-4.evennode.com\nrelay.evervault.app\nrelay.evervault.dev\nexe.xyz\nexpo.app\non.expo.app\nstaging.expo.app\non.staging.expo.app\nfspages.org\nru.net\nadygeya.ru\nbashkiria.ru\nbir.ru\ncbg.ru\ncom.ru\ndagestan.ru\ngrozny.ru\nkalmykia.ru\nkustanai.ru\nmarine.ru\nmordovia.ru\nmsk.ru\nmytis.ru\nnalchik.ru\nnov.ru\npyatigorsk.ru\nspb.ru\nvladikavkaz.ru\nvladimir.ru\nabkhazia.su\nadygeya.su\naktyubinsk.su\narkhangelsk.su\narmenia.su\nashgabad.su\nazerbaijan.su\nbalashov.su\nbashkiria.su\nbryansk.su\nbukhara.su\nchimkent.su\ndagestan.su\neast-kazakhstan.su\nexnet.su\ngeorgia.su\ngrozny.su\nivanovo.su\njambyl.su\nkalmykia.su\nkaluga.su\nkaracol.su\nkaraganda.su\nkarelia.su\nkhakassia.su\nkrasnodar.su\nkurgan.su\nkustanai.su\nlenug.su\nmangyshlak.su\nmordovia.su\nmsk.su\nmurmansk.su\nnalchik.su\nnavoi.su\nnorth-kazakhstan.su\nnov.su\nobninsk.su\npenza.su\npokrovsk.su\nsochi.su\nspb.su\ntashkent.su\ntermez.su\ntogliatti.su\ntroitsk.su\ntselinograd.su\ntula.su\ntuva.su\nvladikavkaz.su\nvladimir.su\nvologda.su\nchannelsdvr.net\nu.channelsdvr.net\nedgecompute.app\nfastly-edge.com\nfastly-terrarium.com\nfreetls.fastly.net\nmap.fastly.net\na.prod.fastly.net\nglobal.prod.fastly.net\na.ssl.fastly.net\nb.ssl.fastly.net\nglobal.ssl.fastly.net\nfastlylb.net\nmap.fastlylb.net\n*.user.fm\nfastvps-server.com\nfastvps.host\nmyfast.host\nfastvps.site\nmyfast.space\nconn.uk\ncopro.uk\nhosp.uk\nfedorainfracloud.org\nfedorapeople.org\ncloud.fedoraproject.org\napp.os.fedoraproject.org\napp.os.stg.fedoraproject.org\nmydobiss.com\nfh-muenster.io\npayload.dev\nfigma.site\nfigma-gov.site\npreview.site\nfilegear.me\nfirebaseapp.com\nfldrv.com\non-fleek.app\nflutterflow.app\nsprites.app\nfly.dev\ne2b.app\nframer.ai\nframer.app\nframercanvas.com\nframer.media\nframer.photos\nframer.website\nframer.wiki\n*.0e.vc\nfreebox-os.com\nfreeboxos.com\nfbx-os.fr\nfbxos.fr\nfreebox-os.fr\nfreeboxos.fr\nfreedesktop.org\nfreemyip.com\n*.frusky.de\nwien.funkfeuer.at\ndaemon.asia\ndix.asia\nmydns.bz\n0am.jp\n0g0.jp\n0j0.jp\n0t0.jp\nmydns.jp\npgw.jp\nwjg.jp\nkeyword-on.net\nlive-on.net\nserver-on.net\nmydns.tw\nmydns.vc\n*.futurecms.at\n*.ex.futurecms.at\n*.in.futurecms.at\nfuturehosting.at\nfuturemailing.at\n*.ex.ortsinfo.at\n*.kunden.ortsinfo.at\n*.statics.cloud\ngadget.app\ngadget.host\naliases121.com\ncampaign.gov.uk\nservice.gov.uk\nindependent-commission.uk\nindependent-inquest.uk\nindependent-inquiry.uk\nindependent-panel.uk\nindependent-review.uk\npublic-inquiry.uk\nroyal-commission.uk\ngehirn.ne.jp\nusercontent.jp\ngentapps.com\ngentlentapis.com\ncdn-edges.net\ngsj.bz\ngitbook.io\ngithub.app\ngithubusercontent.com\ngithubpreview.dev\ngithub.io\ngitlab.io\ngitapp.si\ngitpage.si\nnog.community\nco.ro\nshop.ro\nlolipop.io\nangry.jp\nbabyblue.jp\nbabymilk.jp\nbackdrop.jp\nbambina.jp\nbitter.jp\nblush.jp\nboo.jp\nboy.jp\nboyfriend.jp\nbut.jp\ncandypop.jp\ncapoo.jp\ncatfood.jp\ncheap.jp\nchicappa.jp\nchillout.jp\nchips.jp\nchowder.jp\nchu.jp\nciao.jp\ncocotte.jp\ncoolblog.jp\ncranky.jp\ncutegirl.jp\ndaa.jp\ndeca.jp\ndeci.jp\ndigick.jp\negoism.jp\nfakefur.jp\nfem.jp\nflier.jp\nfloppy.jp\nfool.jp\nfrenchkiss.jp\ngirlfriend.jp\ngirly.jp\ngloomy.jp\ngonna.jp\ngreater.jp\nhacca.jp\nheavy.jp\nher.jp\nhiho.jp\nhippy.jp\nholy.jp\nhungry.jp\nicurus.jp\nitigo.jp\njellybean.jp\nkikirara.jp\nkill.jp\nkilo.jp\nkuron.jp\nlittlestar.jp\nlolipopmc.jp\nlolitapunk.jp\nlomo.jp\nlovepop.jp\nlovesick.jp\nmain.jp\nmods.jp\nmond.jp\nmongolian.jp\nmoo.jp\nnamaste.jp\nnikita.jp\nnobushi.jp\nnoor.jp\noops.jp\nparallel.jp\nparasite.jp\npecori.jp\npeewee.jp\npenne.jp\npepper.jp\nperma.jp\npigboat.jp\npinoko.jp\npunyu.jp\npupu.jp\npussycat.jp\npya.jp\nraindrop.jp\nreadymade.jp\nsadist.jp\nschoolbus.jp\nsecret.jp\nstaba.jp\nstripper.jp\nsub.jp\nsunnyday.jp\nthick.jp\ntonkotsu.jp\nunder.jp\nupper.jp\nvelvet.jp\nverse.jp\nversus.jp\nvivian.jp\nwatson.jp\nweblike.jp\nwhitesnow.jp\nzombie.jp\nheteml.net\nvibehost.space\ngraphic.design\ngoip.de\n*.hosted.app\n*.run.app\n*.mtls.run.app\nweb.app\n*.0emm.com\nappspot.com\n*.r.appspot.com\nblogspot.com\ncodespot.com\ngoogleapis.com\ngooglecode.com\npagespeedmobilizer.com\nwithgoogle.com\nwithyoutube.com\n*.gateway.dev\ncloud.goog\ntranslate.goog\n*.usercontent.goog\ncloudfunctions.net\ngoupile.fr\npymnt.uk\ngov.nl\ngrafana-dev.net\ngrayjayleagues.com\ngrebedoc.dev\nxn--gnstigbestellen-zvb.de\nxn--gnstigliefern-wob.de\ngv.uy\nhackclub.app\nxn--hkkinen-5wa.fi\nhashbang.sh\nhasura.app\nhasura-app.io\nhatenablog.com\nhatenadiary.com\nhateblo.jp\nhatenablog.jp\nhatenadiary.jp\nhatenadiary.org\npages.it.hs-heilbronn.de\npages-research.it.hs-heilbronn.de\nheiyu.space\nhelioho.st\nheliohost.us\nhepforge.org\nonhercules.app\nhercules-app.com\nhercules-dev.com\nhere.now\nherokuapp.com\nheyflow.page\nheyflow.site\nravendb.cloud\nravendb.community\ndevelopment.run\nravendb.run\nhidns.co\nhidns.vip\nhomesklep.pl\n*.kin.one\n*.id.pub\n*.kin.pub\nseprox.hooc.me\nhoplix.shop\norx.biz\nbiz.ng\nco.biz.ng\ndl.biz.ng\ngo.biz.ng\nlg.biz.ng\non.biz.ng\ncol.ng\nfirm.ng\ngen.ng\nltd.ng\nngo.ng\nplc.ng\nhstgr.cloud\nhostyhosting.io\nhf.space\nstatic.hf.space\nhypernode.io\niobb.net\nco.cz\n*.moonscale.io\nmoonscale.net\ngr.com\niki.fi\nibxos.it\niliadboxos.it\nimagine.diy\nimagine-proxy.work\nsmushcdn.com\nwphostedmail.com\nwpmucdn.com\ntempurl.host\nwpmudev.host\ndyn-berlin.de\nin-berlin.de\nin-brb.de\nin-butter.de\nin-dsl.de\nin-vpn.de\nin-dsl.net\nin-vpn.net\nin-dsl.org\nin-vpn.org\noninferno.net\ninfo.cx\nac.leg.br\nal.leg.br\nam.leg.br\nap.leg.br\nba.leg.br\nce.leg.br\ndf.leg.br\nes.leg.br\ngo.leg.br\nma.leg.br\nmg.leg.br\nms.leg.br\nmt.leg.br\npa.leg.br\npb.leg.br\npe.leg.br\npi.leg.br\npr.leg.br\nrj.leg.br\nrn.leg.br\nro.leg.br\nrr.leg.br\nrs.leg.br\nsc.leg.br\nse.leg.br\nsp.leg.br\nto.leg.br\npixolino.com\nna4u.ru\nbotdash.app\nbotdash.dev\nbotdash.gg\nbotdash.net\nbotda.sh\nbotdash.xyz\nonline-server.cloud\napps-1and1.com\nlive-website.com\nwebspace-host.com\napps-1and1.net\nwebsitebuilder.online\napp-ionos.space\niopsys.se\n*.inbrowser.dev\n*.dweb.link\n*.inbrowser.link\nipifony.net\nhome64.de\nipv64.de\nipv64.net\nir.md\nis-a-good.dev\niservschule.de\nmein-iserv.de\nschuldock.de\nschulplattform.de\nschulserver.de\ntest-iserv.de\niserv.dev\niserv.host\nispmanager.name\nmel.cloudlets.com.au\ncloud.interhostsolutions.be\nalp1.ae.flow.ch\nappengine.flow.ch\nes-1.axarnet.cloud\ndiadem.cloud\nvip.jelastic.cloud\njele.cloud\nit1.eur.aruba.jenv-aruba.cloud\nit1.jenv-aruba.cloud\nkeliweb.cloud\ncs.keliweb.cloud\noxa.cloud\ntn.oxa.cloud\nuk.oxa.cloud\nprimetel.cloud\nuk.primetel.cloud\nca.reclaim.cloud\nuk.reclaim.cloud\nus.reclaim.cloud\nch.trendhosting.cloud\nde.trendhosting.cloud\njele.club\ndopaas.com\npaas.hosted-by-previder.com\nrag-cloud.hosteur.com\nrag-cloud-ch.hosteur.com\njcloud.ik-server.com\njcloud-ver-jpc.ik-server.com\ndemo.jelastic.com\npaas.massivegrid.com\njed.wafaicloud.com\nryd.wafaicloud.com\nj.scaleforce.com.cy\njelastic.dogado.eu\nfi.cloudplatform.fi\njele.host\nmircloud.host\npaas.beebyte.io\nsekd1.beebyteapp.io\njele.io\njc.neen.it\njcloud.kz\ncloudjiffy.net\nfra1-de.cloudjiffy.net\nwest1-us.cloudjiffy.net\njls-sto1.elastx.net\njls-sto2.elastx.net\njls-sto3.elastx.net\nfr-1.paas.massivegrid.net\nlon-1.paas.massivegrid.net\nlon-2.paas.massivegrid.net\nny-1.paas.massivegrid.net\nny-2.paas.massivegrid.net\nsg-1.paas.massivegrid.net\njelastic.saveincloud.net\nnordeste-idc.saveincloud.net\nj.scaleforce.net\nsdscloud.pl\nunicloud.pl\nmircloud.ru\nenscaled.sg\njele.site\njelastic.team\norangecloud.tn\nj.layershift.co.uk\nphx.enscaled.us\nmircloud.us\nmyjino.ru\n*.hosting.myjino.ru\n*.landing.myjino.ru\n*.spectrum.myjino.ru\n*.vps.myjino.ru\njote.cloud\njotelulu.cloud\neu1-plenit.com\nla1-plenit.com\nus1-plenit.com\nwebadorsite.com\njouwweb.site\njs.org\nelastic.k2.cloud\nlb.ru-msk.k2.cloud\ns3.ru-msk.k2.cloud\nwebsite.ru-msk.k2.cloud\nlb.ru-spb.k2.cloud\ns3.ru-spb.k2.cloud\nwebsite.ru-spb.k2.cloud\ns3.k2.cloud\nwebsite.k2.cloud\nkaas.gg\nkhplay.nl\nkapsi.fi\nkdns.fr\nezproxy.kuleuven.be\nkuleuven.cloud\nkeenetic.io\nkeenetic.link\nkeenetic.name\nkeenetic.pro\nae.kg\nkeymachine.de\nkiloapps.ai\nkiloapps.io\nkinghost.net\nuni5.net\nknightpoint.systems\nkoobin.events\nwebthings.io\nkrellian.net\noya.to\nco.de\nshiptoday.app\nshiptoday.build\nlaravel.cloud\non-forge.com\non-vapor.com\n*.eth.limo\n*.eth.link\ngit-repos.de\nlcube-server.de\nsvn-repos.de\nleadpages.co\nlpages.co\nlpusercontent.com\nleapcell.app\nleapcell.dev\nleapcell.online\nliara.run\niran.liara.run\nlibp2p.direct\nruncontainers.dev\nco.business\nco.education\nco.events\nco.financial\nco.network\nco.place\nco.technology\nlinkyard-cloud.ch\nlinkyard.cloud\nmembers.linode.com\n*.nodebalancer.linode.com\n*.linodeobjects.com\nip.linodeusercontent.com\nwe.bs\nfilegear-sg.me\nggff.net\n*.user.localcert.dev\nlocaltonet.com\n*.localto.net\nlodz.pl\npabianice.pl\nplock.pl\nsieradz.pl\nskierniewice.pl\nzgierz.pl\nloginline.app\nloginline.dev\nloginline.io\nloginline.services\nloginline.site\nlohmus.me\nlovable.app\nlovableproject.com\nlovable.run\nlovable.sh\nkrasnik.pl\nleczna.pl\nlubartow.pl\nlublin.pl\nponiatowa.pl\nswidnik.pl\nglug.org.uk\nlug.org.uk\nlugs.org.uk\nbarsy.bg\nbarsy.club\nbarsycenter.com\nbarsyonline.com\nbarsy.de\nbarsy.dev\nbarsy.eu\nbarsy.gr\nbarsy.in\nbarsy.info\nbarsy.io\nbarsy.me\nbarsy.menu\nbarsyonline.menu\nbarsy.mobi\nbarsy.net\nbarsy.online\nbarsy.org\nbarsy.pro\nbarsy.pub\nbarsy.ro\nbarsy.rs\nbarsy.shop\nbarsyonline.shop\nbarsy.site\nbarsy.store\nbarsy.support\nbarsy.uk\nbarsy.co.uk\nbarsyonline.co.uk\n*.lutrausercontent.com\nluyani.app\nluyani.net\n*.magentosite.cloud\nmagicpatterns.app\nmagicpatternsapp.com\nhb.cldmail.ru\nmatlab.cloud\nmodelscape.com\nmwcloudnonprod.com\npolyspace.com\nmayfirst.info\nmcdir.me\nmcdir.ru\nvps.mcdir.ru\nmcpre.ru\nmediatech.by\nmediatech.dev\nhra.health\nmedusajs.app\nminiserver.com\nmemset.net\nmesserli.app\natmeta.com\napps.fbsbx.com\n*.metaaiusercontent.com\n*.cloud.metacentrum.cz\ncustom.metacentrum.cz\nflt.cloud.muni.cz\nusr.cloud.muni.cz\nmeteorapp.com\neu.meteorapp.com\nco.pl\n*.azurecontainer.io\nazure-api.net\nazure-mobile.net\nazureedge.net\nazurefd.net\nazurestaticapps.net\n1.azurestaticapps.net\n2.azurestaticapps.net\n3.azurestaticapps.net\n4.azurestaticapps.net\n5.azurestaticapps.net\n6.azurestaticapps.net\n7.azurestaticapps.net\ncentralus.azurestaticapps.net\neastasia.azurestaticapps.net\neastus2.azurestaticapps.net\nwesteurope.azurestaticapps.net\nwestus2.azurestaticapps.net\nazurewebsites.net\naustraliacentral-01.azurewebsites.net\naustraliacentral2-01.azurewebsites.net\naustraliaeast-01.azurewebsites.net\naustraliasoutheast-01.azurewebsites.net\naustriaeast-01.azurewebsites.net\nbelgiumcentral-01.azurewebsites.net\nbrazilsouth-01.azurewebsites.net\nbrazilsoutheast-01.azurewebsites.net\ncanadacentral-01.azurewebsites.net\ncanadaeast-01.azurewebsites.net\ncentralindia-01.azurewebsites.net\ncentralus-01.azurewebsites.net\ncentraluseuap-01.azurewebsites.net\nchilecentral-01.azurewebsites.net\ndenmarkeast-01.azurewebsites.net\neastasia-01.azurewebsites.net\neastasiastage-01.azurewebsites.net\neastus-01.azurewebsites.net\neastus2-01.azurewebsites.net\neastus2euap-01.azurewebsites.net\neastus3-01.azurewebsites.net\nfrancecentral-01.azurewebsites.net\nfrancesouth-01.azurewebsites.net\ngermanynorth-01.azurewebsites.net\ngermanywestcentral-01.azurewebsites.net\nindiasouthcentral-01.azurewebsites.net\nindonesiacentral-01.azurewebsites.net\nisraelcentral-01.azurewebsites.net\nisraelnorthwest-01.azurewebsites.net\nitalynorth-01.azurewebsites.net\njapaneast-01.azurewebsites.net\njapanwest-01.azurewebsites.net\njioindiacentral-01.azurewebsites.net\njioindiawest-01.azurewebsites.net\nkoreacentral-01.azurewebsites.net\nkoreasouth-01.azurewebsites.net\nmalaysiawest-01.azurewebsites.net\nmexicocentral-01.azurewebsites.net\nnewzealandnorth-01.azurewebsites.net\nnorthcentralus-01.azurewebsites.net\nnorthcentralusstage-01.azurewebsites.net\nnortheastus5-01.azurewebsites.net\nnortheurope-01.azurewebsites.net\nnorwayeast-01.azurewebsites.net\nnorwaywest-01.azurewebsites.net\n*.p.azurewebsites.net\npolandcentral-01.azurewebsites.net\nqatarcentral-01.azurewebsites.net\nsouthafricanorth-01.azurewebsites.net\nsouthafricawest-01.azurewebsites.net\nsouthcentralus-01.azurewebsites.net\nsouthcentralus2-01.azurewebsites.net\nsoutheastasia-01.azurewebsites.net\nsoutheastus5-01.azurewebsites.net\nsouthindia-01.azurewebsites.net\nspaincentral-01.azurewebsites.net\nswedencentral-01.azurewebsites.net\nswedensouth-01.azurewebsites.net\nswitzerlandnorth-01.azurewebsites.net\nswitzerlandwest-01.azurewebsites.net\ntaiwannorth-01.azurewebsites.net\ntaiwannorthwest-01.azurewebsites.net\nuaecentral-01.azurewebsites.net\nuaenorth-01.azurewebsites.net\nuksouth-01.azurewebsites.net\nukwest-01.azurewebsites.net\nwestcentralus-01.azurewebsites.net\nwesteurope-01.azurewebsites.net\nwestindia-01.azurewebsites.net\nwestus-01.azurewebsites.net\nwestus2-01.azurewebsites.net\nwestus3-01.azurewebsites.net\ncloudapp.net\ntrafficmanager.net\nblob.core.usgovcloudapi.net\nfile.core.usgovcloudapi.net\nweb.core.usgovcloudapi.net\nservicebus.usgovcloudapi.net\nusgovcloudapp.net\nusgovtrafficmanager.net\nblob.core.windows.net\nfile.core.windows.net\nweb.core.windows.net\nservicebus.windows.net\nazure-api.us\nazurewebsites.us\nroutingthecloud.com\nsn.mynetname.net\nroutingthecloud.net\nroutingthecloud.org\nsame-app.com\nsame-preview.com\ncsx.cc\nmiren.app\nmiren.systems\nmydbserver.com\nwebspaceconfig.de\nmittwald.info\nmittwaldserver.info\ntypo3server.info\nproject.space\nmkm.fan\nmocha.app\nmochausercontent.com\nmocha-sandbox.dev\nmodx.dev\nbmoattachments.org\nnet.ru\norg.ru\npp.ru\nmy.be\nhostedpi.com\ncaracal.mythic-beasts.com\ncustomer.mythic-beasts.com\nfentiger.mythic-beasts.com\nlynx.mythic-beasts.com\nocelot.mythic-beasts.com\noncilla.mythic-beasts.com\nonza.mythic-beasts.com\nsphinx.mythic-beasts.com\nvs.mythic-beasts.com\nx.mythic-beasts.com\nyali.mythic-beasts.com\ncust.retrosnub.co.uk\nui.nabu.casa\nneedle.run\nco.site\ncloud.nospamproxy.com\no365.cloud.nospamproxy.com\nnetlib.re\nnetlify.app\n4u.com\nnfshost.com\nipfs.nftstorage.link\nngo.us\nngrok.app\nngrok-free.app\nngrok.dev\nngrok-free.dev\nngrok.io\nap.ngrok.io\nau.ngrok.io\neu.ngrok.io\nin.ngrok.io\njp.ngrok.io\nsa.ngrok.io\nus.ngrok.io\nngrok.pizza\nngrok.pro\ntorun.pl\nnh-serv.co.uk\nnimsite.uk\nmmafan.biz\nmyftp.biz\nno-ip.biz\nno-ip.ca\nfantasyleague.cc\ngotdns.ch\n3utilities.com\nblogsyte.com\nciscofreak.com\ndamnserver.com\nddnsking.com\nditchyourip.com\ndnsiskinky.com\ndynns.com\ngeekgalaxy.com\nhealth-carereform.com\nhomesecuritymac.com\nhomesecuritypc.com\nmyactivedirectory.com\nmysecuritycamera.com\nmyvnc.com\nnet-freaks.com\nonthewifi.com\npoint2this.com\nquicksytes.com\nsecuritytactics.com\nservebeer.com\nservecounterstrike.com\nserveexchange.com\nserveftp.com\nservegame.com\nservehalflife.com\nservehttp.com\nservehumour.com\nserveirc.com\nservemp3.com\nservep2p.com\nservepics.com\nservequake.com\nservesarcasm.com\nstufftoread.com\nunusualperson.com\nworkisboring.com\ndvrcam.info\nilovecollege.info\nno-ip.info\nbrasilia.me\nddns.me\ndnsfor.me\nhopto.me\nloginto.me\nnoip.me\nwebhop.me\nbounceme.net\nddns.net\neating-organic.net\nmydissent.net\nmyeffect.net\nmymediapc.net\nmypsx.net\nmysecuritycamera.net\nnhlfan.net\nno-ip.net\npgafan.net\nprivatizehealthinsurance.net\nredirectme.net\nserveblog.net\nserveminecraft.net\nsytes.net\ncable-modem.org\ncollegefan.org\ncouchpotatofries.org\nhopto.org\nmlbfan.org\nmyftp.org\nmysecuritycamera.org\nnflfan.org\nno-ip.org\nread-books.org\nufcfan.org\nzapto.org\nno-ip.co.uk\ngolffan.us\nnoip.us\npointto.us\nstage.nodeart.io\n*.developer.app\nnoop.app\n*.northflank.app\n*.build.run\n*.code.run\n*.database.run\n*.migration.run\naberdeen.wa.us\nbainbridge-isl.wa.us\nbellevue.wa.us\nbremerton.wa.us\ncentralia.wa.us\nchehalis.wa.us\nforks.wa.us\ngig-harbor.wa.us\nhoquiam.wa.us\nkeyport.wa.us\nkingston.wa.us\nolympia.wa.us\nport-angeles.wa.us\nport-ludlow.wa.us\nport-orchard.wa.us\nport-townsend.wa.us\npoulsbo.wa.us\nredmond.wa.us\nrenton.wa.us\nsea.wa.us\nseattle.wa.us\nsequim.wa.us\nshelton.wa.us\nsilverdale.wa.us\nyarrow-point.wa.us\nnoticeable.news\nnotion.site\ndnsking.ch\nmypi.co\nmyiphost.com\nforumz.info\nsoundcast.me\ntcp4.me\ndnsup.net\nhicam.net\nnow-dns.net\nownip.net\nvpndns.net\ndynserv.org\nnow-dns.org\nx443.pw\nntdll.top\nfreeddns.us\nnsupdate.info\nnerdpol.ovh\nprvcy.page\nobservablehq.cloud\nstatic.observableusercontent.com\nomg.lol\ncloudycluster.net\nomniwe.site\n123webseite.at\n123website.be\nsimplesite.com.br\n123website.ch\nsimplesite.com\n123webseite.de\n123hjemmeside.dk\n123miweb.es\n123kotisivu.fi\n123siteweb.fr\nsimplesite.gr\n123homepage.it\n123website.lu\n123website.nl\n123hjemmeside.no\nservice.one\nwebsite.one\nsimplesite.pl\n123paginaweb.pt\n123minsida.se\nonid.ca\nis-a-fullstack.dev\nis-cool.dev\nis-not-a.dev\nlocalplayer.dev\nis-local.org\nopensocial.site\n*.oaiusercontent.com\nchatgpt.site\nopencraft.hosting\n16-b.it\n32-b.it\n64-b.it\norsites.com\noperaunite.com\n*.customer-oci.com\n*.oci.customer-oci.com\n*.ocp.customer-oci.com\n*.ocs.customer-oci.com\n*.oraclecloudapps.com\n*.oraclegovcloudapps.com\n*.oraclegovcloudapps.uk\ntech.orange\ncan.re\nauthgear-staging.com\nauthgearapps.com\noutsystemscloud.com\n*.hosting.ovh.net\n*.webpaas.ovh.net\nownprovider.com\nown.pm\n*.owo.codes\nox.rs\noy.lc\npgfog.com\ngotpantheon.com\npantheonsite.io\n*.paywhirl.com\n*.xmit.co\nxmit.dev\nmadethis.site\nsrv.us\ngh.srv.us\ngl.srv.us\nmypep.link\npplx.app\nperspecta.cloud\nforgeblocks.com\nid.forgerock.io\nsupport.site\non-web.fr\n*.upsun.app\nupsunapp.com\nent.platform.sh\neu.platform.sh\nus.platform.sh\n*.platformsh.site\n*.tst.site\nplaycode.site\npley.games\nonporter.run\nco.bn\npostman-echo.com\npstmn.io\nmock.pstmn.io\nhttpbin.org\nprequalifyme.today\nxen.prgmr.com\npriv.at\nc01.kr\neliv-api.kr\neliv-cdn.kr\neliv-dns.kr\nmmv.kr\nvki.kr\ndev.project-study.com\nplatter-app.dev\ne.id\nchirurgiens-dentistes-en-france.fr\nbyen.site\nnyc.mn\n*.cn.st\npubtls.org\nputer.app\nputer.site\nputer.work\npythonanywhere.com\neu.pythonanywhere.com\nqa2.com\nqcx.io\n*.sys.qcx.io\nmyqnapcloud.cn\nalpha-myqnapcloud.com\ndev-myqnapcloud.com\nmycloudnas.com\nmynascloud.com\nmyqnapcloud.com\nqoto.io\nqualifioapp.com\nladesk.com\n*.qualyhqpartner.com\n*.qualyhqportal.com\nqbuser.com\n*.quipelements.com\nvapor.cloud\nvaporcloud.io\nrackmaze.com\nrackmaze.net\ncloudsite.builders\nmyradweb.net\nservername.us\nweb.in\nin.net\nmyrdbx.io\nsite.rb-hosting.io\nup.railway.app\n*.on-rancher.cloud\n*.on-k3s.io\n*.on-rio.io\nravpage.co.il\nreadthedocs-hosted.com\nreadthedocs.io\nrhcloud.com\ninstances.spawn.cc\n*.clusters.rdpa.co\n*.srvrless.rdpa.co\nonrender.com\napp.render.com\nreplit.app\nid.replit.app\nfirewalledreplit.co\nid.firewalledreplit.co\nrepl.co\nid.repl.co\nreplit.dev\narcher.replit.dev\nbones.replit.dev\ncanary.replit.dev\nglobal.replit.dev\nhacker.replit.dev\nid.replit.dev\njaneway.replit.dev\nkim.replit.dev\nkira.replit.dev\nkirk.replit.dev\nodo.replit.dev\nparis.replit.dev\npicard.replit.dev\npike.replit.dev\nprerelease.replit.dev\nreed.replit.dev\nriker.replit.dev\nsisko.replit.dev\nspock.replit.dev\nstaging.replit.dev\nsulu.replit.dev\ntarpit.replit.dev\nteams.replit.dev\ntucker.replit.dev\nwesley.replit.dev\nworf.replit.dev\nrepl.run\nresindevice.io\ndevices.resinstaging.io\nadimo.co.uk\nitcouldbewor.se\naus.basketball\nnz.basketball\nsubsc-pay.com\nsubsc-pay.net\ngit-pages.rit.edu\nrocketpreview.app\n*.builtwithrocket.new\nrocky.page\nrub.de\nruhr-uni-bochum.de\nio.noc.ruhr-uni-bochum.de\nxn--90amc.xn--p1acf\nxn--j1aef.xn--p1acf\nxn--j1ael8b.xn--p1acf\nxn--h1ahn.xn--p1acf\nxn--j1adp.xn--p1acf\nxn--c1avg.xn--p1acf\nxn--80aaa0cvac.xn--p1acf\nxn--h1aliz.xn--p1acf\nxn--90a1af.xn--p1acf\nxn--41a.xn--p1acf\nras.ru\nnyat.app\n180r.com\ndojin.com\nsakuratan.com\nsakuraweb.com\nx0.com\n2-d.jp\nbona.jp\ncrap.jp\ndaynight.jp\neek.jp\nflop.jp\nhalfmoon.jp\njeez.jp\nmatrix.jp\nmimoza.jp\nivory.ne.jp\nmail-box.ne.jp\nmints.ne.jp\nmokuren.ne.jp\nopal.ne.jp\nsakura.ne.jp\nsumomo.ne.jp\ntopaz.ne.jp\nnetgamers.jp\nnyanta.jp\no0o0.jp\nrdy.jp\nrgr.jp\nrulez.jp\ns3.isk01.sakurastorage.jp\ns3.isk02.sakurastorage.jp\nsaloon.jp\nsblo.jp\nskr.jp\ntank.jp\nuh-oh.jp\nundo.jp\nrs.webaccel.jp\nuser.webaccel.jp\nwebsozai.jp\nxii.jp\nsquares.net\njpn.org\nkirara.st\nx0.to\nfrom.tv\nsakura.tv\n*.builder.code.com\n*.dev-builder.code.com\n*.stg-builder.code.com\n*.001.test.code-builder-stg.platform.salesforce.com\n*.aa.crm.dev\n*.ab.crm.dev\n*.ac.crm.dev\n*.ad.crm.dev\n*.ae.crm.dev\n*.af.crm.dev\n*.ci.crm.dev\n*.d.crm.dev\n*.pa.crm.dev\n*.pb.crm.dev\n*.pc.crm.dev\n*.pd.crm.dev\n*.pe.crm.dev\n*.pf.crm.dev\n*.w.crm.dev\n*.wa.crm.dev\n*.wb.crm.dev\n*.wc.crm.dev\n*.wd.crm.dev\n*.we.crm.dev\n*.wf.crm.dev\nsandcats.io\nsav.case\nlogoip.com\nlogoip.de\nfr-par-1.baremetal.scw.cloud\nfr-par-2.baremetal.scw.cloud\nnl-ams-1.baremetal.scw.cloud\ncockpit.fr-par.scw.cloud\nddl.fr-par.scw.cloud\ndtwh.fr-par.scw.cloud\nfnc.fr-par.scw.cloud\nfunctions.fnc.fr-par.scw.cloud\nifr.fr-par.scw.cloud\nk8s.fr-par.scw.cloud\nnodes.k8s.fr-par.scw.cloud\nkafk.fr-par.scw.cloud\nmgdb.fr-par.scw.cloud\nrdb.fr-par.scw.cloud\ns3.fr-par.scw.cloud\ns3-website.fr-par.scw.cloud\nscbl.fr-par.scw.cloud\nwhm.fr-par.scw.cloud\npriv.instances.scw.cloud\npub.instances.scw.cloud\nk8s.scw.cloud\ncockpit.nl-ams.scw.cloud\nddl.nl-ams.scw.cloud\ndtwh.nl-ams.scw.cloud\nifr.nl-ams.scw.cloud\nk8s.nl-ams.scw.cloud\nnodes.k8s.nl-ams.scw.cloud\nkafk.nl-ams.scw.cloud\nmgdb.nl-ams.scw.cloud\nrdb.nl-ams.scw.cloud\ns3.nl-ams.scw.cloud\ns3-website.nl-ams.scw.cloud\nscbl.nl-ams.scw.cloud\nwhm.nl-ams.scw.cloud\ncockpit.pl-waw.scw.cloud\nddl.pl-waw.scw.cloud\ndtwh.pl-waw.scw.cloud\nifr.pl-waw.scw.cloud\nk8s.pl-waw.scw.cloud\nnodes.k8s.pl-waw.scw.cloud\nkafk.pl-waw.scw.cloud\nmgdb.pl-waw.scw.cloud\nrdb.pl-waw.scw.cloud\ns3.pl-waw.scw.cloud\ns3-website.pl-waw.scw.cloud\nscbl.pl-waw.scw.cloud\nscalebook.scw.cloud\nsmartlabeling.scw.cloud\ndedibox.fr\nscw.site\nams.scw.site\nwaw.scw.site\nschokokeks.net\ngov.scot\nservice.gov.scot\nmygov.scot\nscrysec.com\nclient.scrypted.io\nfirewall-gateway.com\nfirewall-gateway.de\nmy-gateway.de\nmy-router.de\nspdns.de\nspdns.eu\nfirewall-gateway.net\nmy-firewall.org\nmyfirewall.org\nspdns.org\nseidat.net\nsellfy.store\nminisite.ms\nsenseering.net\nservebolt.cloud\nbiz.ua\nco.ua\npp.ua\nas.sh.cn\nvicp.fun\nyicp.fun\nzicp.fun\nsheezy.games\nmyshopblocks.com\nmyshopify.com\nshopitsite.com\nshopware.shop\nshopware.store\nmo-siemens.io\n1kapp.com\nappchizi.com\napplinzi.com\nsinaapp.com\nvipsinaapp.com\nsiteleaf.net\nsmall-web.org\naeroport.fr\navocat.fr\nchambagri.fr\nchirurgiens-dentistes.fr\nexperts-comptables.fr\nmedecin.fr\nnotaires.fr\npharmacien.fr\nport.fr\nveterinaire.fr\nvp4.me\n*.snowflake.app\n*.privatelink.snowflake.app\nstreamlit.app\nstreamlitapp.com\ntry-snowplow.com\nmafelo.net\nsol.site\nplaystation-cloud.com\nsrht.site\napps.lair.io\n*.stolos.io\n4.at\nmy.at\nmy.de\n*.nxa.eu\nnx.gw\nspawnbase.app\ncustomer.speedpartner.de\nmyspreadshop.at\nmyspreadshop.com.au\nmyspreadshop.be\nmyspreadshop.ca\nmyspreadshop.ch\nmyspreadshop.com\nmyspreadshop.de\nmyspreadshop.dk\nmyspreadshop.es\nmyspreadshop.fi\nmyspreadshop.fr\nmyspreadshop.ie\nmyspreadshop.it\nmyspreadshop.net\nmyspreadshop.nl\nmyspreadshop.no\nmyspreadshop.pl\nmyspreadshop.se\nmyspreadshop.co.uk\nw-corp-staticblitz.com\nw-credentialless-staticblitz.com\nw-staticblitz.com\nbolt.host\nstackhero-network.com\nruns.onstackit.cloud\nstackit.gg\nstackit.rocks\nstackit.run\nstackit.zone\nsryze.cc\nindevs.in\nmusician.io\nnovecore.site\nstatichost.page\nfeedback.ac\nforms.ac\nassessments.cx\ncalculators.cx\nfunnels.cx\npaynow.cx\nquizzes.cx\nresearched.cx\ntests.cx\nsurveys.so\nipfs.storacha.link\nipfs.w3s.link\nstorebase.store\nstrapiapp.com\nmedia.strapiapp.com\nvps-host.net\natl.jelastic.vps-host.net\nnjs.jelastic.vps-host.net\nric.jelastic.vps-host.net\nstreak-link.com\nstreaklinks.com\nstreakusercontent.com\nsoc.srcf.net\nuser.srcf.net\nutwente.io\ntemp-dns.com\nsupabase.co\nrealtime.supabase.co\nstorage.supabase.co\nsupabase.in\nsupabase.net\nsyncloud.it\ndscloud.biz\ndirect.quickconnect.cn\ndsmynas.com\nfamilyds.com\ndiskstation.me\ndscloud.me\ni234.me\nmyds.me\nsynology.me\ndscloud.mobi\ndsmynas.net\nfamilyds.net\ndsmynas.org\nfamilyds.org\ndirect.quickconnect.to\nvpnplus.to\nmytabit.com\nmytabit.co.il\ntabitorder.co.il\ntaifun-dns.de\nerp.dev\nweb.erp.dev\nts.net\n*.c.ts.net\ngda.pl\ngdansk.pl\ngdynia.pl\nmed.pl\nsopot.pl\ntaveusercontent.com\np.tawk.email\np.tawkto.email\ntche.br\nsite.tb-hosting.com\ndirectwp.eu\nec.cc\neu.cc\ngu.cc\nuk.cc\nus.cc\nedugit.io\ns3.teckids.org\ntelebit.app\ntelebit.io\n*.telebit.xyz\nteleport.sh\n*.firenet.ch\n*.svc.firenet.ch\nreservd.com\nthingdustdata.com\ncust.dev.thingdust.io\nreservd.dev.thingdust.io\ncust.disrec.thingdust.io\nreservd.disrec.thingdust.io\ncust.prod.thingdust.io\ncust.testing.thingdust.io\nreservd.testing.thingdust.io\ntickets.io\nt3.storage.dev\nt3.storageapi.dev\narvo.network\nazimuth.network\ntlon.network\ntorproject.net\npages.torproject.net\ntownnews-staging.com\n12hp.at\n2ix.at\n4lima.at\nlima-city.at\n12hp.ch\n2ix.ch\n4lima.ch\nlima-city.ch\ntrafficplex.cloud\nde.cool\n12hp.de\n2ix.de\n4lima.de\nlima-city.de\n1337.pictures\nclan.rip\nlima-city.rocks\nwebspace.rocks\nlima.zone\n*.transurl.be\n*.transurl.eu\nsite.transip.me\n*.transurl.nl\n*.triton.zone\ntunnelmole.net\ntuxfamily.org\ntypedream.app\npro.typeform.com\nuber.space\nhk.com\ninc.hk\nltd.hk\nhk.org\nit.com\numso.co\nunison-services.cloud\nvirtual-user.de\nvirtualuser.de\nobj.ag\nname.pm\nsch.tf\nbiz.wf\nsch.wf\norg.yt\nrs.ba\nbielsko.pl\nurown.cloud\ndnsupdate.info\nus.org\nv.ua\nval.run\nweb.val.run\nvercel.app\nv0.build\nvercel.dev\nvusercontent.net\ntmp.now\nvercel.run\nnow.sh\n2038.io\nv-info.info\nvistablog.ir\ndeus-canvas.com\nvivenushop.com\nvivenushop.dev\nvoorloper.cloud\n*.vultrobjects.com\nwafflecell.com\nwal.app\nwasmer.app\nwebflow.io\nwebflowtest.io\n*.webhare.dev\nhotelwithflight.com\nreserve-online.net\nbook.online\ncprapid.com\npleskns.com\nwp2.host\npdns.page\nplesk.page\ncpanel.site\nwpsquared.site\n*.wadl.top\nremotewd.com\nbox.ca\npages.wiardweb.com\ntoolforge.org\nwmcloud.org\nbeta.wmcloud.org\nwmflabs.org\nhrsn.dev\nis-a.dev\nvps.hrsn.net\nlocalcert.net\nwindsurf.app\nwindsurf.build\ndrive-platform.com\ndrive-platform.io\npanel.gg\ndaemon.panel.gg\nbase44.app\nbase44-sandbox.com\nwixsite.com\nwixstudio.com\neditorx.io\nwixstudio.io\nwix.run\nmesswithdns.com\nwoltlab-demo.com\nmyforum.community\ncommunity-pro.de\ndiskussionsbereich.de\ncommunity-pro.net\nmeinforum.net\naffinitylottery.org.uk\nraffleentry.org.uk\nweeklylottery.org.uk\nwpenginepowered.com\njs.wpenginepowered.com\ngrok.me\n*.xenonconnect.de\nhalf.host\ncistron.nl\ndemon.nl\nxs4all.space\nxtooldevice.com\nyandexcloud.net\nstorage.yandexcloud.net\nwebsite.yandexcloud.net\nsourcecraft.site\nofficial.academy\nyolasite.com\nynh.fr\nnohost.me\nnoho.st\nza.net\nza.org\nzap.cloud\nzeabur.app\n*.zerops.app\nprg1-zerops.zone\n*.zerops.zone\nbss.design\nbasicserver.io\nvirtualserver.io\nenterprisecloud.nu\nzone.id\nnett.to\nzabc.net";
|
|
11999
12829
|
const HTTP_SCHEME = /^https?:/i;
|
|
12000
12830
|
let activeHost = null;
|
|
@@ -12053,9 +12883,30 @@ async function startBrowserHost(options) {
|
|
|
12053
12883
|
const cdp = new CdpPool({ log });
|
|
12054
12884
|
const views = /* @__PURE__ */ new Map();
|
|
12055
12885
|
let stateWriter = null;
|
|
12886
|
+
const sessionStore = new BrowserSessionStore({
|
|
12887
|
+
dir: path$1.join(options.userDataDir, "browser"),
|
|
12888
|
+
log
|
|
12889
|
+
});
|
|
12890
|
+
const consentNotifier = new ConsentNotifier({
|
|
12891
|
+
show: options.windowShow,
|
|
12892
|
+
// A banner click NAVIGATES A ROUTE AND NOTHING ELSE. It must not raise the
|
|
12893
|
+
// window: "never steal focus" is the rule for every browser this project
|
|
12894
|
+
// starts (design 11.4), and `window-raise.ts` stays the only module that
|
|
12895
|
+
// decides whether a window comes forward.
|
|
12896
|
+
onAttention: (entryId) => options.window.webContents.send("browser-consent-attention", {
|
|
12897
|
+
entryId
|
|
12898
|
+
}),
|
|
12899
|
+
log
|
|
12900
|
+
});
|
|
12901
|
+
const captureSession = () => {
|
|
12902
|
+
sessionStore.record(
|
|
12903
|
+
captureTabs(registry.list(), registry.activeTab?.tabId ?? null)
|
|
12904
|
+
);
|
|
12905
|
+
};
|
|
12056
12906
|
const notifyChanged = () => {
|
|
12057
12907
|
stateWriter?.publishNow();
|
|
12058
12908
|
options.window.webContents.send("browser-state-changed");
|
|
12909
|
+
captureSession();
|
|
12059
12910
|
};
|
|
12060
12911
|
const registry = new TabRegistry(
|
|
12061
12912
|
(_createOptions, tabId) => {
|
|
@@ -12101,6 +12952,7 @@ async function startBrowserHost(options) {
|
|
|
12101
12952
|
dir: path$1.join(options.userDataDir, "browser"),
|
|
12102
12953
|
onChanged: () => {
|
|
12103
12954
|
options.window.webContents.send("browser-consent-changed");
|
|
12955
|
+
consentNotifier.announce(approvals.pendingEntries());
|
|
12104
12956
|
},
|
|
12105
12957
|
log
|
|
12106
12958
|
});
|
|
@@ -12120,8 +12972,16 @@ async function startBrowserHost(options) {
|
|
|
12120
12972
|
ownership,
|
|
12121
12973
|
log,
|
|
12122
12974
|
onChanged: notifyChanged,
|
|
12123
|
-
facts: () => facts
|
|
12975
|
+
facts: () => facts,
|
|
12976
|
+
forgetSiteData: (origin) => clearOriginData(browserSession, origin)
|
|
12124
12977
|
});
|
|
12978
|
+
const recorded = readSession(sessionStore.filePath, log);
|
|
12979
|
+
host.restoreTabs(recorded);
|
|
12980
|
+
if (recorded.length) {
|
|
12981
|
+
log(
|
|
12982
|
+
`[browser] restored ${recorded.length} tab(s) from ${SESSION_FILENAME}; every restored tab is user-owned and holds no handle (design 7.3)`
|
|
12983
|
+
);
|
|
12984
|
+
}
|
|
12125
12985
|
const sessionKey = mintSessionKey();
|
|
12126
12986
|
const server = await startRpcServer({
|
|
12127
12987
|
key: sessionKey,
|
|
@@ -12158,6 +13018,17 @@ async function startBrowserHost(options) {
|
|
|
12158
13018
|
agentTabs: () => registry.agentTabCount(),
|
|
12159
13019
|
sessionCookies: () => restoreReport,
|
|
12160
13020
|
stop: async () => {
|
|
13021
|
+
const atStop = captureTabs(
|
|
13022
|
+
registry.list(),
|
|
13023
|
+
registry.activeTab?.tabId ?? null
|
|
13024
|
+
);
|
|
13025
|
+
const decision = sessionStore.commitStopCapture(atStop);
|
|
13026
|
+
if (!decision.write) {
|
|
13027
|
+
log(
|
|
13028
|
+
`[browser] not overwriting ${SESSION_FILENAME} at stop: ${decision.reason}`
|
|
13029
|
+
);
|
|
13030
|
+
}
|
|
13031
|
+
sessionStore.flush();
|
|
12161
13032
|
registry.destroyAll();
|
|
12162
13033
|
await cdp.close();
|
|
12163
13034
|
await server.close();
|
|
@@ -12228,20 +13099,46 @@ async function startBrowserHost(options) {
|
|
|
12228
13099
|
};
|
|
12229
13100
|
contents.on("will-navigate", onWillNavigate);
|
|
12230
13101
|
contents.on("will-redirect", onWillNavigate);
|
|
13102
|
+
const notifyChrome = () => {
|
|
13103
|
+
options.window.webContents.send("browser-state-changed");
|
|
13104
|
+
};
|
|
13105
|
+
contents.on("did-start-loading", () => {
|
|
13106
|
+
host.clearLoadFailure(tabId);
|
|
13107
|
+
notifyChrome();
|
|
13108
|
+
});
|
|
13109
|
+
contents.on("did-stop-loading", notifyChrome);
|
|
13110
|
+
contents.on("page-title-updated", notifyChrome);
|
|
13111
|
+
contents.on(
|
|
13112
|
+
"did-fail-load",
|
|
13113
|
+
(_event, code, description, url, isMainFrame) => {
|
|
13114
|
+
if (!isMainFrame) return;
|
|
13115
|
+
if (isReportableLoadFailure(code)) {
|
|
13116
|
+
host.recordLoadFailure(tabId, {
|
|
13117
|
+
code,
|
|
13118
|
+
description,
|
|
13119
|
+
url
|
|
13120
|
+
});
|
|
13121
|
+
}
|
|
13122
|
+
notifyChrome();
|
|
13123
|
+
}
|
|
13124
|
+
);
|
|
12231
13125
|
contents.on("will-attach-webview", (event) => {
|
|
12232
13126
|
event.preventDefault();
|
|
12233
13127
|
log("[browser] refused a webview attachment inside a driven page");
|
|
12234
13128
|
});
|
|
12235
13129
|
contents.on("did-navigate", (_event, url) => {
|
|
12236
13130
|
registry.bumpEpoch(tabId);
|
|
13131
|
+
host.clearLoadFailure(tabId);
|
|
12237
13132
|
stopLogCapture(contents.id);
|
|
12238
13133
|
startLogCapture(contents.id);
|
|
12239
13134
|
log(`[browser] tab ${tabId} navigated to ${url}`);
|
|
13135
|
+
notifyChanged();
|
|
12240
13136
|
});
|
|
12241
13137
|
contents.on("did-navigate-in-page", (_event, url, isMainFrame) => {
|
|
12242
13138
|
if (!isMainFrame) return;
|
|
12243
13139
|
registry.bumpEpoch(tabId, false);
|
|
12244
13140
|
log(`[browser] tab ${tabId} navigated in page to ${url}`);
|
|
13141
|
+
notifyChanged();
|
|
12245
13142
|
});
|
|
12246
13143
|
contents.on("destroyed", () => {
|
|
12247
13144
|
const record = registry.get(tabId);
|
|
@@ -12250,6 +13147,7 @@ async function startBrowserHost(options) {
|
|
|
12250
13147
|
if (token) approvals.forgetDocument(token);
|
|
12251
13148
|
registry.forget(tabId);
|
|
12252
13149
|
}
|
|
13150
|
+
host.clearLoadFailure(tabId);
|
|
12253
13151
|
releaseTab(tabId, contents.id);
|
|
12254
13152
|
});
|
|
12255
13153
|
}
|
|
@@ -12754,7 +13652,7 @@ class DesktopNotifier {
|
|
|
12754
13652
|
observe(sessionId2, frame) {
|
|
12755
13653
|
if (!this.canNotify) return;
|
|
12756
13654
|
if (this.windowRaise === "never") return;
|
|
12757
|
-
if (frame.type === "snapshot") {
|
|
13655
|
+
if (frame.type === "snapshot" || frame.type === "frontend.replace") {
|
|
12758
13656
|
this.epochs.set(sessionId2, frame.payload.frontend.epoch);
|
|
12759
13657
|
const gate = frame.payload.frontend.snapshot.pending_gate;
|
|
12760
13658
|
if (gate) this.gate(sessionId2, gate);
|
|
@@ -17071,6 +17969,11 @@ electron.app.whenReady().then(async () => {
|
|
|
17071
17969
|
expectedUrl: rendererUrl,
|
|
17072
17970
|
appVersion: electron.app.getVersion(),
|
|
17073
17971
|
userDataDir: electron.app.getPath("userData"),
|
|
17972
|
+
// The launch plan's own answer, forwarded rather than re-derived: the
|
|
17973
|
+
// browser host uses it to suppress consent banners in a run with nobody at
|
|
17974
|
+
// the screen, and re-deciding it there would be a second policy beside
|
|
17975
|
+
// `window-mode.ts`.
|
|
17976
|
+
windowShow: windowLaunch.show,
|
|
17074
17977
|
log: (message) => logger.info(message, LogFileType.BACKEND)
|
|
17075
17978
|
});
|
|
17076
17979
|
} catch (error) {
|