@lodashventure/medusa-parcel-shipping 0.4.15 → 0.4.17
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/.medusa/server/src/api/admin/quote/route.js +5 -5
- package/.medusa/server/src/api/store/quote/route.js +5 -5
- package/.medusa/server/src/modules/parcel-shipping/migrations/Migration20251117165505.js +42 -0
- package/.medusa/server/src/modules/parcel-shipping/service.js +123 -8
- package/.medusa/server/src/providers/parcel-fulfillment.js +334 -47
- package/package.json +1 -1
|
@@ -6,10 +6,10 @@ const parcel_shipping_1 = require("../../../modules/parcel-shipping");
|
|
|
6
6
|
const zod_1 = require("zod");
|
|
7
7
|
const QuoteItemSchema = zod_1.z.object({
|
|
8
8
|
sku: zod_1.z.string(),
|
|
9
|
-
width: zod_1.z.number().positive(),
|
|
10
|
-
length: zod_1.z.number().positive(),
|
|
11
|
-
height: zod_1.z.number().positive(),
|
|
12
|
-
weight: zod_1.z.number().positive(),
|
|
9
|
+
width: zod_1.z.coerce.number().positive(),
|
|
10
|
+
length: zod_1.z.coerce.number().positive(),
|
|
11
|
+
height: zod_1.z.coerce.number().positive(),
|
|
12
|
+
weight: zod_1.z.coerce.number().positive(),
|
|
13
13
|
quantity: zod_1.z.number().int().positive(),
|
|
14
14
|
attributes: zod_1.z
|
|
15
15
|
.object({
|
|
@@ -113,4 +113,4 @@ async function POST(req, res) {
|
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3F1b3RlL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBc0VBLG9CQXVEQztBQTVIRCxtREFBZ0Q7QUFDaEQsc0VBQTBFO0FBQzFFLDZCQUF3QjtBQUV4QixNQUFNLGVBQWUsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQy9CLEdBQUcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2YsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ25DLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3BDLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3JDLFVBQVUsRUFBRSxPQUFDO1NBQ1YsTUFBTSxDQUFDO1FBQ04sT0FBTyxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDL0IsT0FBTyxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDL0IsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDakMsQ0FBQztTQUNELFFBQVEsRUFBRTtDQUNkLENBQUMsQ0FBQztBQUVILE1BQU0scUJBQXFCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyQyxjQUFjLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLGdD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
|
|
@@ -6,10 +6,10 @@ const parcel_shipping_1 = require("../../../modules/parcel-shipping");
|
|
|
6
6
|
const zod_1 = require("zod");
|
|
7
7
|
const QuoteItemSchema = zod_1.z.object({
|
|
8
8
|
sku: zod_1.z.string(),
|
|
9
|
-
width: zod_1.z.number().positive(),
|
|
10
|
-
length: zod_1.z.number().positive(),
|
|
11
|
-
height: zod_1.z.number().positive(),
|
|
12
|
-
weight: zod_1.z.number().positive(),
|
|
9
|
+
width: zod_1.z.coerce.number().positive(),
|
|
10
|
+
length: zod_1.z.coerce.number().positive(),
|
|
11
|
+
height: zod_1.z.coerce.number().positive(),
|
|
12
|
+
weight: zod_1.z.coerce.number().positive(),
|
|
13
13
|
quantity: zod_1.z.number().int().positive(),
|
|
14
14
|
attributes: zod_1.z
|
|
15
15
|
.object({
|
|
@@ -113,4 +113,4 @@ async function POST(req, res) {
|
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3F1b3RlL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBc0VBLG9CQXVEQztBQTVIRCxtREFBZ0Q7QUFDaEQsc0VBQTBFO0FBQzFFLDZCQUF3QjtBQUV4QixNQUFNLGVBQWUsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQy9CLEdBQUcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2YsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ25DLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3BDLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3JDLFVBQVUsRUFBRSxPQUFDO1NBQ1YsTUFBTSxDQUFDO1FBQ04sT0FBTyxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDL0IsT0FBTyxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDL0IsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDakMsQ0FBQztTQUNELFFBQVEsRUFBRTtDQUNkLENBQUMsQ0FBQztBQUVILE1BQU0scUJBQXFCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyQyxjQUFjLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLGdD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
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20251117165505 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20251117165505 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`alter table if exists "parcel_packing_policy" drop constraint if exists "parcel_packing_policy_product_id_unique";`);
|
|
8
|
+
this.addSql(`create table if not exists "material_cost" ("id" text not null, "name" text not null, "unit" text not null, "cost_per_unit" real not null, "currency" text not null default 'THB', "category" text null, "description" text null, "active" boolean not null default true, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "material_cost_pkey" primary key ("id"));`);
|
|
9
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_material_cost_deleted_at" ON "material_cost" (deleted_at) WHERE deleted_at IS NULL;`);
|
|
10
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_material_cost_active" ON "material_cost" (active) WHERE deleted_at IS NULL;`);
|
|
11
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_material_cost_category" ON "material_cost" (category) WHERE deleted_at IS NULL;`);
|
|
12
|
+
this.addSql(`create table if not exists "parcel_box" ("id" text not null, "name" text not null, "width_cm" real not null, "length_cm" real not null, "height_cm" real not null, "max_weight_kg" real not null, "price_thb" real not null, "active" boolean not null default true, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "parcel_box_pkey" primary key ("id"));`);
|
|
13
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_box_deleted_at" ON "parcel_box" (deleted_at) WHERE deleted_at IS NULL;`);
|
|
14
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_box_active" ON "parcel_box" (active) WHERE deleted_at IS NULL;`);
|
|
15
|
+
this.addSql(`create table if not exists "parcel_packaging_material" ("id" text not null, "name" text not null, "material_type" text check ("material_type" in ('BUBBLE_WRAP', 'FOAM_PADDING', 'VOID_FILL', 'CORNER_PROTECTOR', 'FRAGILE_TAPE')) not null, "cost_per_unit" real not null, "unit_type" text check ("unit_type" in ('PER_ITEM', 'PER_KG', 'PER_M2', 'FLAT')) not null, "currency" text not null default 'THB', "active" boolean not null default true, "auto_apply_for_fragile" boolean not null default false, "auto_apply_for_heavy" boolean not null default false, "heavy_threshold_kg" real null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "parcel_packaging_material_pkey" primary key ("id"));`);
|
|
16
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_packaging_material_deleted_at" ON "parcel_packaging_material" (deleted_at) WHERE deleted_at IS NULL;`);
|
|
17
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_packaging_material_active" ON "parcel_packaging_material" (active) WHERE deleted_at IS NULL;`);
|
|
18
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_packaging_material_material_type" ON "parcel_packaging_material" (material_type) WHERE deleted_at IS NULL;`);
|
|
19
|
+
this.addSql(`create table if not exists "parcel_packing_policy" ("id" text not null, "product_id" text not null, "no_stack" boolean not null default false, "fragile" boolean not null default false, "stackable_max_layers" integer not null default 0, "orientation_lock" text null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "parcel_packing_policy_pkey" primary key ("id"));`);
|
|
20
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_packing_policy_deleted_at" ON "parcel_packing_policy" (deleted_at) WHERE deleted_at IS NULL;`);
|
|
21
|
+
this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_parcel_packing_policy_product_id_unique" ON "parcel_packing_policy" (product_id) WHERE deleted_at IS NULL;`);
|
|
22
|
+
this.addSql(`create table if not exists "parcel_service_area" ("id" text not null, "kind" text check ("kind" in ('PROVINCE', 'POSTCODE_PREFIX')) not null, "value" text not null, "active" boolean not null default true, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "parcel_service_area_pkey" primary key ("id"));`);
|
|
23
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_service_area_deleted_at" ON "parcel_service_area" (deleted_at) WHERE deleted_at IS NULL;`);
|
|
24
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_service_area_kind_value" ON "parcel_service_area" (kind, value) WHERE deleted_at IS NULL;`);
|
|
25
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_service_area_active" ON "parcel_service_area" (active) WHERE deleted_at IS NULL;`);
|
|
26
|
+
this.addSql(`create table if not exists "parcel_shipping_rate" ("id" text not null, "carrier_type" text check ("carrier_type" in ('COMPANY_FLEET', 'COMPANY_TRUCK', 'PRIVATE_CARRIER')) not null, "carrier" text check ("carrier" in ('COMPANY_FLEET', 'COMPANY_TRUCK', 'PRIVATE_CARRIER')) not null, "service_code" text check ("service_code" in ('MESSENGER_3H', 'SAME_DAY', 'STANDARD_3_5D', 'EXPRESS_1_2D')) not null, "max_weight_kg" real not null, "price" real not null, "currency" text not null default 'THB', "priority" integer not null default 0, "active" boolean not null default true, "eta_hours_min" integer null, "eta_hours_max" integer null, "eta_days_min" integer null, "eta_days_max" integer null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "parcel_shipping_rate_pkey" primary key ("id"));`);
|
|
27
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_shipping_rate_deleted_at" ON "parcel_shipping_rate" (deleted_at) WHERE deleted_at IS NULL;`);
|
|
28
|
+
this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "idx_carrier_service_weight" ON "parcel_shipping_rate" (carrier_type, service_code, max_weight_kg, active) WHERE active = true AND deleted_at IS NULL;`);
|
|
29
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_shipping_rate_active" ON "parcel_shipping_rate" (active) WHERE deleted_at IS NULL;`);
|
|
30
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_shipping_rate_carrier_type_service_code" ON "parcel_shipping_rate" (carrier_type, service_code) WHERE deleted_at IS NULL;`);
|
|
31
|
+
}
|
|
32
|
+
async down() {
|
|
33
|
+
this.addSql(`drop table if exists "material_cost" cascade;`);
|
|
34
|
+
this.addSql(`drop table if exists "parcel_box" cascade;`);
|
|
35
|
+
this.addSql(`drop table if exists "parcel_packaging_material" cascade;`);
|
|
36
|
+
this.addSql(`drop table if exists "parcel_packing_policy" cascade;`);
|
|
37
|
+
this.addSql(`drop table if exists "parcel_service_area" cascade;`);
|
|
38
|
+
this.addSql(`drop table if exists "parcel_shipping_rate" cascade;`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.Migration20251117165505 = Migration20251117165505;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTExMTcxNjU1MDUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wYXJjZWwtc2hpcHBpbmcvbWlncmF0aW9ucy9NaWdyYXRpb24yMDI1MTExNzE2NTUwNS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBcUU7QUFFckUsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUMzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQ1Qsb0hBQW9ILENBQ3JILENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULGljQUFpYyxDQUNsYyxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxxSEFBcUgsQ0FDdEgsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QsNkdBQTZHLENBQzlHLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULGlIQUFpSCxDQUNsSCxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FDVCx5YkFBeWIsQ0FDMWIsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QsK0dBQStHLENBQ2hILENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULHVHQUF1RyxDQUN4RyxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FDVCwwd0JBQTB3QixDQUMzd0IsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QsNklBQTZJLENBQzlJLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULHFJQUFxSSxDQUN0SSxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxtSkFBbUosQ0FDcEosQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLENBQ1QseWNBQXljLENBQzFjLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULHFJQUFxSSxDQUN0SSxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxtSkFBbUosQ0FDcEosQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLENBQ1QsMFlBQTBZLENBQzNZLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULGlJQUFpSSxDQUNsSSxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxrSUFBa0ksQ0FDbkksQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QseUhBQXlILENBQzFILENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUNULGczQkFBZzNCLENBQ2ozQixDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxtSUFBbUksQ0FDcEksQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QsMExBQTBMLENBQzNMLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULDJIQUEySCxDQUM1SCxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxrS0FBa0ssQ0FDbkssQ0FBQztJQUNKLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFFN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxNQUFNLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUV6RSxJQUFJLENBQUMsTUFBTSxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQyxNQUFNLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0Y7QUE5RkQsMERBOEZDIn0=
|
|
@@ -32,6 +32,7 @@ class ParcelShippingService extends (0, utils_1.MedusaService)({
|
|
|
32
32
|
materials: { data: null, expiresAt: 0 },
|
|
33
33
|
material_costs: { data: null, expiresAt: 0 },
|
|
34
34
|
};
|
|
35
|
+
this.packagingMaterialsUnavailable = false;
|
|
35
36
|
}
|
|
36
37
|
// ============================================================================
|
|
37
38
|
// Cache Management
|
|
@@ -151,7 +152,20 @@ class ParcelShippingService extends (0, utils_1.MedusaService)({
|
|
|
151
152
|
// Packaging Material Management
|
|
152
153
|
// ============================================================================
|
|
153
154
|
async findPackagingMaterials(filters = {}, config = {}) {
|
|
154
|
-
|
|
155
|
+
if (this.packagingMaterialsUnavailable) {
|
|
156
|
+
return [];
|
|
157
|
+
}
|
|
158
|
+
return this.getCached("materials", async () => {
|
|
159
|
+
try {
|
|
160
|
+
return await this.listPackagingMaterials(filters, config);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
if (this.handleMissingPackagingTable(error)) {
|
|
164
|
+
return [];
|
|
165
|
+
}
|
|
166
|
+
throw error;
|
|
167
|
+
}
|
|
168
|
+
}, filters);
|
|
155
169
|
}
|
|
156
170
|
async createPackagingMaterial(data) {
|
|
157
171
|
const result = await this.createPackagingMaterials([data]);
|
|
@@ -216,12 +230,18 @@ class ParcelShippingService extends (0, utils_1.MedusaService)({
|
|
|
216
230
|
// Use multi-box packing algorithm
|
|
217
231
|
const packingResult = (0, packing_1.selectMultiBoxPacking)(request.items, boxCandidates);
|
|
218
232
|
if (!packingResult.success || !packingResult.results) {
|
|
219
|
-
|
|
233
|
+
console.warn("[ParcelShippingService] Falling back to custom packaging:", packingResult.message);
|
|
234
|
+
packingResults = this.buildFallbackPacking(request.items);
|
|
235
|
+
if (!packingResults.length) {
|
|
236
|
+
throw new Error(packingResult.message || "Failed to pack items");
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
packingResults = packingResult.results.map((result) => ({
|
|
241
|
+
box: result.box,
|
|
242
|
+
packing: result.metrics,
|
|
243
|
+
}));
|
|
220
244
|
}
|
|
221
|
-
packingResults = packingResult.results.map((result) => ({
|
|
222
|
-
box: result.box,
|
|
223
|
-
packing: result.metrics,
|
|
224
|
-
}));
|
|
225
245
|
}
|
|
226
246
|
else {
|
|
227
247
|
// Use single-box packing only
|
|
@@ -299,11 +319,72 @@ class ParcelShippingService extends (0, utils_1.MedusaService)({
|
|
|
299
319
|
distance,
|
|
300
320
|
};
|
|
301
321
|
}
|
|
322
|
+
buildFallbackPacking(items) {
|
|
323
|
+
const EXTRA_PADDING_CM = 4;
|
|
324
|
+
const fallbackResults = [];
|
|
325
|
+
for (const item of items) {
|
|
326
|
+
const quantity = Math.max(1, Math.round(item.quantity));
|
|
327
|
+
const baseWidth = Math.max(1, item.width);
|
|
328
|
+
const baseLength = Math.max(1, item.length);
|
|
329
|
+
const baseHeight = Math.max(1, item.height);
|
|
330
|
+
const perUnitWeight = Math.max(0.01, item.weight);
|
|
331
|
+
for (let index = 0; index < quantity; index++) {
|
|
332
|
+
const paddedWidth = baseWidth + EXTRA_PADDING_CM;
|
|
333
|
+
const paddedLength = baseLength + EXTRA_PADDING_CM;
|
|
334
|
+
const paddedHeight = baseHeight + EXTRA_PADDING_CM;
|
|
335
|
+
const box = {
|
|
336
|
+
id: `fallback-${item.sku}-${index}`,
|
|
337
|
+
name: `Custom box for ${item.sku}`,
|
|
338
|
+
width_cm: paddedWidth,
|
|
339
|
+
length_cm: paddedLength,
|
|
340
|
+
height_cm: paddedHeight,
|
|
341
|
+
max_weight_kg: perUnitWeight + 1,
|
|
342
|
+
price_thb: 0,
|
|
343
|
+
};
|
|
344
|
+
const packing = {
|
|
345
|
+
usedHeight: paddedHeight,
|
|
346
|
+
headroom: 0,
|
|
347
|
+
wasteAreaSum: 0,
|
|
348
|
+
voidVolume: 0,
|
|
349
|
+
layers: 1,
|
|
350
|
+
placements: [
|
|
351
|
+
{
|
|
352
|
+
sku: item.sku,
|
|
353
|
+
orientation: [baseWidth, baseLength, baseHeight],
|
|
354
|
+
position: [0, 0, 0],
|
|
355
|
+
layerIndex: 0,
|
|
356
|
+
},
|
|
357
|
+
],
|
|
358
|
+
totalWeightKg: perUnitWeight,
|
|
359
|
+
fragile_item_count: item.attributes?.fragile ? 1 : 0,
|
|
360
|
+
requires_bubble_wrap: Boolean(item.attributes?.fragile),
|
|
361
|
+
requires_foam_padding: false,
|
|
362
|
+
};
|
|
363
|
+
fallbackResults.push({
|
|
364
|
+
box,
|
|
365
|
+
packing,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return fallbackResults;
|
|
370
|
+
}
|
|
302
371
|
// ============================================================================
|
|
303
372
|
// Shipping Options Calculation
|
|
304
373
|
// ============================================================================
|
|
305
374
|
async calculatePackagingMaterialsCost(items, metrics, totalWeightKg) {
|
|
306
|
-
|
|
375
|
+
let materials = [];
|
|
376
|
+
try {
|
|
377
|
+
materials = await this.findPackagingMaterials({ active: true });
|
|
378
|
+
}
|
|
379
|
+
catch (error) {
|
|
380
|
+
if (this.handleMissingPackagingTable(error)) {
|
|
381
|
+
return 0;
|
|
382
|
+
}
|
|
383
|
+
throw error;
|
|
384
|
+
}
|
|
385
|
+
if (!materials?.length) {
|
|
386
|
+
return 0;
|
|
387
|
+
}
|
|
307
388
|
let totalCost = 0;
|
|
308
389
|
// Count fragile items
|
|
309
390
|
const fragileCount = items.reduce((count, item) => {
|
|
@@ -513,6 +594,40 @@ class ParcelShippingService extends (0, utils_1.MedusaService)({
|
|
|
513
594
|
normalizeString(str) {
|
|
514
595
|
return str.trim().toLowerCase();
|
|
515
596
|
}
|
|
597
|
+
handleMissingPackagingTable(error) {
|
|
598
|
+
const message = this.extractErrorMessage(error);
|
|
599
|
+
if (message.includes("parcel_packaging_material") &&
|
|
600
|
+
(message.includes("does not exist") || message.includes("42p01"))) {
|
|
601
|
+
if (!this.packagingMaterialsUnavailable) {
|
|
602
|
+
this.packagingMaterialsUnavailable = true;
|
|
603
|
+
console.warn("[parcel-shipping] parcel_packaging_material table missing. Skipping packaging material calculations until migrations run.");
|
|
604
|
+
}
|
|
605
|
+
return true;
|
|
606
|
+
}
|
|
607
|
+
return false;
|
|
608
|
+
}
|
|
609
|
+
extractErrorMessage(error) {
|
|
610
|
+
if (!error) {
|
|
611
|
+
return "";
|
|
612
|
+
}
|
|
613
|
+
const messages = [];
|
|
614
|
+
let current = error;
|
|
615
|
+
while (current) {
|
|
616
|
+
if (typeof current.message === "string") {
|
|
617
|
+
messages.push(current.message.toLowerCase());
|
|
618
|
+
}
|
|
619
|
+
current =
|
|
620
|
+
current.cause ||
|
|
621
|
+
current.originalError ||
|
|
622
|
+
current.parent ||
|
|
623
|
+
current.previous ||
|
|
624
|
+
null;
|
|
625
|
+
}
|
|
626
|
+
if (messages.length === 0 && typeof error.toString === "function") {
|
|
627
|
+
messages.push(String(error).toLowerCase());
|
|
628
|
+
}
|
|
629
|
+
return messages.join(" ");
|
|
630
|
+
}
|
|
516
631
|
}
|
|
517
632
|
exports.default = ParcelShippingService;
|
|
518
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3BhcmNlbC1zaGlwcGluZy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQXVFO0FBQ3ZFLG9EQUFnRDtBQUNoRCwwREFBc0Q7QUFDdEQsd0RBQW9EO0FBQ3BELDREQUF3RDtBQUN4RCxvRUFBZ0U7QUFDaEUsMERBQXNEO0FBQ3RELHdEQUdvQztBQUNwQyxnRkFBNEU7QUFhNUUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsYUFBYTtBQVUxQzs7O0dBR0c7QUFDSCxNQUFNLHFCQUFzQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUNoRCxTQUFTLEVBQVQsc0JBQVM7SUFDVCxZQUFZLEVBQVosNEJBQVk7SUFDWixXQUFXLEVBQVgsMEJBQVc7SUFDWCxhQUFhLEVBQWIsOEJBQWE7SUFDYixpQkFBaUIsRUFBakIsc0NBQWlCO0lBQ2pCLFlBQVksRUFBWiw0QkFBWTtDQUNiLENBQUM7SUFQRjs7UUFRVSxVQUFLLEdBQXVEO1lBQ2xFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUNuQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDbkMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQ25DLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUN0QyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDdkMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1NBQzdDLENBQUM7SUFpcUJKLENBQUM7SUEvcEJDLCtFQUErRTtJQUMvRSxtQkFBbUI7SUFDbkIsK0VBQStFO0lBRS9FLGVBQWUsQ0FBQyxJQUFpQjtRQUMvQixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBZSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM3RCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU87UUFDVCxDQUFDO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsU0FBUyxDQUNyQixHQUFhLEVBQ2IsT0FBeUIsRUFDekIsVUFBK0IsRUFBRTtRQUVqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRW5ELElBQ0UsQ0FBQyxVQUFVO1lBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFDL0IsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBTyxFQUFFLENBQUM7UUFFN0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUM1RCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLGlCQUFpQjtJQUNqQiwrRUFBK0U7SUFFL0UsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUErQixFQUFFLEVBQUUsU0FBYyxFQUFFO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FDbkIsT0FBTyxFQUNQLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUMzQyxPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQVM7UUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQVUsRUFBRSxJQUFTO1FBQ25DLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNoQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFVO1FBQ3hCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLDJCQUEyQjtJQUMzQiwrRUFBK0U7SUFFL0UsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUErQixFQUFFLEVBQUUsU0FBYyxFQUFFO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FDbkIsT0FBTyxFQUNQLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQzdDLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBUztRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNoQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFVLEVBQUUsSUFBUztRQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQVU7UUFDekIsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsMEJBQTBCO0lBQzFCLCtFQUErRTtJQUUvRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBK0IsRUFBRSxFQUFFLFNBQWMsRUFBRTtRQUN4RSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQ25CLE9BQU8sRUFDUCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUM1QyxPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBUztRQUMvQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDaEMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFVLEVBQUUsSUFBUztRQUMzQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDaEMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFVO1FBQ2hDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLDRCQUE0QjtJQUM1QiwrRUFBK0U7SUFFL0UsS0FBSyxDQUFDLG1CQUFtQixDQUN2QixVQUErQixFQUFFLEVBQ2pDLFNBQWMsRUFBRTtRQUVoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQ25CLFVBQVUsRUFDVixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUMvQyxPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsMEJBQTBCLENBQUMsU0FBaUI7UUFDaEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUMzRSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFTO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNuQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEVBQVUsRUFBRSxJQUFTO1FBQzdDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNuQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEVBQVU7UUFDbEMsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsZ0NBQWdDO0lBQ2hDLCtFQUErRTtJQUUvRSxLQUFLLENBQUMsc0JBQXNCLENBQzFCLFVBQStCLEVBQUUsRUFDakMsU0FBYyxFQUFFO1FBRWhCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FDbkIsV0FBVyxFQUNYLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQ2xELE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxJQUFTO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEVBQVUsRUFBRSxJQUFTO1FBQ2pELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEVBQVU7UUFDdEMsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsMkJBQTJCO0lBQzNCLCtFQUErRTtJQUUvRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsVUFBK0IsRUFBRSxFQUFFLFNBQWMsRUFBRTtRQUN6RSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQ25CLGdCQUFnQixFQUNoQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUM3QyxPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBUztRQUNoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUN6QyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQVUsRUFBRSxJQUFTO1FBQzVDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBVTtRQUNqQyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLG1CQUFtQjtJQUNuQiwrRUFBK0U7SUFFL0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUE2QjtRQUN2QyxzQkFBc0I7UUFDdEIsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzVELE1BQU0sSUFBSSxLQUFLLENBQ2IsV0FBVyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxxREFBcUQsQ0FDakcsQ0FBQztRQUNKLENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQW1CLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEQsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ1YsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztZQUN4QixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7WUFDeEIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO1lBQ2hDLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztTQUN6QixDQUFDLENBQUMsQ0FBQztRQUVKLHdEQUF3RDtRQUN4RCxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsaUJBQWlCLEtBQUssS0FBSyxDQUFDO1FBRTVELElBQUksY0FHRixDQUFDO1FBRUgsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixrQ0FBa0M7WUFDbEMsTUFBTSxhQUFhLEdBQUcsSUFBQSwrQkFBcUIsRUFBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBRTFFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksc0JBQXNCLENBQUMsQ0FBQztZQUNuRSxDQUFDO1lBRUQsY0FBYyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RCxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7Z0JBQ2YsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO2FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDTiw4QkFBOEI7WUFDOUIsTUFBTSxhQUFhLEdBQUcsSUFBQSwyQkFBaUIsRUFBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBRXRFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxLQUFLLENBQ2IsYUFBYSxDQUFDLE9BQU87b0JBQ25CLHVGQUF1RixDQUMxRixDQUFDO1lBQ0osQ0FBQztZQUVELGNBQWMsR0FBRztnQkFDZjtvQkFDRSxHQUFHLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHO29CQUM3QixPQUFPLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPO2lCQUN0QzthQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsb0RBQW9EO1FBQ3BELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQ3pDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUNuRCxDQUFDLENBQ0YsQ0FBQztRQUVGLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQ3hDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUMzQyxDQUFDLENBQ0YsQ0FBQztRQUVGLHNEQUFzRDtRQUN0RCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQywrQkFBK0IsQ0FDOUQsT0FBTyxDQUFDLEtBQUssRUFDYixjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLGtEQUFrRDtRQUM3RSxhQUFhLENBQ2QsQ0FBQztRQUVGLHdDQUF3QztRQUN4QyxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FDekQsT0FBTyxDQUFDLGdCQUFnQixFQUN4QixhQUFhLEVBQ2IsWUFBWSxFQUNaLGFBQWEsQ0FDZCxDQUFDO1FBRUYscUNBQXFDO1FBQ3JDLElBQUksUUFBb0MsQ0FBQztRQUN6QyxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzlCLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUM3QixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sR0FBRyxDQUFDLFlBQVksS0FBSyxPQUFPLENBQUMsaUJBQWtCLENBQUMsWUFBWTtnQkFDNUQsR0FBRyxDQUFDLFlBQVksS0FBSyxPQUFPLENBQUMsaUJBQWtCLENBQUMsWUFBWTtnQkFDNUQsR0FBRyxDQUFDLFNBQVMsQ0FDaEIsQ0FBQztRQUNKLENBQUM7UUFFRCxtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsUUFBUSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBRUQsc0RBQXNEO1FBQ3RELElBQUksUUFBK0MsQ0FBQztRQUNwRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSx3Q0FBa0IsRUFBRSxDQUFDO2dCQUM1QyxRQUFRLEdBQUcsTUFBTSxVQUFVLENBQUMsaUJBQWlCLENBQzNDO29CQUNFLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLGNBQWM7b0JBQ3JELGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLGNBQWM7b0JBQ3JELE1BQU0sRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLE1BQU07b0JBQ3JDLFlBQVksRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLFlBQVk7b0JBQ2pELFFBQVEsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVE7b0JBQ3pDLElBQUksRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUk7b0JBQ2pDLFFBQVEsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVE7b0JBQ3pDLFFBQVEsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVE7b0JBQ3pDLE9BQU8sRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU87aUJBQ3hDLEVBQ0Q7b0JBQ0UsY0FBYyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjO29CQUN2RCxjQUFjLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLGNBQWM7b0JBQ3ZELE1BQU0sRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTTtvQkFDdkMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZO29CQUNuRCxRQUFRLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVE7b0JBQzNDLElBQUksRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSTtvQkFDbkMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRO29CQUMzQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVE7b0JBQzNDLE9BQU8sRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTztpQkFDMUMsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YscUNBQXFDO2dCQUNyQyxPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hELENBQUM7UUFDSCxDQUFDO1FBRUQsdUVBQXVFO1FBQ3ZFLHFDQUFxQztRQUNyQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO1lBQy9CLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztZQUNsQyxLQUFLLEVBQUUsY0FBYztZQUNyQixnQkFBZ0IsRUFBRSxlQUFlO1lBQ2pDLFFBQVE7WUFDUixRQUFRO1NBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsK0JBQStCO0lBQy9CLCtFQUErRTtJQUV2RSxLQUFLLENBQUMsK0JBQStCLENBQzNDLEtBQWtCLEVBQ2xCLE9BQVksRUFDWixhQUFxQjtRQUVyQixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUVsQixzQkFBc0I7UUFDdEIsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNoRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDL0IsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRU4sS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNqQyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7WUFFckIsK0JBQStCO1lBQy9CLElBQUksUUFBUSxDQUFDLHNCQUFzQixJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDeEQsUUFBUSxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQzNCLEtBQUssVUFBVTt3QkFDYixZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7d0JBQ3JELE1BQU07b0JBQ1IsS0FBSyxRQUFRO3dCQUNYLFlBQVksR0FBRyxRQUFRLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQzt3QkFDdEQsTUFBTTtvQkFDUixLQUFLLE1BQU07d0JBQ1QsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7d0JBQ3RDLE1BQU07b0JBQ1IsS0FBSyxRQUFRO3dCQUNYLG1EQUFtRDt3QkFDbkQsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLENBQUMsc0NBQXNDO3dCQUNuRixNQUFNO2dCQUNWLENBQUM7WUFDSCxDQUFDO1lBRUQsNkJBQTZCO1lBQzdCLElBQ0UsUUFBUSxDQUFDLG9CQUFvQjtnQkFDN0IsUUFBUSxDQUFDLGtCQUFrQjtnQkFDM0IsYUFBYSxJQUFJLFFBQVEsQ0FBQyxrQkFBa0IsRUFDNUMsQ0FBQztnQkFDRCxRQUFRLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDM0IsS0FBSyxVQUFVO3dCQUNiLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUNyQixZQUFZLEVBQ1osUUFBUSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUN0QyxDQUFDO3dCQUNGLE1BQU07b0JBQ1IsS0FBSyxRQUFRO3dCQUNYLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUNyQixZQUFZLEVBQ1osUUFBUSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQ3ZDLENBQUM7d0JBQ0YsTUFBTTtvQkFDUixLQUFLLE1BQU07d0JBQ1QsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDOUQsTUFBTTtnQkFDVixDQUFDO1lBQ0gsQ0FBQztZQUVELFNBQVMsSUFBSSxZQUFZLENBQUM7UUFDNUIsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sc0JBQXNCLENBQzVCLElBQU8sRUFDUCxjQUFjLEdBQUcsS0FBSztRQUV0QixNQUFNLGVBQWUsR0FDbkIsSUFBSSxDQUFDLFlBQVk7WUFDakIsSUFBSSxDQUFDLE9BQU87WUFDWixDQUFDLElBQUksQ0FBQyxZQUFZO2dCQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxZQUEyQixDQUFDO2dCQUNsRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLGVBQWUsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qiw2Q0FBNkMsQ0FDOUMsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTztZQUNMLEdBQUcsSUFBSTtZQUNQLFlBQVksRUFBRSxlQUFlO1lBQzdCLE9BQU8sRUFBRSxlQUFlO1NBQ3pCLENBQUM7SUFDSixDQUFDO0lBRU8seUJBQXlCLENBQy9CLFdBQXlCO1FBRXpCLFFBQVEsV0FBVyxFQUFFLENBQUM7WUFDcEIsS0FBSyxjQUFjO2dCQUNqQixPQUFPLGVBQWUsQ0FBQztZQUN6QixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxlQUFlLENBQUM7WUFDekIsS0FBSyxlQUFlLENBQUM7WUFDckIsS0FBSyxjQUFjO2dCQUNqQixPQUFPLGlCQUFpQixDQUFDO1lBQzNCO2dCQUNFLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLHdCQUF3QixDQUNwQyxPQUF3QixFQUN4QixRQUFnQixFQUNoQixPQUFlLEVBQ2YsYUFBcUI7UUFFckIsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMvQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFELE1BQU0sT0FBTyxHQUFxQixFQUFFLENBQUM7UUFFckMsOEJBQThCO1FBQzlCLE1BQU0sYUFBYSxHQU1kO1lBQ0g7Z0JBQ0UsWUFBWSxFQUFFLGVBQWU7Z0JBQzdCLFlBQVksRUFBRSxjQUFjO2dCQUM1QixJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixtQkFBbUIsRUFBRSxJQUFJO2dCQUN6QixxQkFBcUIsRUFBRSxJQUFJO2FBQzVCO1lBQ0Q7Z0JBQ0UsWUFBWSxFQUFFLGVBQWU7Z0JBQzdCLFlBQVksRUFBRSxVQUFVO2dCQUN4QixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixtQkFBbUIsRUFBRSxJQUFJO2dCQUN6QixxQkFBcUIsRUFBRSxLQUFLO2FBQzdCO1lBQ0Q7Z0JBQ0UsWUFBWSxFQUFFLGlCQUFpQjtnQkFDL0IsWUFBWSxFQUFFLGVBQWU7Z0JBQzdCLElBQUksRUFBRSx3QkFBd0I7Z0JBQzlCLG1CQUFtQixFQUFFLEtBQUs7Z0JBQzFCLHFCQUFxQixFQUFFLEtBQUs7YUFDN0I7WUFDRDtnQkFDRSxZQUFZLEVBQUUsaUJBQWlCO2dCQUMvQixZQUFZLEVBQUUsY0FBYztnQkFDNUIsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIscUJBQXFCLEVBQUUsS0FBSzthQUM3QjtTQUNGLENBQUM7UUFFRixLQUFLLE1BQU0sS0FBSyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLE1BQTBCLENBQUM7WUFFL0IsaUNBQWlDO1lBQ2pDLElBQUksS0FBSyxDQUFDLG1CQUFtQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ2hELFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ2xCLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQztZQUM5QixDQUFDO1lBRUQsbUNBQW1DO1lBQ25DLElBQUksS0FBSyxDQUFDLHFCQUFxQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3BELFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ2xCLE1BQU0sR0FBRyx3Q0FBd0MsQ0FBQztZQUNwRCxDQUFDO1lBRUQsNkJBQTZCO1lBQzdCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUN4QyxLQUFLLENBQUMsWUFBWSxFQUNsQixLQUFLLENBQUMsWUFBWSxFQUNsQixRQUFRLENBQ1QsQ0FBQztZQUVGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUNsQixNQUFNLEdBQUcscUNBQXFDLENBQUM7WUFDakQsQ0FBQztZQUVELE1BQU0sWUFBWSxHQUFHLElBQUksRUFBRSxLQUFLLElBQUksTUFBTSxDQUFDO1lBQzNDLE1BQU0sVUFBVSxHQUFHLE9BQU8sR0FBRyxhQUFhLEdBQUcsWUFBWSxDQUFDO1lBRTFELE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ1gsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO2dCQUNoQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQ2hDLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEMsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLElBQUksS0FBSztnQkFDakMsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLElBQUksU0FBUztnQkFDL0MsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLElBQUksU0FBUztnQkFDL0MsWUFBWSxFQUFFLElBQUksRUFBRSxZQUFZLElBQUksU0FBUztnQkFDN0MsWUFBWSxFQUFFLElBQUksRUFBRSxZQUFZLElBQUksU0FBUztnQkFDN0MsU0FBUztnQkFDVCxNQUFNO2dCQUNOLGVBQWUsRUFBRTtvQkFDZixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMxRCxhQUFhLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlDLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDckM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsbURBQW1EO1FBQ25ELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUF3QjtRQUNyRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTVELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2xFLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLGtCQUFrQixLQUFLLGVBQWUsRUFBRSxDQUFDO29CQUMzQyxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUMvRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEUsSUFBSSxjQUFjLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNsQyxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCLENBQzlCLFdBQXdCLEVBQ3hCLFdBQXdCLEVBQ3hCLFFBQWdCO1FBRWhCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNqQyxZQUFZLEVBQUUsV0FBVztZQUN6QixZQUFZLEVBQUUsV0FBVztZQUN6QixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQztRQUVILGtDQUFrQztRQUNsQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFNUUsOENBQThDO1FBQzlDLEtBQUssTUFBTSxJQUFJLElBQUksV0FBVyxFQUFFLENBQUM7WUFDL0IsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuQyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVU7UUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsNENBQTRDO1FBQ3ZFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU3QixpQ0FBaUM7UUFDakMsTUFBTSxTQUFTLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUU3QyxPQUFPLFNBQVMsSUFBSSxhQUFhLENBQUM7SUFDcEMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxHQUFXO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQUVELGtCQUFlLHFCQUFxQixDQUFDIn0=
|
|
633
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3BhcmNlbC1zaGlwcGluZy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQXVFO0FBQ3ZFLG9EQUFnRDtBQUNoRCwwREFBc0Q7QUFDdEQsd0RBQW9EO0FBQ3BELDREQUF3RDtBQUN4RCxvRUFBZ0U7QUFDaEUsMERBQXNEO0FBQ3RELHdEQUdvQztBQUNwQyxnRkFBNEU7QUFjNUUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsYUFBYTtBQVUxQzs7O0dBR0c7QUFDSCxNQUFNLHFCQUFzQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUNoRCxTQUFTLEVBQVQsc0JBQVM7SUFDVCxZQUFZLEVBQVosNEJBQVk7SUFDWixXQUFXLEVBQVgsMEJBQVc7SUFDWCxhQUFhLEVBQWIsOEJBQWE7SUFDYixpQkFBaUIsRUFBakIsc0NBQWlCO0lBQ2pCLFlBQVksRUFBWiw0QkFBWTtDQUNiLENBQUM7SUFQRjs7UUFRVSxVQUFLLEdBQXVEO1lBQ2xFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUNuQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDbkMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQ25DLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUN0QyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDdkMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1NBQzdDLENBQUM7UUFDTSxrQ0FBNkIsR0FBRyxLQUFLLENBQUM7SUF1eUJoRCxDQUFDO0lBcnlCQywrRUFBK0U7SUFDL0UsbUJBQW1CO0lBQ25CLCtFQUErRTtJQUUvRSxlQUFlLENBQUMsSUFBaUI7UUFDL0IsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQWUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUNELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLFNBQVMsQ0FDckIsR0FBYSxFQUNiLE9BQXlCLEVBQ3pCLFVBQStCLEVBQUU7UUFFakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVuRCxJQUNFLENBQUMsVUFBVTtZQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSTtZQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQy9CLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzlCLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLE9BQU8sRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDNUQsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELCtFQUErRTtJQUMvRSxpQkFBaUI7SUFDakIsK0VBQStFO0lBRS9FLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBK0IsRUFBRSxFQUFFLFNBQWMsRUFBRTtRQUNqRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQ25CLE9BQU8sRUFDUCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFDM0MsT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFTO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNoQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFVLEVBQUUsSUFBUztRQUNuQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDaEMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBVTtRQUN4QixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELCtFQUErRTtJQUMvRSwyQkFBMkI7SUFDM0IsK0VBQStFO0lBRS9FLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBK0IsRUFBRSxFQUFFLFNBQWMsRUFBRTtRQUNqRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQ25CLE9BQU8sRUFDUCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUM3QyxPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQVM7UUFDeEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDaEMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBVSxFQUFFLElBQVM7UUFDcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNoQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFVO1FBQ3pCLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLDBCQUEwQjtJQUMxQiwrRUFBK0U7SUFFL0UsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQStCLEVBQUUsRUFBRSxTQUFjLEVBQUU7UUFDeEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUNuQixPQUFPLEVBQ1AsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFDNUMsT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQVM7UUFDL0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBVSxFQUFFLElBQVM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBVTtRQUNoQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELCtFQUErRTtJQUMvRSw0QkFBNEI7SUFDNUIsK0VBQStFO0lBRS9FLEtBQUssQ0FBQyxtQkFBbUIsQ0FDdkIsVUFBK0IsRUFBRSxFQUNqQyxTQUFjLEVBQUU7UUFFaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUNuQixVQUFVLEVBQ1YsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFDL0MsT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLDBCQUEwQixDQUFDLFNBQWlCO1FBQ2hELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDM0UsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBUztRQUNqQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFVLEVBQUUsSUFBUztRQUM3QyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFVO1FBQ2xDLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLGdDQUFnQztJQUNoQywrRUFBK0U7SUFFL0UsS0FBSyxDQUFDLHNCQUFzQixDQUMxQixVQUErQixFQUFFLEVBQ2pDLFNBQWMsRUFBRTtRQUVoQixJQUFJLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FDbkIsV0FBVyxFQUNYLEtBQUssSUFBSSxFQUFFO1lBQ1QsSUFBSSxDQUFDO2dCQUNILE9BQU8sTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzVDLE9BQU8sRUFBRSxDQUFDO2dCQUNaLENBQUM7Z0JBQ0QsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQyxFQUNELE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxJQUFTO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEVBQVUsRUFBRSxJQUFTO1FBQ2pELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEVBQVU7UUFDdEMsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsMkJBQTJCO0lBQzNCLCtFQUErRTtJQUUvRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsVUFBK0IsRUFBRSxFQUFFLFNBQWMsRUFBRTtRQUN6RSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQ25CLGdCQUFnQixFQUNoQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUM3QyxPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBUztRQUNoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUN6QyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQVUsRUFBRSxJQUFTO1FBQzVDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBVTtRQUNqQyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLG1CQUFtQjtJQUNuQiwrRUFBK0U7SUFFL0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUE2QjtRQUN2QyxzQkFBc0I7UUFDdEIsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzVELE1BQU0sSUFBSSxLQUFLLENBQ2IsV0FBVyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxxREFBcUQsQ0FDakcsQ0FBQztRQUNKLENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQW1CLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEQsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ1YsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztZQUN4QixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7WUFDeEIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO1lBQ2hDLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztTQUN6QixDQUFDLENBQUMsQ0FBQztRQUVKLHdEQUF3RDtRQUN4RCxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsaUJBQWlCLEtBQUssS0FBSyxDQUFDO1FBRTVELElBQUksY0FHRixDQUFDO1FBRUgsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixrQ0FBa0M7WUFDbEMsTUFBTSxhQUFhLEdBQUcsSUFBQSwrQkFBcUIsRUFBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBRTFFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyRCxPQUFPLENBQUMsSUFBSSxDQUNWLDJEQUEyRCxFQUMzRCxhQUFhLENBQUMsT0FBTyxDQUN0QixDQUFDO2dCQUNGLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksc0JBQXNCLENBQUMsQ0FBQztnQkFDbkUsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixjQUFjLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3RELEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztvQkFDZixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87aUJBQ3hCLENBQUMsQ0FBQyxDQUFDO1lBQ04sQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sOEJBQThCO1lBQzlCLE1BQU0sYUFBYSxHQUFHLElBQUEsMkJBQWlCLEVBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztZQUV0RSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMzQixNQUFNLElBQUksS0FBSyxDQUNiLGFBQWEsQ0FBQyxPQUFPO29CQUNuQix1RkFBdUYsQ0FDMUYsQ0FBQztZQUNKLENBQUM7WUFFRCxjQUFjLEdBQUc7Z0JBQ2Y7b0JBQ0UsR0FBRyxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRztvQkFDN0IsT0FBTyxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTztpQkFDdEM7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUVELG9EQUFvRDtRQUNwRCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUN6QyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFDbkQsQ0FBQyxDQUNGLENBQUM7UUFFRixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsTUFBTSxDQUN4QyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFDM0MsQ0FBQyxDQUNGLENBQUM7UUFFRixzREFBc0Q7UUFDdEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsK0JBQStCLENBQzlELE9BQU8sQ0FBQyxLQUFLLEVBQ2IsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxrREFBa0Q7UUFDN0UsYUFBYSxDQUNkLENBQUM7UUFFRix3Q0FBd0M7UUFDeEMsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQ3pELE9BQU8sQ0FBQyxnQkFBZ0IsRUFDeEIsYUFBYSxFQUNiLFlBQVksRUFDWixhQUFhLENBQ2QsQ0FBQztRQUVGLHFDQUFxQztRQUNyQyxJQUFJLFFBQW9DLENBQUM7UUFDekMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM5QixRQUFRLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FDN0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNOLEdBQUcsQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUFDLGlCQUFrQixDQUFDLFlBQVk7Z0JBQzVELEdBQUcsQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUFDLGlCQUFrQixDQUFDLFlBQVk7Z0JBQzVELEdBQUcsQ0FBQyxTQUFTLENBQ2hCLENBQUM7UUFDSixDQUFDO1FBRUQsbUVBQW1FO1FBQ25FLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUVELHNEQUFzRDtRQUN0RCxJQUFJLFFBQStDLENBQUM7UUFDcEQsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDO2dCQUNILE1BQU0sVUFBVSxHQUFHLElBQUksd0NBQWtCLEVBQUUsQ0FBQztnQkFDNUMsUUFBUSxHQUFHLE1BQU0sVUFBVSxDQUFDLGlCQUFpQixDQUMzQztvQkFDRSxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxjQUFjO29CQUNyRCxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxjQUFjO29CQUNyRCxNQUFNLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNO29CQUNyQyxZQUFZLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZO29CQUNqRCxRQUFRLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRO29CQUN6QyxJQUFJLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJO29CQUNqQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRO29CQUN6QyxRQUFRLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRO29CQUN6QyxPQUFPLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPO2lCQUN4QyxFQUNEO29CQUNFLGNBQWMsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsY0FBYztvQkFDdkQsY0FBYyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjO29CQUN2RCxNQUFNLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU07b0JBQ3ZDLFlBQVksRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsWUFBWTtvQkFDbkQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRO29CQUMzQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUk7b0JBQ25DLFFBQVEsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsUUFBUTtvQkFDM0MsUUFBUSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRO29CQUMzQyxPQUFPLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE9BQU87aUJBQzFDLENBQ0YsQ0FBQztZQUNKLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLHFDQUFxQztnQkFDckMsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0gsQ0FBQztRQUVELHVFQUF1RTtRQUN2RSxxQ0FBcUM7UUFDckMsT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztZQUMvQixPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDbEMsS0FBSyxFQUFFLGNBQWM7WUFDckIsZ0JBQWdCLEVBQUUsZUFBZTtZQUNqQyxRQUFRO1lBQ1IsUUFBUTtTQUNULENBQUM7SUFDSixDQUFDO0lBRU8sb0JBQW9CLENBQzFCLEtBQWtCO1FBRWxCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sZUFBZSxHQUdoQixFQUFFLENBQUM7UUFFUixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDeEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWxELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxXQUFXLEdBQUcsU0FBUyxHQUFHLGdCQUFnQixDQUFDO2dCQUNqRCxNQUFNLFlBQVksR0FBRyxVQUFVLEdBQUcsZ0JBQWdCLENBQUM7Z0JBQ25ELE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQztnQkFFbkQsTUFBTSxHQUFHLEdBQWlCO29CQUN4QixFQUFFLEVBQUUsWUFBWSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssRUFBRTtvQkFDbkMsSUFBSSxFQUFFLGtCQUFrQixJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNsQyxRQUFRLEVBQUUsV0FBVztvQkFDckIsU0FBUyxFQUFFLFlBQVk7b0JBQ3ZCLFNBQVMsRUFBRSxZQUFZO29CQUN2QixhQUFhLEVBQUUsYUFBYSxHQUFHLENBQUM7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDO2lCQUNiLENBQUM7Z0JBRUYsTUFBTSxPQUFPLEdBQW1CO29CQUM5QixVQUFVLEVBQUUsWUFBWTtvQkFDeEIsUUFBUSxFQUFFLENBQUM7b0JBQ1gsWUFBWSxFQUFFLENBQUM7b0JBQ2YsVUFBVSxFQUFFLENBQUM7b0JBQ2IsTUFBTSxFQUFFLENBQUM7b0JBQ1QsVUFBVSxFQUFFO3dCQUNWOzRCQUNFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRzs0QkFDYixXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQzs0QkFDaEQsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ25CLFVBQVUsRUFBRSxDQUFDO3lCQUNkO3FCQUNGO29CQUNELGFBQWEsRUFBRSxhQUFhO29CQUM1QixrQkFBa0IsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwRCxvQkFBb0IsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUM7b0JBQ3ZELHFCQUFxQixFQUFFLEtBQUs7aUJBQzdCLENBQUM7Z0JBRUYsZUFBZSxDQUFDLElBQUksQ0FBQztvQkFDbkIsR0FBRztvQkFDSCxPQUFPO2lCQUNSLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVELCtFQUErRTtJQUMvRSwrQkFBK0I7SUFDL0IsK0VBQStFO0lBRXZFLEtBQUssQ0FBQywrQkFBK0IsQ0FDM0MsS0FBa0IsRUFDbEIsT0FBWSxFQUNaLGFBQXFCO1FBRXJCLElBQUksU0FBUyxHQUFVLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUM7WUFDSCxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzVDLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztZQUNELE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLHNCQUFzQjtRQUN0QixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ2hELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMvQixDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFTixLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztZQUVyQiwrQkFBK0I7WUFDL0IsSUFBSSxRQUFRLENBQUMsc0JBQXNCLElBQUksWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxRQUFRLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDM0IsS0FBSyxVQUFVO3dCQUNiLFlBQVksR0FBRyxRQUFRLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQzt3QkFDckQsTUFBTTtvQkFDUixLQUFLLFFBQVE7d0JBQ1gsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO3dCQUN0RCxNQUFNO29CQUNSLEtBQUssTUFBTTt3QkFDVCxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQzt3QkFDdEMsTUFBTTtvQkFDUixLQUFLLFFBQVE7d0JBQ1gsbURBQW1EO3dCQUNuRCxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsQ0FBQyxzQ0FBc0M7d0JBQ25GLE1BQU07Z0JBQ1YsQ0FBQztZQUNILENBQUM7WUFFRCw2QkFBNkI7WUFDN0IsSUFDRSxRQUFRLENBQUMsb0JBQW9CO2dCQUM3QixRQUFRLENBQUMsa0JBQWtCO2dCQUMzQixhQUFhLElBQUksUUFBUSxDQUFDLGtCQUFrQixFQUM1QyxDQUFDO2dCQUNELFFBQVEsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUMzQixLQUFLLFVBQVU7d0JBQ2IsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3JCLFlBQVksRUFDWixRQUFRLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ3RDLENBQUM7d0JBQ0YsTUFBTTtvQkFDUixLQUFLLFFBQVE7d0JBQ1gsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3JCLFlBQVksRUFDWixRQUFRLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FDdkMsQ0FBQzt3QkFDRixNQUFNO29CQUNSLEtBQUssTUFBTTt3QkFDVCxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUM5RCxNQUFNO2dCQUNWLENBQUM7WUFDSCxDQUFDO1lBRUQsU0FBUyxJQUFJLFlBQVksQ0FBQztRQUM1QixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxzQkFBc0IsQ0FDNUIsSUFBTyxFQUNQLGNBQWMsR0FBRyxLQUFLO1FBRXRCLE1BQU0sZUFBZSxHQUNuQixJQUFJLENBQUMsWUFBWTtZQUNqQixJQUFJLENBQUMsT0FBTztZQUNaLENBQUMsSUFBSSxDQUFDLFlBQVk7Z0JBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFlBQTJCLENBQUM7Z0JBQ2xFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsZUFBZSxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDZDQUE2QyxDQUM5QyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPO1lBQ0wsR0FBRyxJQUFJO1lBQ1AsWUFBWSxFQUFFLGVBQWU7WUFDN0IsT0FBTyxFQUFFLGVBQWU7U0FDekIsQ0FBQztJQUNKLENBQUM7SUFFTyx5QkFBeUIsQ0FDL0IsV0FBeUI7UUFFekIsUUFBUSxXQUFXLEVBQUUsQ0FBQztZQUNwQixLQUFLLGNBQWM7Z0JBQ2pCLE9BQU8sZUFBZSxDQUFDO1lBQ3pCLEtBQUssVUFBVTtnQkFDYixPQUFPLGVBQWUsQ0FBQztZQUN6QixLQUFLLGVBQWUsQ0FBQztZQUNyQixLQUFLLGNBQWM7Z0JBQ2pCLE9BQU8saUJBQWlCLENBQUM7WUFDM0I7Z0JBQ0UsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsd0JBQXdCLENBQ3BDLE9BQXdCLEVBQ3hCLFFBQWdCLEVBQ2hCLE9BQWUsRUFDZixhQUFxQjtRQUVyQixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzRCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQy9CLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUQsTUFBTSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUVyQyw4QkFBOEI7UUFDOUIsTUFBTSxhQUFhLEdBTWQ7WUFDSDtnQkFDRSxZQUFZLEVBQUUsZUFBZTtnQkFDN0IsWUFBWSxFQUFFLGNBQWM7Z0JBQzVCLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLG1CQUFtQixFQUFFLElBQUk7Z0JBQ3pCLHFCQUFxQixFQUFFLElBQUk7YUFDNUI7WUFDRDtnQkFDRSxZQUFZLEVBQUUsZUFBZTtnQkFDN0IsWUFBWSxFQUFFLFVBQVU7Z0JBQ3hCLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLG1CQUFtQixFQUFFLElBQUk7Z0JBQ3pCLHFCQUFxQixFQUFFLEtBQUs7YUFDN0I7WUFDRDtnQkFDRSxZQUFZLEVBQUUsaUJBQWlCO2dCQUMvQixZQUFZLEVBQUUsZUFBZTtnQkFDN0IsSUFBSSxFQUFFLHdCQUF3QjtnQkFDOUIsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIscUJBQXFCLEVBQUUsS0FBSzthQUM3QjtZQUNEO2dCQUNFLFlBQVksRUFBRSxpQkFBaUI7Z0JBQy9CLFlBQVksRUFBRSxjQUFjO2dCQUM1QixJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixtQkFBbUIsRUFBRSxLQUFLO2dCQUMxQixxQkFBcUIsRUFBRSxLQUFLO2FBQzdCO1NBQ0YsQ0FBQztRQUVGLEtBQUssTUFBTSxLQUFLLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksTUFBMEIsQ0FBQztZQUUvQixpQ0FBaUM7WUFDakMsSUFBSSxLQUFLLENBQUMsbUJBQW1CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDaEQsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDbEIsTUFBTSxHQUFHLGtCQUFrQixDQUFDO1lBQzlCLENBQUM7WUFFRCxtQ0FBbUM7WUFDbkMsSUFBSSxLQUFLLENBQUMscUJBQXFCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDcEQsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDbEIsTUFBTSxHQUFHLHdDQUF3QyxDQUFDO1lBQ3BELENBQUM7WUFFRCw2QkFBNkI7WUFDN0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQ3hDLEtBQUssQ0FBQyxZQUFZLEVBQ2xCLEtBQUssQ0FBQyxZQUFZLEVBQ2xCLFFBQVEsQ0FDVCxDQUFDO1lBRUYsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ2xCLE1BQU0sR0FBRyxxQ0FBcUMsQ0FBQztZQUNqRCxDQUFDO1lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxFQUFFLEtBQUssSUFBSSxNQUFNLENBQUM7WUFDM0MsTUFBTSxVQUFVLEdBQUcsT0FBTyxHQUFHLGFBQWEsR0FBRyxZQUFZLENBQUM7WUFFMUQsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDWCxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQ2hDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDaEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsSUFBSSxLQUFLO2dCQUNqQyxhQUFhLEVBQUUsSUFBSSxFQUFFLGFBQWEsSUFBSSxTQUFTO2dCQUMvQyxhQUFhLEVBQUUsSUFBSSxFQUFFLGFBQWEsSUFBSSxTQUFTO2dCQUMvQyxZQUFZLEVBQUUsSUFBSSxFQUFFLFlBQVksSUFBSSxTQUFTO2dCQUM3QyxZQUFZLEVBQUUsSUFBSSxFQUFFLFlBQVksSUFBSSxTQUFTO2dCQUM3QyxTQUFTO2dCQUNULE1BQU07Z0JBQ04sZUFBZSxFQUFFO29CQUNmLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDcEMsd0JBQXdCLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzFELGFBQWEsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNyQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxtREFBbUQ7UUFDbkQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQXdCO1FBQ3JELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFNUQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDakQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbEUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pELElBQUksa0JBQWtCLEtBQUssZUFBZSxFQUFFLENBQUM7b0JBQzNDLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7WUFDSCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQy9ELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4RSxJQUFJLGNBQWMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2xDLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLEtBQUssQ0FBQyxrQkFBa0IsQ0FDOUIsV0FBd0IsRUFDeEIsV0FBd0IsRUFDeEIsUUFBZ0I7UUFFaEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2pDLFlBQVksRUFBRSxXQUFXO1lBQ3pCLFlBQVksRUFBRSxXQUFXO1lBQ3pCLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO1FBRUgsa0NBQWtDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU1RSw4Q0FBOEM7UUFDOUMsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUMvQixJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ25DLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBVTtRQUNoQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyw0Q0FBNEM7UUFDdkUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTdCLGlDQUFpQztRQUNqQyxNQUFNLFNBQVMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTdDLE9BQU8sU0FBUyxJQUFJLGFBQWEsQ0FBQztJQUNwQyxDQUFDO0lBRU8sZUFBZSxDQUFDLEdBQVc7UUFDakMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUNPLDJCQUEyQixDQUFDLEtBQVU7UUFDNUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELElBQ0UsT0FBTyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQztZQUM3QyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ2pFLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsMkhBQTJILENBQzVILENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sbUJBQW1CLENBQUMsS0FBVTtRQUNwQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFDOUIsSUFBSSxPQUFPLEdBQVEsS0FBSyxDQUFDO1FBQ3pCLE9BQU8sT0FBTyxFQUFFLENBQUM7WUFDZixJQUFJLE9BQU8sT0FBTyxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDeEMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUNELE9BQU87Z0JBQ0wsT0FBTyxDQUFDLEtBQUs7b0JBQ2IsT0FBTyxDQUFDLGFBQWE7b0JBQ3JCLE9BQU8sQ0FBQyxNQUFNO29CQUNkLE9BQU8sQ0FBQyxRQUFRO29CQUNoQixJQUFJLENBQUM7UUFDVCxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxPQUFPLEtBQUssQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDbEUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRjtBQUVELGtCQUFlLHFCQUFxQixDQUFDIn0=
|
|
@@ -4,6 +4,12 @@ exports.ParcelFulfillmentProvider = void 0;
|
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
const parcel_shipping_1 = require("../modules/parcel-shipping");
|
|
6
6
|
const PRODUCT_EXTENSION_MODULE = "productExtension";
|
|
7
|
+
const DEFAULT_FALLBACK_DIMENSIONS = {
|
|
8
|
+
width: 10,
|
|
9
|
+
length: 10,
|
|
10
|
+
height: 10,
|
|
11
|
+
weight: 500, // raw weight in grams (converted later based on weight_unit)
|
|
12
|
+
};
|
|
7
13
|
/**
|
|
8
14
|
* Unified Parcel Fulfillment Provider
|
|
9
15
|
* Provides 4 service levels:
|
|
@@ -18,11 +24,13 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
18
24
|
constructor(container, options = {}) {
|
|
19
25
|
// @ts-ignore
|
|
20
26
|
super(...arguments);
|
|
27
|
+
this.fallbackDimensionsWarned = false;
|
|
21
28
|
this.container_ = container;
|
|
22
29
|
this.logger_ = container.logger;
|
|
23
30
|
this.weightUnit = options.weight_unit ?? "g";
|
|
24
31
|
this.apiUrl = options.api_url ?? "http://localhost:9000";
|
|
25
32
|
this.publishableApiKey = options.publishable_api_key;
|
|
33
|
+
this.fallbackDimensions = this.resolveFallbackDimensions(options.fallback_dimensions);
|
|
26
34
|
}
|
|
27
35
|
/**
|
|
28
36
|
* Make internal API call to /store/quote endpoint
|
|
@@ -40,12 +48,8 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
40
48
|
return {
|
|
41
49
|
items,
|
|
42
50
|
shipping_address: {
|
|
43
|
-
address_line_1: normalizedAddress.address_line_1 ||
|
|
44
|
-
|
|
45
|
-
"",
|
|
46
|
-
address_line_2: normalizedAddress.address_line_2 ||
|
|
47
|
-
normalizedAddress.address_2 ||
|
|
48
|
-
"",
|
|
51
|
+
address_line_1: normalizedAddress.address_line_1 || normalizedAddress.address_1 || "",
|
|
52
|
+
address_line_2: normalizedAddress.address_line_2 || normalizedAddress.address_2 || "",
|
|
49
53
|
street: normalizedAddress.street || "",
|
|
50
54
|
sub_district: normalizedAddress.sub_district || "",
|
|
51
55
|
district: normalizedAddress.district || "",
|
|
@@ -59,9 +63,7 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
59
63
|
normalizedAddress.zipcode ||
|
|
60
64
|
normalizedAddress.zip ||
|
|
61
65
|
"",
|
|
62
|
-
country: normalizedAddress.country ||
|
|
63
|
-
normalizedAddress.country_code ||
|
|
64
|
-
"TH",
|
|
66
|
+
country: normalizedAddress.country || normalizedAddress.country_code || "TH",
|
|
65
67
|
},
|
|
66
68
|
preferred_service: {
|
|
67
69
|
carrier_type: carrierType,
|
|
@@ -71,19 +73,14 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
71
73
|
};
|
|
72
74
|
}
|
|
73
75
|
async tryQuoteViaModule(payload) {
|
|
74
|
-
|
|
75
|
-
if (!container) {
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
const hasRegistration = typeof container?.hasRegistration === "function"
|
|
79
|
-
? container.hasRegistration(parcel_shipping_1.PARCEL_SHIPPING_MODULE)
|
|
80
|
-
: true;
|
|
81
|
-
if (!hasRegistration) {
|
|
76
|
+
if (!this.container_) {
|
|
82
77
|
return null;
|
|
83
78
|
}
|
|
84
79
|
try {
|
|
85
|
-
|
|
80
|
+
// Resolve directly - Awilix container proxies all property access
|
|
81
|
+
const parcelService = this.container_.resolve(parcel_shipping_1.PARCEL_SHIPPING_MODULE);
|
|
86
82
|
if (!parcelService?.quote) {
|
|
83
|
+
this.logger_?.error(`Parcel shipping service resolved but quote method not available. Service keys: ${Object.keys(parcelService || {}).join(", ")}`);
|
|
87
84
|
return null;
|
|
88
85
|
}
|
|
89
86
|
return await parcelService.quote(payload);
|
|
@@ -91,16 +88,17 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
91
88
|
catch (error) {
|
|
92
89
|
if (error?.name === "AwilixResolutionError" ||
|
|
93
90
|
error?.name === "ResolutionError") {
|
|
94
|
-
this.logger_?.info(
|
|
91
|
+
this.logger_?.info(`Parcel shipping module (${parcel_shipping_1.PARCEL_SHIPPING_MODULE}) not in provider scope. Falling back to HTTP.`);
|
|
95
92
|
return null;
|
|
96
93
|
}
|
|
97
94
|
throw error;
|
|
98
95
|
}
|
|
99
96
|
}
|
|
100
97
|
async fetchQuoteViaHttp(payload) {
|
|
98
|
+
// Always try store first (requires publishable API key), then admin as fallback
|
|
101
99
|
const scopesToTry = this.publishableApiKey
|
|
102
100
|
? ["store", "admin"]
|
|
103
|
-
: ["admin"];
|
|
101
|
+
: ["store", "admin"]; // Try store anyway, it might work without key in some setups
|
|
104
102
|
let lastError = null;
|
|
105
103
|
for (const scope of scopesToTry) {
|
|
106
104
|
try {
|
|
@@ -109,10 +107,8 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
109
107
|
catch (error) {
|
|
110
108
|
const typedError = error;
|
|
111
109
|
lastError = typedError;
|
|
112
|
-
if (scope === "store" &&
|
|
113
|
-
this.
|
|
114
|
-
this.shouldFallbackToAdmin(typedError)) {
|
|
115
|
-
this.logger_?.warn("Store quote failed to validate publishable key. Retrying via admin endpoint.");
|
|
110
|
+
if (scope === "store" && this.shouldFallbackToAdmin(typedError)) {
|
|
111
|
+
this.logger_?.warn(`Store quote failed (${typedError.status}). Retrying via admin endpoint.`);
|
|
116
112
|
continue;
|
|
117
113
|
}
|
|
118
114
|
const logMessage = `Failed to fetch quote from API: ${typedError?.message ?? "Unknown error"}`;
|
|
@@ -249,6 +245,15 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
249
245
|
}
|
|
250
246
|
async calculatePrice(optionData, data, context) {
|
|
251
247
|
this.logger_?.info(`calculatePrice called with optionData: ${JSON.stringify(optionData)}`);
|
|
248
|
+
// Debug: Log full context structure
|
|
249
|
+
this.logger_?.info?.(`[ParcelFulfillment] calculatePrice context keys: ${Object.keys(context || {}).join(", ")}`);
|
|
250
|
+
this.logger_?.info?.(`[ParcelFulfillment] calculatePrice data keys: ${Object.keys(data || {}).join(", ")}`);
|
|
251
|
+
const cartId = this.extractCartId(context, data);
|
|
252
|
+
this.logger_?.info?.(`[ParcelFulfillment] Extracted cart_id: ${cartId ?? "NOT FOUND"}`);
|
|
253
|
+
// Check if cart data is directly available
|
|
254
|
+
if (context?.cart) {
|
|
255
|
+
this.logger_?.info?.(`[ParcelFulfillment] Cart object found with ${context.cart?.items?.length ?? 0} items`);
|
|
256
|
+
}
|
|
252
257
|
const quoteItems = await this.convertToQuoteItems(context);
|
|
253
258
|
if (!quoteItems.length) {
|
|
254
259
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "cart_items_missing_dimensions_or_weight");
|
|
@@ -333,9 +338,16 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
333
338
|
// Helper Methods
|
|
334
339
|
// ============================================================================
|
|
335
340
|
async convertToQuoteItems(context) {
|
|
336
|
-
const items = context
|
|
341
|
+
const items = await this.resolveItemsWithFallback(context);
|
|
337
342
|
const quoteItems = [];
|
|
343
|
+
if (!items.length) {
|
|
344
|
+
const cartId = this.extractCartId(context);
|
|
345
|
+
this.logger_?.error?.(`[ParcelFulfillment] No items found for shipping calculation. Cart ID: ${cartId ?? "unknown"}. ` +
|
|
346
|
+
`Context keys: ${Object.keys(context || {}).join(", ")}`);
|
|
347
|
+
return quoteItems;
|
|
348
|
+
}
|
|
338
349
|
const stackableMap = await this.loadProductStackableValues(items);
|
|
350
|
+
const variantDimensions = await this.loadVariantDimensions(items);
|
|
339
351
|
this.logger_?.info(`Converting ${items.length} items to quote items`);
|
|
340
352
|
for (const item of items) {
|
|
341
353
|
const lineItem = item;
|
|
@@ -343,6 +355,10 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
343
355
|
if (!quantity) {
|
|
344
356
|
continue;
|
|
345
357
|
}
|
|
358
|
+
const variantId = this.extractVariantId(lineItem);
|
|
359
|
+
const variantFallbackDimensions = variantId
|
|
360
|
+
? variantDimensions.get(variantId)
|
|
361
|
+
: undefined;
|
|
346
362
|
// Check variant, line item, and product dimensions (fallback)
|
|
347
363
|
const rawWeight = Number(lineItem?.variant?.weight ??
|
|
348
364
|
lineItem?.weight ??
|
|
@@ -350,32 +366,57 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
350
366
|
lineItem?.variant?.product?.weight ??
|
|
351
367
|
lineItem?.product?.weight ??
|
|
352
368
|
0) || 0;
|
|
353
|
-
const
|
|
354
|
-
|
|
369
|
+
const sourceWeight = rawWeight ||
|
|
370
|
+
variantFallbackDimensions?.weight ||
|
|
371
|
+
this.fallbackDimensions.weight;
|
|
372
|
+
const usedProviderWeightFallback = !rawWeight && !variantFallbackDimensions?.weight;
|
|
373
|
+
const weight = this.normalizeWeight(sourceWeight);
|
|
374
|
+
const widthValue = Number(lineItem?.variant?.width ??
|
|
355
375
|
lineItem?.width ??
|
|
356
376
|
lineItem?.raw_width ??
|
|
357
377
|
lineItem?.variant?.product?.width ??
|
|
358
378
|
lineItem?.product?.width ??
|
|
359
379
|
0) || 0;
|
|
360
|
-
const
|
|
380
|
+
const finalWidth = widthValue ||
|
|
381
|
+
variantFallbackDimensions?.width ||
|
|
382
|
+
this.fallbackDimensions.width;
|
|
383
|
+
const usedProviderWidthFallback = !widthValue && !variantFallbackDimensions?.width;
|
|
384
|
+
const lengthValue = Number(lineItem?.variant?.length ??
|
|
361
385
|
lineItem?.length ??
|
|
362
386
|
lineItem?.raw_length ??
|
|
363
387
|
lineItem?.variant?.product?.length ??
|
|
364
388
|
lineItem?.product?.length ??
|
|
365
389
|
0) || 0;
|
|
366
|
-
const
|
|
390
|
+
const finalLength = lengthValue ||
|
|
391
|
+
variantFallbackDimensions?.length ||
|
|
392
|
+
this.fallbackDimensions.length;
|
|
393
|
+
const usedProviderLengthFallback = !lengthValue && !variantFallbackDimensions?.length;
|
|
394
|
+
const heightValue = Number(lineItem?.variant?.height ??
|
|
367
395
|
lineItem?.height ??
|
|
368
396
|
lineItem?.raw_height ??
|
|
369
397
|
lineItem?.variant?.product?.height ??
|
|
370
398
|
lineItem?.product?.height ??
|
|
371
399
|
0) || 0;
|
|
372
|
-
|
|
400
|
+
const finalHeight = heightValue ||
|
|
401
|
+
variantFallbackDimensions?.height ||
|
|
402
|
+
this.fallbackDimensions.height;
|
|
403
|
+
const usedProviderHeightFallback = !heightValue && !variantFallbackDimensions?.height;
|
|
404
|
+
if (!finalWidth || !finalLength || !finalHeight || !weight) {
|
|
373
405
|
continue;
|
|
374
406
|
}
|
|
407
|
+
if (usedProviderWidthFallback ||
|
|
408
|
+
usedProviderLengthFallback ||
|
|
409
|
+
usedProviderHeightFallback ||
|
|
410
|
+
usedProviderWeightFallback) {
|
|
411
|
+
this.logFallbackDimensionsOnce(lineItem);
|
|
412
|
+
}
|
|
375
413
|
// Get packing policy from metadata
|
|
376
414
|
const noStack = Boolean(lineItem?.variant?.metadata?.noStack ?? lineItem?.metadata?.noStack);
|
|
377
415
|
const fragile = Boolean(lineItem?.variant?.metadata?.fragile ?? lineItem?.metadata?.fragile);
|
|
378
|
-
|
|
416
|
+
let productId = this.extractProductId(lineItem);
|
|
417
|
+
if (!productId && variantFallbackDimensions?.product_id) {
|
|
418
|
+
productId = String(variantFallbackDimensions.product_id);
|
|
419
|
+
}
|
|
379
420
|
let stackable = lineItem?.variant?.metadata?.stackable ?? lineItem?.metadata?.stackable;
|
|
380
421
|
if ((stackable === undefined || stackable === null || stackable === "") &&
|
|
381
422
|
productId &&
|
|
@@ -389,16 +430,18 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
389
430
|
if (fragile) {
|
|
390
431
|
attributes.fragile = true;
|
|
391
432
|
}
|
|
392
|
-
if
|
|
393
|
-
|
|
394
|
-
stackable !== "") {
|
|
433
|
+
// Default to -1 (unlimited) if stackable is not explicitly set
|
|
434
|
+
if (stackable !== undefined && stackable !== null && stackable !== "") {
|
|
395
435
|
attributes.stackable = Number(stackable);
|
|
396
436
|
}
|
|
437
|
+
else {
|
|
438
|
+
attributes.stackable = -1; // Unlimited stacking
|
|
439
|
+
}
|
|
397
440
|
const quoteItem = {
|
|
398
441
|
sku: lineItem?.variant?.sku || lineItem?.sku || "unknown",
|
|
399
|
-
width,
|
|
400
|
-
length,
|
|
401
|
-
height,
|
|
442
|
+
width: finalWidth,
|
|
443
|
+
length: finalLength,
|
|
444
|
+
height: finalHeight,
|
|
402
445
|
weight,
|
|
403
446
|
quantity,
|
|
404
447
|
attributes: Object.keys(attributes).length > 0 ? attributes : undefined,
|
|
@@ -409,6 +452,125 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
409
452
|
this.logger_?.info(`Converted ${quoteItems.length} quote items successfully`);
|
|
410
453
|
return quoteItems;
|
|
411
454
|
}
|
|
455
|
+
async resolveItemsWithFallback(context) {
|
|
456
|
+
const directItems = this.resolveContextItems(context);
|
|
457
|
+
if (directItems.length) {
|
|
458
|
+
return directItems;
|
|
459
|
+
}
|
|
460
|
+
const cartItems = await this.loadItemsFromCartContext(context);
|
|
461
|
+
if (cartItems.length) {
|
|
462
|
+
this.logger_?.debug?.(`[ParcelFulfillment] Loaded ${cartItems.length} cart items via fallback lookup.`);
|
|
463
|
+
return cartItems;
|
|
464
|
+
}
|
|
465
|
+
const cartId = this.extractCartId(context);
|
|
466
|
+
if (cartId) {
|
|
467
|
+
this.logger_?.warn?.(`[ParcelFulfillment] Unable to load items for cart ${cartId}. Shipping quote will fail.`);
|
|
468
|
+
}
|
|
469
|
+
else {
|
|
470
|
+
this.logger_?.warn?.("[ParcelFulfillment] Unable to determine cart ID for shipping calculation.");
|
|
471
|
+
}
|
|
472
|
+
return [];
|
|
473
|
+
}
|
|
474
|
+
async loadItemsFromCartContext(context) {
|
|
475
|
+
const cartId = this.extractCartId(context);
|
|
476
|
+
if (!cartId) {
|
|
477
|
+
return [];
|
|
478
|
+
}
|
|
479
|
+
return await this.loadCartItemsById(cartId);
|
|
480
|
+
}
|
|
481
|
+
async loadCartItemsById(cartId) {
|
|
482
|
+
const query = this.resolveQueryService();
|
|
483
|
+
if (!query?.graph) {
|
|
484
|
+
this.logger_?.error?.(`[ParcelFulfillment] Query service not available for cart ${cartId}. Cannot load items.`);
|
|
485
|
+
return [];
|
|
486
|
+
}
|
|
487
|
+
this.logger_?.info?.(`[ParcelFulfillment] Loading items for cart ${cartId} via query graph...`);
|
|
488
|
+
try {
|
|
489
|
+
const result = await query.graph({
|
|
490
|
+
entity: "cart",
|
|
491
|
+
fields: ["id", "items.*", "items.variant.*", "items.variant.product.*"],
|
|
492
|
+
filters: {
|
|
493
|
+
id: cartId,
|
|
494
|
+
},
|
|
495
|
+
});
|
|
496
|
+
const cart = result?.data?.[0];
|
|
497
|
+
this.logger_?.info?.(`[ParcelFulfillment] Query result: cart found=${Boolean(cart)}, items count=${cart?.items?.length ?? 0}`);
|
|
498
|
+
if (Array.isArray(cart?.items) && cart.items.length) {
|
|
499
|
+
return cart.items;
|
|
500
|
+
}
|
|
501
|
+
this.logger_?.warn?.(`[ParcelFulfillment] Cart ${cartId} resolved but contains no items.`);
|
|
502
|
+
return [];
|
|
503
|
+
}
|
|
504
|
+
catch (error) {
|
|
505
|
+
this.logger_?.error?.(`[ParcelFulfillment] Failed to load cart ${cartId} items: ${error?.message ?? error}. Stack: ${error?.stack ?? "N/A"}`);
|
|
506
|
+
return [];
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
extractCartId(context, data) {
|
|
510
|
+
if (!context && !data) {
|
|
511
|
+
return undefined;
|
|
512
|
+
}
|
|
513
|
+
const candidateValues = [
|
|
514
|
+
// Check data parameter first (from frontend request body)
|
|
515
|
+
data?.cart_id,
|
|
516
|
+
data?.cartId,
|
|
517
|
+
data?.cart?.id,
|
|
518
|
+
// Then check context
|
|
519
|
+
context?.cart_id,
|
|
520
|
+
context?.cartId,
|
|
521
|
+
context?.cart?.id,
|
|
522
|
+
context?.data?.cart_id,
|
|
523
|
+
context?.data?.cartId,
|
|
524
|
+
context?.data?.cart?.id,
|
|
525
|
+
context?.order?.cart_id,
|
|
526
|
+
context?.order?.cartId,
|
|
527
|
+
context?.order?.cart?.id,
|
|
528
|
+
context?.fulfillment?.cart_id,
|
|
529
|
+
context?.fulfillment?.cartId,
|
|
530
|
+
context?.fulfillment?.cart?.id,
|
|
531
|
+
];
|
|
532
|
+
for (const value of candidateValues) {
|
|
533
|
+
if (!value) {
|
|
534
|
+
continue;
|
|
535
|
+
}
|
|
536
|
+
const id = String(value).trim();
|
|
537
|
+
if (id) {
|
|
538
|
+
return id;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
const items = context?.items && Array.isArray(context?.items)
|
|
542
|
+
? context.items
|
|
543
|
+
: [];
|
|
544
|
+
const itemCandidate = items[0];
|
|
545
|
+
const fromItem = itemCandidate?.cart_id ??
|
|
546
|
+
itemCandidate?.cartId ??
|
|
547
|
+
itemCandidate?.cart?.id;
|
|
548
|
+
if (fromItem) {
|
|
549
|
+
return String(fromItem);
|
|
550
|
+
}
|
|
551
|
+
return undefined;
|
|
552
|
+
}
|
|
553
|
+
resolveContextItems(context) {
|
|
554
|
+
if (!context) {
|
|
555
|
+
return [];
|
|
556
|
+
}
|
|
557
|
+
const candidates = [
|
|
558
|
+
context.items,
|
|
559
|
+
context.cart?.items,
|
|
560
|
+
context.order?.items,
|
|
561
|
+
context.fulfillment?.items,
|
|
562
|
+
context.data?.items,
|
|
563
|
+
];
|
|
564
|
+
for (const list of candidates) {
|
|
565
|
+
if (Array.isArray(list) && list.length) {
|
|
566
|
+
return list;
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
if (Array.isArray(context.items)) {
|
|
570
|
+
return context.items;
|
|
571
|
+
}
|
|
572
|
+
return [];
|
|
573
|
+
}
|
|
412
574
|
extractProductId(lineItem) {
|
|
413
575
|
const productId = lineItem?.variant?.product_id ??
|
|
414
576
|
lineItem?.variant?.productId ??
|
|
@@ -420,6 +582,62 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
420
582
|
lineItem?.metadata?.product_id;
|
|
421
583
|
return productId ? String(productId) : undefined;
|
|
422
584
|
}
|
|
585
|
+
extractVariantId(lineItem) {
|
|
586
|
+
const variantId = lineItem?.variant_id ??
|
|
587
|
+
lineItem?.variantId ??
|
|
588
|
+
lineItem?.variant?.id ??
|
|
589
|
+
lineItem?.variant?.variant_id ??
|
|
590
|
+
lineItem?.metadata?.variant_id;
|
|
591
|
+
return variantId ? String(variantId) : undefined;
|
|
592
|
+
}
|
|
593
|
+
async loadVariantDimensions(items) {
|
|
594
|
+
const variantIds = Array.from(new Set(items
|
|
595
|
+
.map((item) => this.extractVariantId(item))
|
|
596
|
+
.filter((id) => Boolean(id))));
|
|
597
|
+
if (!variantIds.length) {
|
|
598
|
+
return new Map();
|
|
599
|
+
}
|
|
600
|
+
const query = this.resolveQueryService();
|
|
601
|
+
if (!query?.graph) {
|
|
602
|
+
return new Map();
|
|
603
|
+
}
|
|
604
|
+
try {
|
|
605
|
+
const result = await query.graph({
|
|
606
|
+
entity: "product_variant",
|
|
607
|
+
fields: [
|
|
608
|
+
"id",
|
|
609
|
+
"width",
|
|
610
|
+
"length",
|
|
611
|
+
"height",
|
|
612
|
+
"weight",
|
|
613
|
+
"product_id",
|
|
614
|
+
"product.id",
|
|
615
|
+
"product.width",
|
|
616
|
+
"product.length",
|
|
617
|
+
"product.height",
|
|
618
|
+
"product.weight",
|
|
619
|
+
],
|
|
620
|
+
filters: {
|
|
621
|
+
id: variantIds,
|
|
622
|
+
},
|
|
623
|
+
});
|
|
624
|
+
const dimensionMap = new Map();
|
|
625
|
+
for (const variant of result?.data ?? []) {
|
|
626
|
+
dimensionMap.set(String(variant.id), {
|
|
627
|
+
width: Number(variant.width) || Number(variant.product?.width) || 0,
|
|
628
|
+
length: Number(variant.length) || Number(variant.product?.length) || 0,
|
|
629
|
+
height: Number(variant.height) || Number(variant.product?.height) || 0,
|
|
630
|
+
weight: Number(variant.weight) || Number(variant.product?.weight) || 0,
|
|
631
|
+
product_id: variant.product_id ?? variant.product?.id,
|
|
632
|
+
});
|
|
633
|
+
}
|
|
634
|
+
return dimensionMap;
|
|
635
|
+
}
|
|
636
|
+
catch (error) {
|
|
637
|
+
this.logger_?.warn?.(`[ParcelFulfillment] Failed to preload variant dimensions: ${error?.message ?? error}`);
|
|
638
|
+
return new Map();
|
|
639
|
+
}
|
|
640
|
+
}
|
|
423
641
|
async loadProductStackableValues(items) {
|
|
424
642
|
const result = new Map();
|
|
425
643
|
if (!items?.length) {
|
|
@@ -431,19 +649,13 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
431
649
|
if (!productIds.length) {
|
|
432
650
|
return result;
|
|
433
651
|
}
|
|
434
|
-
|
|
435
|
-
if (!container) {
|
|
652
|
+
if (!this.container_) {
|
|
436
653
|
return result;
|
|
437
654
|
}
|
|
438
655
|
let productExtensionService;
|
|
439
656
|
try {
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
: true;
|
|
443
|
-
if (!canResolve) {
|
|
444
|
-
return result;
|
|
445
|
-
}
|
|
446
|
-
productExtensionService = container.resolve(PRODUCT_EXTENSION_MODULE);
|
|
657
|
+
// Resolve directly - Awilix container proxies all property access
|
|
658
|
+
productExtensionService = this.container_.resolve(PRODUCT_EXTENSION_MODULE);
|
|
447
659
|
}
|
|
448
660
|
catch (error) {
|
|
449
661
|
if (error?.name === "AwilixResolutionError" ||
|
|
@@ -475,6 +687,81 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
|
|
|
475
687
|
}
|
|
476
688
|
return result;
|
|
477
689
|
}
|
|
690
|
+
resolveQueryService() {
|
|
691
|
+
if (!this.container_) {
|
|
692
|
+
return null;
|
|
693
|
+
}
|
|
694
|
+
try {
|
|
695
|
+
// Resolve directly - Awilix container proxies all property access
|
|
696
|
+
const query = this.container_.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
697
|
+
if (!query?.graph) {
|
|
698
|
+
return null;
|
|
699
|
+
}
|
|
700
|
+
return query;
|
|
701
|
+
}
|
|
702
|
+
catch (error) {
|
|
703
|
+
this.logger_?.debug?.(`[ParcelFulfillment] Query resolver not available: ${error?.message ?? error}`);
|
|
704
|
+
return null;
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
resolveFallbackDimensions(provided) {
|
|
708
|
+
return (this.normalizeFallbackDimensions(provided) ??
|
|
709
|
+
this.loadFallbackDimensionsFromEnv() ??
|
|
710
|
+
DEFAULT_FALLBACK_DIMENSIONS);
|
|
711
|
+
}
|
|
712
|
+
loadFallbackDimensionsFromEnv() {
|
|
713
|
+
const width = this.toPositiveNumber(process.env.PARCEL_SHIPPING_FALLBACK_WIDTH_CM);
|
|
714
|
+
const length = this.toPositiveNumber(process.env.PARCEL_SHIPPING_FALLBACK_LENGTH_CM);
|
|
715
|
+
const height = this.toPositiveNumber(process.env.PARCEL_SHIPPING_FALLBACK_HEIGHT_CM);
|
|
716
|
+
const weight = this.toPositiveNumber(process.env.PARCEL_SHIPPING_FALLBACK_WEIGHT);
|
|
717
|
+
return this.normalizeFallbackDimensions({
|
|
718
|
+
width: width ?? undefined,
|
|
719
|
+
length: length ?? undefined,
|
|
720
|
+
height: height ?? undefined,
|
|
721
|
+
weight: weight ?? undefined,
|
|
722
|
+
});
|
|
723
|
+
}
|
|
724
|
+
normalizeFallbackDimensions(input) {
|
|
725
|
+
if (!input) {
|
|
726
|
+
return undefined;
|
|
727
|
+
}
|
|
728
|
+
const width = this.toPositiveNumber(input.width);
|
|
729
|
+
const length = this.toPositiveNumber(input.length);
|
|
730
|
+
const height = this.toPositiveNumber(input.height);
|
|
731
|
+
const weight = this.toPositiveNumber(input.weight);
|
|
732
|
+
if (!width && !length && !height && !weight) {
|
|
733
|
+
return undefined;
|
|
734
|
+
}
|
|
735
|
+
return {
|
|
736
|
+
width: width ?? DEFAULT_FALLBACK_DIMENSIONS.width,
|
|
737
|
+
length: length ?? DEFAULT_FALLBACK_DIMENSIONS.length,
|
|
738
|
+
height: height ?? DEFAULT_FALLBACK_DIMENSIONS.height,
|
|
739
|
+
weight: weight ?? DEFAULT_FALLBACK_DIMENSIONS.weight,
|
|
740
|
+
};
|
|
741
|
+
}
|
|
742
|
+
toPositiveNumber(value) {
|
|
743
|
+
if (value === undefined || value === null) {
|
|
744
|
+
return undefined;
|
|
745
|
+
}
|
|
746
|
+
const parsed = Number(value);
|
|
747
|
+
if (!Number.isFinite(parsed) || parsed <= 0) {
|
|
748
|
+
return undefined;
|
|
749
|
+
}
|
|
750
|
+
return parsed;
|
|
751
|
+
}
|
|
752
|
+
logFallbackDimensionsOnce(exampleItem) {
|
|
753
|
+
if (this.fallbackDimensionsWarned) {
|
|
754
|
+
return;
|
|
755
|
+
}
|
|
756
|
+
const identifier = exampleItem?.title ||
|
|
757
|
+
exampleItem?.variant?.title ||
|
|
758
|
+
exampleItem?.variant?.sku ||
|
|
759
|
+
"unknown item";
|
|
760
|
+
this.logger_?.warn?.(`[ParcelFulfillment] Missing product dimensions detected (e.g. ${identifier}). Using fallback ` +
|
|
761
|
+
`dimensions ${this.fallbackDimensions.length}x${this.fallbackDimensions.width}x${this.fallbackDimensions.height} ` +
|
|
762
|
+
`(cm) and fallback weight ${this.fallbackDimensions.weight}${this.weightUnit === "g" ? "g" : "kg"}. Update product or variant dimensions to improve shipping accuracy.`);
|
|
763
|
+
this.fallbackDimensionsWarned = true;
|
|
764
|
+
}
|
|
478
765
|
normalizeWeight(weight) {
|
|
479
766
|
if (!weight || !Number.isFinite(weight)) {
|
|
480
767
|
return 0;
|
|
@@ -533,4 +820,4 @@ exports.ParcelFulfillmentProvider = ParcelFulfillmentProvider;
|
|
|
533
820
|
ParcelFulfillmentProvider.identifier = "tha-shipping";
|
|
534
821
|
ParcelFulfillmentProvider.displayName = "Thai Parcel Shipping";
|
|
535
822
|
exports.default = ParcelFulfillmentProvider;
|
|
536
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyY2VsLWZ1bGZpbGxtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9wYXJjZWwtZnVsZmlsbG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBR21DO0FBTW5DLGdFQUFvRTtBQTZCcEUsTUFBTSx3QkFBd0IsR0FBRyxrQkFBa0IsQ0FBQztBQVFwRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLHlCQUEwQixTQUFRLDBDQUFrQztJQVUvRSxZQUNFLFNBQWlELEVBQ2pELFVBQW9DLEVBQUU7UUFFdEMsYUFBYTtRQUNiLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBRXBCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBNEIsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksdUJBQXVCLENBQUM7UUFDekQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsVUFBVSxDQUN0QixLQUFrQixFQUNsQixPQUFZLEVBQ1osV0FBd0IsRUFDeEIsV0FBd0I7UUFFeEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUNwQyxLQUFLLEVBQ0wsT0FBTyxFQUNQLFdBQVcsRUFDWCxXQUFXLENBQ1osQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFD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
|
|
823
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyY2VsLWZ1bGZpbGxtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9wYXJjZWwtZnVsZmlsbG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBSW1DO0FBTW5DLGdFQUFvRTtBQTZCcEUsTUFBTSx3QkFBd0IsR0FBRyxrQkFBa0IsQ0FBQztBQVFwRCxNQUFNLDJCQUEyQixHQUFvQjtJQUNuRCxLQUFLLEVBQUUsRUFBRTtJQUNULE1BQU0sRUFBRSxFQUFFO0lBQ1YsTUFBTSxFQUFFLEVBQUU7SUFDVixNQUFNLEVBQUUsR0FBRyxFQUFFLDZEQUE2RDtDQUMzRSxDQUFDO0FBU0Y7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSwwQ0FBa0M7SUFZL0UsWUFDRSxTQUFpRCxFQUNqRCxVQUFvQyxFQUFFO1FBRXRDLGFBQWE7UUFDYixLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQVBaLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQVN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQTRCLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLHVCQUF1QixDQUFDO1FBQ3pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUM7UUFDckQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FDdEQsT0FBTyxDQUFDLG1CQUFtQixDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLFVBQVUsQ0FDdEIsS0FBa0IsRUFDbEIsT0FBWSxFQUNaLFdBQXdCLEVBQ3hCLFdB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
|