payload 2.23.1 → 2.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/elements/Dropzone/index.d.ts +2 -1
- package/dist/admin/components/elements/Dropzone/index.d.ts.map +1 -1
- package/dist/admin/components/elements/Dropzone/index.js +15 -10
- package/dist/admin/components/elements/EditUpload/index.d.ts.map +1 -1
- package/dist/admin/components/elements/EditUpload/index.js +1 -1
- package/dist/admin/components/utilities/Auth/index.d.ts.map +1 -1
- package/dist/admin/components/utilities/Auth/index.js +64 -61
- package/dist/admin/components/utilities/Auth/types.d.ts +3 -1
- package/dist/admin/components/utilities/Auth/types.d.ts.map +1 -1
- package/dist/admin/components/utilities/Locale/index.d.ts.map +1 -1
- package/dist/admin/components/utilities/Locale/index.js +31 -20
- package/dist/admin/components/utilities/UploadEdits/index.d.ts +1 -0
- package/dist/admin/components/utilities/UploadEdits/index.d.ts.map +1 -1
- package/dist/admin/components/utilities/UploadEdits/index.js +6 -1
- package/dist/admin/components/views/Unauthorized/index.d.ts.map +1 -1
- package/dist/admin/components/views/Unauthorized/index.js +6 -4
- package/dist/admin/components/views/collections/Edit/Upload/index.d.ts.map +1 -1
- package/dist/admin/components/views/collections/Edit/Upload/index.js +105 -27
- package/dist/admin/components/views/collections/Edit/Upload/index.scss +6 -3
- package/dist/fields/hooks/beforeValidate/promise.d.ts +2 -1
- package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js +18 -6
- package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +2 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.js +18 -3
- package/dist/translations/ar.json +3 -1
- package/dist/translations/az.json +3 -1
- package/dist/translations/bg.json +3 -1
- package/dist/translations/cs.json +3 -1
- package/dist/translations/de.json +3 -1
- package/dist/translations/en.json +2 -0
- package/dist/translations/es.json +3 -1
- package/dist/translations/fa.json +3 -1
- package/dist/translations/fr.json +3 -1
- package/dist/translations/hr.json +3 -1
- package/dist/translations/hu.json +3 -1
- package/dist/translations/index.d.ts +60 -0
- package/dist/translations/index.d.ts.map +1 -1
- package/dist/translations/it.json +3 -1
- package/dist/translations/ja.json +3 -1
- package/dist/translations/ko.json +3 -1
- package/dist/translations/my.json +3 -1
- package/dist/translations/nb.json +3 -1
- package/dist/translations/nl.json +3 -1
- package/dist/translations/pl.json +3 -1
- package/dist/translations/pt.json +3 -1
- package/dist/translations/ro.json +3 -1
- package/dist/translations/rs-latin.json +3 -1
- package/dist/translations/rs.json +3 -1
- package/dist/translations/ru.json +3 -1
- package/dist/translations/sv.json +3 -1
- package/dist/translations/th.json +3 -1
- package/dist/translations/tr.json +3 -1
- package/dist/translations/translation-schema.json +6 -0
- package/dist/translations/ua.json +3 -1
- package/dist/translations/vi.json +3 -1
- package/dist/translations/zh-tw.json +3 -1
- package/dist/translations/zh.json +3 -1
- package/dist/uploads/generateFileData.js +4 -4
- package/package.json +1 -1
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"near": "perto"
|
|
284
284
|
},
|
|
285
285
|
"upload": {
|
|
286
|
+
"addImage": "Adicionar imagem",
|
|
286
287
|
"crop": "Cultura",
|
|
287
288
|
"cropToolDescription": "Arraste as bordas da área selecionada, desenhe uma nova área ou ajuste os valores abaixo.",
|
|
288
289
|
"dragAndDrop": "Arraste e solte um arquivo",
|
|
@@ -295,6 +296,7 @@
|
|
|
295
296
|
"height": "Altura",
|
|
296
297
|
"lessInfo": "Ver menos",
|
|
297
298
|
"moreInfo": "Ver mais",
|
|
299
|
+
"pasteURL": "Colar URL",
|
|
298
300
|
"previewSizes": "Tamanhos de Pré-visualização",
|
|
299
301
|
"selectCollectionToBrowse": "Selecione uma Coleção para Navegar",
|
|
300
302
|
"selectFile": "Selecione um arquivo",
|
|
@@ -381,4 +383,4 @@
|
|
|
381
383
|
"viewingVersions": "Visualizando versões para o/a {{entityLabel}} {{documentTitle}}",
|
|
382
384
|
"viewingVersionsGlobal": "`Visualizando versões para o global {{entityLabel}}"
|
|
383
385
|
}
|
|
384
|
-
}
|
|
386
|
+
}
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"near": "în apropiere de"
|
|
284
284
|
},
|
|
285
285
|
"upload": {
|
|
286
|
+
"addImage": "Adaugă imagine",
|
|
286
287
|
"crop": "Cultură",
|
|
287
288
|
"cropToolDescription": "Trageți colțurile zonei selectate, desenați o nouă zonă sau ajustați valorile de mai jos.",
|
|
288
289
|
"dragAndDrop": "Trageți și plasați un fișier",
|
|
@@ -295,6 +296,7 @@
|
|
|
295
296
|
"height": "Înălțime",
|
|
296
297
|
"lessInfo": "Mai puține informații",
|
|
297
298
|
"moreInfo": "Mai multe informații",
|
|
299
|
+
"pasteURL": "Lipește URL",
|
|
298
300
|
"previewSizes": "Dimensiuni Previzualizare",
|
|
299
301
|
"selectCollectionToBrowse": "Selectați o colecție pentru navigare",
|
|
300
302
|
"selectFile": "Selectați un fișier",
|
|
@@ -381,4 +383,4 @@
|
|
|
381
383
|
"viewingVersions": "Vizualizarea versiunilor pentru {{entityLabel}} {{documentTitle}}",
|
|
382
384
|
"viewingVersionsGlobal": "Vizualizarea versiunilor pentru globala {{entityLabel}}"
|
|
383
385
|
}
|
|
384
|
-
}
|
|
386
|
+
}
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"near": "blizu"
|
|
284
284
|
},
|
|
285
285
|
"upload": {
|
|
286
|
+
"addImage": "Dodaj sliku",
|
|
286
287
|
"crop": "Isecite sliku",
|
|
287
288
|
"cropToolDescription": "Prevucite uglove izabranog područja, nacrtajte novo područje ili prilagodite vrednosti ispod.",
|
|
288
289
|
"dragAndDrop": "Prevucite i ispustite datoteku",
|
|
@@ -295,6 +296,7 @@
|
|
|
295
296
|
"height": "Visina",
|
|
296
297
|
"lessInfo": "Manje informacija",
|
|
297
298
|
"moreInfo": "Više informacija",
|
|
299
|
+
"pasteURL": "Nalepi URL",
|
|
298
300
|
"previewSizes": "Veličine pregleda",
|
|
299
301
|
"selectCollectionToBrowse": "Odaberite kolekciju za pregled",
|
|
300
302
|
"selectFile": "Odaberite datoteku",
|
|
@@ -381,4 +383,4 @@
|
|
|
381
383
|
"viewingVersions": "Pregled verzija za {{entityLabel}} {{documentTitle}}",
|
|
382
384
|
"viewingVersionsGlobal": "Pregled verzije za globalni {{entityLabel}}"
|
|
383
385
|
}
|
|
384
|
-
}
|
|
386
|
+
}
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"near": "близу"
|
|
284
284
|
},
|
|
285
285
|
"upload": {
|
|
286
|
+
"addImage": "Додај слику",
|
|
286
287
|
"crop": "Исеците слику",
|
|
287
288
|
"cropToolDescription": "Превуците углове изабраног подручја, нацртајте ново подручје или прилагодите вредности испод.",
|
|
288
289
|
"dragAndDrop": "Превуците и испустите датотеку",
|
|
@@ -295,6 +296,7 @@
|
|
|
295
296
|
"height": "Висина",
|
|
296
297
|
"lessInfo": "Мање информација",
|
|
297
298
|
"moreInfo": "Више информација",
|
|
299
|
+
"pasteURL": "Налепи URL",
|
|
298
300
|
"previewSizes": "Величине прегледа",
|
|
299
301
|
"selectCollectionToBrowse": "Одаберите колекцију за преглед",
|
|
300
302
|
"selectFile": "Одаберите датотеку",
|
|
@@ -381,4 +383,4 @@
|
|
|
381
383
|
"viewingVersions": "Преглед верзија за {{entityLabel}} {{documentTitle}}",
|
|
382
384
|
"viewingVersionsGlobal": "Преглед верзије за глобални {{entityLabel}}"
|
|
383
385
|
}
|
|
384
|
-
}
|
|
386
|
+
}
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"near": "рядом"
|
|
284
284
|
},
|
|
285
285
|
"upload": {
|
|
286
|
+
"addImage": "Добавить изображение",
|
|
286
287
|
"crop": "Обрезать",
|
|
287
288
|
"cropToolDescription": "Перетащите углы выбранной области, нарисуйте новую область или отрегулируйте значения ниже.",
|
|
288
289
|
"dragAndDrop": "Перетащите файл",
|
|
@@ -295,6 +296,7 @@
|
|
|
295
296
|
"height": "Высота",
|
|
296
297
|
"lessInfo": "Меньше информации",
|
|
297
298
|
"moreInfo": "Больше информации",
|
|
299
|
+
"pasteURL": "Вставить URL",
|
|
298
300
|
"previewSizes": "Предварительный просмотр размеров",
|
|
299
301
|
"selectCollectionToBrowse": "Выберите Коллекцию для просмотра",
|
|
300
302
|
"selectFile": "Выберите файл",
|
|
@@ -381,4 +383,4 @@
|
|
|
381
383
|
"viewingVersions": "Просмотр версий для {{entityLabel}} {{documentTitle}}",
|
|
382
384
|
"viewingVersionsGlobal": "`Просмотр версии для глобальной Коллекции {{entityLabel}}"
|
|
383
385
|
}
|
|
384
|
-
}
|
|
386
|
+
}
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"near": "nära"
|
|
284
284
|
},
|
|
285
285
|
"upload": {
|
|
286
|
+
"addImage": "Lägg till bild",
|
|
286
287
|
"crop": "Skörd",
|
|
287
288
|
"cropToolDescription": "Dra i hörnen på det valda området, rita ett nytt område eller justera värdena nedan.",
|
|
288
289
|
"dragAndDrop": "Dra och släpp en fil",
|
|
@@ -295,6 +296,7 @@
|
|
|
295
296
|
"height": "Höjd",
|
|
296
297
|
"lessInfo": "Mindre info",
|
|
297
298
|
"moreInfo": "Mer info",
|
|
299
|
+
"pasteURL": "Klistra in URL",
|
|
298
300
|
"previewSizes": "Förhandsgranska Storlekar",
|
|
299
301
|
"selectCollectionToBrowse": "Välj en Samling att Bläddra i",
|
|
300
302
|
"selectFile": "Välj en fil",
|
|
@@ -381,4 +383,4 @@
|
|
|
381
383
|
"viewingVersions": "Visar versioner för {{entityLabel}} {{documentTitle}}",
|
|
382
384
|
"viewingVersionsGlobal": "Visa versioner för den globala {{entityLabel}}"
|
|
383
385
|
}
|
|
384
|
-
}
|
|
386
|
+
}
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"near": "ใกล้"
|
|
284
284
|
},
|
|
285
285
|
"upload": {
|
|
286
|
+
"addImage": "เพิ่มรูปภาพ",
|
|
286
287
|
"crop": "พืชผล",
|
|
287
288
|
"cropToolDescription": "ลากมุมของพื้นที่ที่เลือก, วาดพื้นที่ใหม่หรือปรับค่าด้านล่าง",
|
|
288
289
|
"dragAndDrop": "ลากและวางไฟล์",
|
|
@@ -295,6 +296,7 @@
|
|
|
295
296
|
"height": "ความสูง",
|
|
296
297
|
"lessInfo": "ซ่อนข้อมูล",
|
|
297
298
|
"moreInfo": "แสดงข้อมูล",
|
|
299
|
+
"pasteURL": "วาง URL",
|
|
298
300
|
"previewSizes": "ขนาดตัวอย่าง",
|
|
299
301
|
"selectCollectionToBrowse": "เลือก Collection ที่ต้องการค้นหา",
|
|
300
302
|
"selectFile": "เลือกไฟล์",
|
|
@@ -381,4 +383,4 @@
|
|
|
381
383
|
"viewingVersions": "กำลังดูเวอร์ชันของ {{entityLabel}} {{documentTitle}}",
|
|
382
384
|
"viewingVersionsGlobal": "กำลังดูเวอร์ชันของ global {{entityLabel}}"
|
|
383
385
|
}
|
|
384
|
-
}
|
|
386
|
+
}
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"near": "yakın"
|
|
284
284
|
},
|
|
285
285
|
"upload": {
|
|
286
|
+
"addImage": "Resim ekle",
|
|
286
287
|
"crop": "Kırp",
|
|
287
288
|
"cropToolDescription": "Seçili alanın köşelerini sürükleyin, yeni bir alan çizin veya aşağıdaki değerleri ayarlayın.",
|
|
288
289
|
"dragAndDrop": "Bir dosyayı sürükleyip bırakın",
|
|
@@ -295,6 +296,7 @@
|
|
|
295
296
|
"height": "Yükseklik",
|
|
296
297
|
"lessInfo": "Daha az bilgi",
|
|
297
298
|
"moreInfo": "Daha fazla bilgi",
|
|
299
|
+
"pasteURL": "URL yapıştır",
|
|
298
300
|
"previewSizes": "Önizleme Boyutları",
|
|
299
301
|
"selectCollectionToBrowse": "Gözatmak için bir Koleksiyon seçin",
|
|
300
302
|
"selectFile": "Bir dosya seçin",
|
|
@@ -381,4 +383,4 @@
|
|
|
381
383
|
"viewingVersions": "{{entityLabel}} {{documentTitle}} için sürümler görüntüleniyor",
|
|
382
384
|
"viewingVersionsGlobal": "Global {{entityLabel}} için sürümler görüntüleniyor"
|
|
383
385
|
}
|
|
384
|
-
}
|
|
386
|
+
}
|
|
@@ -1108,6 +1108,9 @@
|
|
|
1108
1108
|
"upload": {
|
|
1109
1109
|
"additionalProperties": false,
|
|
1110
1110
|
"properties": {
|
|
1111
|
+
"addImage": {
|
|
1112
|
+
"type": "string"
|
|
1113
|
+
},
|
|
1111
1114
|
"crop": {
|
|
1112
1115
|
"type": "string"
|
|
1113
1116
|
},
|
|
@@ -1144,6 +1147,9 @@
|
|
|
1144
1147
|
"moreInfo": {
|
|
1145
1148
|
"type": "string"
|
|
1146
1149
|
},
|
|
1150
|
+
"pasteURL": {
|
|
1151
|
+
"type": "string"
|
|
1152
|
+
},
|
|
1147
1153
|
"previewSizes": {
|
|
1148
1154
|
"type": "string"
|
|
1149
1155
|
},
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"near": "поруч"
|
|
284
284
|
},
|
|
285
285
|
"upload": {
|
|
286
|
+
"addImage": "Додати зображення",
|
|
286
287
|
"crop": "Обрізати",
|
|
287
288
|
"cropToolDescription": "Перетягніть кути обраної області, намалюйте нову область або скоригуйте значення нижче.",
|
|
288
289
|
"dragAndDrop": "Перемістіть файл",
|
|
@@ -295,6 +296,7 @@
|
|
|
295
296
|
"height": "Висота",
|
|
296
297
|
"lessInfo": "Менше інформації",
|
|
297
298
|
"moreInfo": "Більше інформації",
|
|
299
|
+
"pasteURL": "Вставити URL",
|
|
298
300
|
"previewSizes": "Розміри попереднього перегляду",
|
|
299
301
|
"selectCollectionToBrowse": "Виберіть колекцію для перегляду",
|
|
300
302
|
"selectFile": "Виберіть файл",
|
|
@@ -381,4 +383,4 @@
|
|
|
381
383
|
"viewingVersions": "Огляд версій для {{entityLabel}} {{documentTitle}}",
|
|
382
384
|
"viewingVersionsGlobal": "Огляд версій для глобальної колекції {{entityLabel}}"
|
|
383
385
|
}
|
|
384
|
-
}
|
|
386
|
+
}
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"near": "gần"
|
|
284
284
|
},
|
|
285
285
|
"upload": {
|
|
286
|
+
"addImage": "Thêm hình ảnh",
|
|
286
287
|
"crop": "Mùa vụ",
|
|
287
288
|
"cropToolDescription": "Kéo các góc của khu vực đã chọn, vẽ một khu vực mới hoặc điều chỉnh các giá trị dưới đây.",
|
|
288
289
|
"dragAndDrop": "Kéo và thả một tập tin",
|
|
@@ -295,6 +296,7 @@
|
|
|
295
296
|
"height": "Chiều cao",
|
|
296
297
|
"lessInfo": "Hiển thị ít hơn",
|
|
297
298
|
"moreInfo": "Thêm",
|
|
299
|
+
"pasteURL": "Dán URL",
|
|
298
300
|
"previewSizes": "Kích cỡ xem trước",
|
|
299
301
|
"selectCollectionToBrowse": "Chọn một Collection để tìm",
|
|
300
302
|
"selectFile": "Chọn một file",
|
|
@@ -381,4 +383,4 @@
|
|
|
381
383
|
"viewingVersions": "Xem những phiên bản của {{entityLabel}} {{documentTitle}}",
|
|
382
384
|
"viewingVersionsGlobal": "`Xem những phiên bản toàn thể (global) của {{entityLabel}}"
|
|
383
385
|
}
|
|
384
|
-
}
|
|
386
|
+
}
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"near": "附近"
|
|
284
284
|
},
|
|
285
285
|
"upload": {
|
|
286
|
+
"addImage": "添加圖片",
|
|
286
287
|
"crop": "裁剪",
|
|
287
288
|
"cropToolDescription": "拖動所選區域的角落,繪製一個新區域或調整以下的值。",
|
|
288
289
|
"dragAndDrop": "拖放一個檔案",
|
|
@@ -295,6 +296,7 @@
|
|
|
295
296
|
"height": "高度",
|
|
296
297
|
"lessInfo": "更少資訊",
|
|
297
298
|
"moreInfo": "更多資訊",
|
|
299
|
+
"pasteURL": "貼上網址",
|
|
298
300
|
"previewSizes": "預覽尺寸",
|
|
299
301
|
"selectCollectionToBrowse": "選擇一個要瀏覽的集合",
|
|
300
302
|
"selectFile": "選擇一個文件",
|
|
@@ -381,4 +383,4 @@
|
|
|
381
383
|
"viewingVersions": "正在查看{{entityLabel}} {{documentTitle}}的版本",
|
|
382
384
|
"viewingVersionsGlobal": "正在查看全域{{entityLabel}}的版本"
|
|
383
385
|
}
|
|
384
|
-
}
|
|
386
|
+
}
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"near": "附近"
|
|
284
284
|
},
|
|
285
285
|
"upload": {
|
|
286
|
+
"addImage": "添加图片",
|
|
286
287
|
"crop": "作物",
|
|
287
288
|
"cropToolDescription": "拖动所选区域的角落,绘制一个新区域或调整以下的值。",
|
|
288
289
|
"dragAndDrop": "拖放一个文件",
|
|
@@ -295,6 +296,7 @@
|
|
|
295
296
|
"height": "高度",
|
|
296
297
|
"lessInfo": "更少信息",
|
|
297
298
|
"moreInfo": "更多信息",
|
|
299
|
+
"pasteURL": "粘贴网址",
|
|
298
300
|
"previewSizes": "预览尺寸",
|
|
299
301
|
"selectCollectionToBrowse": "选择一个要浏览的集合",
|
|
300
302
|
"selectFile": "选择一个文件",
|
|
@@ -381,4 +383,4 @@
|
|
|
381
383
|
"viewingVersions": "正在查看{{entityLabel}} {{documentTitle}}的版本",
|
|
382
384
|
"viewingVersionsGlobal": "正在查看全局{{entityLabel}}的版本"
|
|
383
385
|
}
|
|
384
|
-
}
|
|
386
|
+
}
|
|
@@ -144,12 +144,12 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
144
144
|
mime = file.mimetype;
|
|
145
145
|
fileData.filesize = file.size;
|
|
146
146
|
if (file.name.includes('.')) {
|
|
147
|
-
ext = file.name.split('.').pop();
|
|
147
|
+
ext = file.name.split('.').pop().split('?')[0];
|
|
148
148
|
} else {
|
|
149
149
|
ext = '';
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
|
-
//
|
|
152
|
+
// Adjust SVG mime type. fromBuffer modifies it.
|
|
153
153
|
if (mime === 'application/xml' && ext === 'svg') mime = 'image/svg+xml';
|
|
154
154
|
fileData.mimeType = mime;
|
|
155
155
|
const baseFilename = (0, _sanitizefilename.default)(file.name.substring(0, file.name.lastIndexOf('.')) || file.name);
|
|
@@ -254,7 +254,7 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
254
254
|
*/ function parseUploadEditsFromReqOrIncomingData(args) {
|
|
255
255
|
const { data, operation, originalDoc, req } = args;
|
|
256
256
|
// Get intended focal point change from query string or incoming data
|
|
257
|
-
const
|
|
257
|
+
const uploadEdits = req.query?.uploadEdits && typeof req.query.uploadEdits === 'object' ? req.query.uploadEdits : {};
|
|
258
258
|
if (uploadEdits.focalPoint) return uploadEdits;
|
|
259
259
|
const incomingData = data;
|
|
260
260
|
const origDoc = originalDoc;
|
|
@@ -280,4 +280,4 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
280
280
|
return uploadEdits;
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVcGxvYWRlZEZpbGUgfSBmcm9tICdleHByZXNzLWZpbGV1cGxvYWQnXG5pbXBvcnQgdHlwZSB7IE91dHB1dEluZm8sIFNoYXJwLCBTaGFycE9wdGlvbnMgfSBmcm9tICdzaGFycCdcblxuaW1wb3J0IHsgZnJvbUJ1ZmZlciB9IGZyb20gJ2ZpbGUtdHlwZSdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1maWxlbmFtZSdcbmltcG9ydCBzaGFycCBmcm9tICdzaGFycCdcblxuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmlsZURhdGEsIEZpbGVUb1NhdmUsIFByb2JlZEltYWdlU2l6ZSwgVXBsb2FkRWRpdHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBGaWxlVXBsb2FkRXJyb3IsIE1pc3NpbmdGaWxlIH0gZnJvbSAnLi4vZXJyb3JzJ1xuaW1wb3J0IEZpbGVSZXRyaWV2YWxFcnJvciBmcm9tICcuLi9lcnJvcnMvRmlsZVJldHJpZXZhbEVycm9yJ1xuaW1wb3J0IGNhblJlc2l6ZUltYWdlIGZyb20gJy4vY2FuUmVzaXplSW1hZ2UnXG5pbXBvcnQgY3JvcEltYWdlIGZyb20gJy4vY3JvcEltYWdlJ1xuaW1wb3J0IHsgZ2V0RXh0ZXJuYWxGaWxlIH0gZnJvbSAnLi9nZXRFeHRlcm5hbEZpbGUnXG5pbXBvcnQgZ2V0RmlsZUJ5UGF0aCBmcm9tICcuL2dldEZpbGVCeVBhdGgnXG5pbXBvcnQgZ2V0SW1hZ2VTaXplIGZyb20gJy4vZ2V0SW1hZ2VTaXplJ1xuaW1wb3J0IGdldFNhZmVGaWxlTmFtZSBmcm9tICcuL2dldFNhZmVGaWxlbmFtZSdcbmltcG9ydCByZXNpemVBbmRUcmFuc2Zvcm1JbWFnZVNpemVzIGZyb20gJy4vaW1hZ2VSZXNpemVyJ1xuaW1wb3J0IGlzSW1hZ2UgZnJvbSAnLi9pc0ltYWdlJ1xuXG50eXBlIEFyZ3M8VD4gPSB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb25cbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcbiAgZGF0YTogVFxuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3JpZ2luYWxEb2M/OiBUXG4gIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXM/OiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgdGhyb3dPbk1pc3NpbmdGaWxlPzogYm9vbGVhblxufVxuXG50eXBlIFJlc3VsdDxUPiA9IFByb21pc2U8e1xuICBkYXRhOiBUXG4gIGZpbGVzOiBGaWxlVG9TYXZlW11cbn0+XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUZpbGVEYXRhID0gYXN5bmMgPFQ+KHtcbiAgY29sbGVjdGlvbjogeyBjb25maWc6IGNvbGxlY3Rpb25Db25maWcgfSxcbiAgY29uZmlnLFxuICBkYXRhLFxuICBvcGVyYXRpb24sXG4gIG9yaWdpbmFsRG9jLFxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzLFxuICByZXEsXG4gIHRocm93T25NaXNzaW5nRmlsZSxcbn06IEFyZ3M8VD4pOiBSZXN1bHQ8VD4gPT4ge1xuICBpZiAoIWNvbGxlY3Rpb25Db25maWcudXBsb2FkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBmaWxlczogW10sXG4gICAgfVxuICB9XG5cbiAgbGV0IGZpbGUgPSByZXEuZmlsZXM/LmZpbGUgfHwgdW5kZWZpbmVkXG5cbiAgY29uc3QgdXBsb2FkRWRpdHMgPSBwYXJzZVVwbG9hZEVkaXRzRnJvbVJlcU9ySW5jb21pbmdEYXRhKHtcbiAgICBkYXRhLFxuICAgIG9wZXJhdGlvbixcbiAgICBvcmlnaW5hbERvYyxcbiAgICByZXEsXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGRpc2FibGVMb2NhbFN0b3JhZ2UsXG4gICAgZm9jYWxQb2ludDogZm9jYWxQb2ludEVuYWJsZWQsXG4gICAgZm9ybWF0T3B0aW9ucyxcbiAgICBpbWFnZVNpemVzLFxuICAgIHJlc2l6ZU9wdGlvbnMsXG4gICAgc3RhdGljRGlyLFxuICAgIHRyaW1PcHRpb25zLFxuICB9ID0gY29sbGVjdGlvbkNvbmZpZy51cGxvYWRcblxuICBsZXQgc3RhdGljUGF0aCA9IHN0YXRpY0RpclxuICBpZiAoc3RhdGljRGlyLmluZGV4T2YoJy8nKSAhPT0gMCkge1xuICAgIHN0YXRpY1BhdGggPSBwYXRoLnJlc29sdmUoY29uZmlnLnBhdGhzLmNvbmZpZ0Rpciwgc3RhdGljRGlyKVxuICB9XG5cbiAgaWYgKCFmaWxlICYmIHVwbG9hZEVkaXRzICYmIGRhdGEpIHtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCB1cmwgfSA9IGRhdGEgYXMgRmlsZURhdGFcblxuICAgIHRyeSB7XG4gICAgICBpZiAodXJsICYmIHVybC5zdGFydHNXaXRoKCcvJykgJiYgIWRpc2FibGVMb2NhbFN0b3JhZ2UpIHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBgJHtzdGF0aWNQYXRofS8ke2ZpbGVuYW1lfWBcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBnZXRGaWxlQnlQYXRoKGZpbGVQYXRoKVxuICAgICAgICBmaWxlID0gcmVzcG9uc2UgYXMgVXBsb2FkZWRGaWxlXG4gICAgICAgIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMgPSB0cnVlXG4gICAgICB9IGVsc2UgaWYgKGZpbGVuYW1lICYmIHVybCkge1xuICAgICAgICBmaWxlID0gKGF3YWl0IGdldEV4dGVybmFsRmlsZSh7XG4gICAgICAgICAgZGF0YTogZGF0YSBhcyBGaWxlRGF0YSxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgdXBsb2FkQ29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnLnVwbG9hZCxcbiAgICAgICAgfSkpIGFzIFVwbG9hZGVkRmlsZVxuICAgICAgICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzID0gdHJ1ZVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBGaWxlUmV0cmlldmFsRXJyb3IocmVxLnQsIGVyci5tZXNzYWdlKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghZmlsZSkge1xuICAgIGlmICh0aHJvd09uTWlzc2luZ0ZpbGUpIHRocm93IG5ldyBNaXNzaW5nRmlsZShyZXEudClcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZmlsZXM6IFtdLFxuICAgIH1cbiAgfVxuXG4gIGlmICghZGlzYWJsZUxvY2FsU3RvcmFnZSkge1xuICAgIG1rZGlycC5zeW5jKHN0YXRpY1BhdGgpXG4gIH1cblxuICBsZXQgbmV3RGF0YSA9IGRhdGFcbiAgY29uc3QgZmlsZXNUb1NhdmU6IEZpbGVUb1NhdmVbXSA9IFtdXG4gIGNvbnN0IGZpbGVEYXRhOiBQYXJ0aWFsPEZpbGVEYXRhPiA9IHt9XG4gIGNvbnN0IGZpbGVJc0FuaW1hdGVkVHlwZSA9IFsnaW1hZ2UvYXZpZicsICdpbWFnZS9naWYnLCAnaW1hZ2Uvd2VicCddLmluY2x1ZGVzKGZpbGUubWltZXR5cGUpXG4gIGNvbnN0IGNyb3BEYXRhID1cbiAgICB0eXBlb2YgdXBsb2FkRWRpdHMgPT09ICdvYmplY3QnICYmICdjcm9wJyBpbiB1cGxvYWRFZGl0cyA/IHVwbG9hZEVkaXRzLmNyb3AgOiB1bmRlZmluZWRcblxuICB0cnkge1xuICAgIGNvbnN0IGZpbGVTdXBwb3J0c1Jlc2l6ZSA9IGNhblJlc2l6ZUltYWdlKGZpbGUubWltZXR5cGUpXG4gICAgbGV0IGZzU2FmZU5hbWU6IHN0cmluZ1xuICAgIGxldCBzaGFycEZpbGU6IFNoYXJwIHwgdW5kZWZpbmVkXG4gICAgbGV0IGRpbWVuc2lvbnM6IFByb2JlZEltYWdlU2l6ZSB8IHVuZGVmaW5lZFxuICAgIGxldCBmaWxlQnVmZmVyOiB7IGRhdGE6IEJ1ZmZlcjsgaW5mbzogT3V0cHV0SW5mbyB9XG4gICAgbGV0IGV4dFxuICAgIGxldCBtaW1lOiBzdHJpbmdcbiAgICBjb25zdCBmaWxlSGFzQWRqdXN0bWVudHMgPVxuICAgICAgZmlsZVN1cHBvcnRzUmVzaXplICYmXG4gICAgICBCb29sZWFuKHJlc2l6ZU9wdGlvbnMgfHwgZm9ybWF0T3B0aW9ucyB8fCBpbWFnZVNpemVzIHx8IHRyaW1PcHRpb25zIHx8IGZpbGUudGVtcEZpbGVQYXRoKVxuXG4gICAgY29uc3Qgc2hhcnBPcHRpb25zOiBTaGFycE9wdGlvbnMgPSB7fVxuXG4gICAgaWYgKGZpbGVJc0FuaW1hdGVkVHlwZSkgc2hhcnBPcHRpb25zLmFuaW1hdGVkID0gdHJ1ZVxuXG4gICAgaWYgKHNoYXJwICYmIChmaWxlSXNBbmltYXRlZFR5cGUgfHwgZmlsZUhhc0FkanVzdG1lbnRzKSkge1xuICAgICAgaWYgKGZpbGUudGVtcEZpbGVQYXRoKSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwKGZpbGUudGVtcEZpbGVQYXRoLCBzaGFycE9wdGlvbnMpLnJvdGF0ZSgpIC8vIHBhc3Mgcm90YXRlKCkgdG8gYXV0by1yb3RhdGUgYmFzZWQgb24gRVhJRiBkYXRhLiBodHRwczovL2dpdGh1Yi5jb20vcGF5bG9hZGNtcy9wYXlsb2FkL3B1bGwvMzA4MVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2hhcnBGaWxlID0gc2hhcnAoZmlsZS5kYXRhLCBzaGFycE9wdGlvbnMpLnJvdGF0ZSgpIC8vIHBhc3Mgcm90YXRlKCkgdG8gYXV0by1yb3RhdGUgYmFzZWQgb24gRVhJRiBkYXRhLiBodHRwczovL2dpdGh1Yi5jb20vcGF5bG9hZGNtcy9wYXlsb2FkL3B1bGwvMzA4MVxuICAgICAgfVxuXG4gICAgICBpZiAoZmlsZUhhc0FkanVzdG1lbnRzKSB7XG4gICAgICAgIGlmIChyZXNpemVPcHRpb25zKSB7XG4gICAgICAgICAgc2hhcnBGaWxlID0gc2hhcnBGaWxlLnJlc2l6ZShyZXNpemVPcHRpb25zKVxuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXRPcHRpb25zKSB7XG4gICAgICAgICAgc2hhcnBGaWxlID0gc2hhcnBGaWxlLnRvRm9ybWF0KGZvcm1hdE9wdGlvbnMuZm9ybWF0LCBmb3JtYXRPcHRpb25zLm9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyaW1PcHRpb25zKSB7XG4gICAgICAgICAgc2hhcnBGaWxlID0gc2hhcnBGaWxlLnRyaW0odHJpbU9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmlsZVN1cHBvcnRzUmVzaXplIHx8IGlzSW1hZ2UoZmlsZS5taW1ldHlwZSkpIHtcbiAgICAgIGRpbWVuc2lvbnMgPSBhd2FpdCBnZXRJbWFnZVNpemUoZmlsZSlcbiAgICAgIGZpbGVEYXRhLndpZHRoID0gZGltZW5zaW9ucy53aWR0aFxuICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gZGltZW5zaW9ucy5oZWlnaHRcbiAgICB9XG5cbiAgICBpZiAoc2hhcnBGaWxlKSB7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IHNoYXJwRmlsZS5tZXRhZGF0YSgpXG4gICAgICBmaWxlQnVmZmVyID0gYXdhaXQgc2hhcnBGaWxlLnRvQnVmZmVyKHsgcmVzb2x2ZVdpdGhPYmplY3Q6IHRydWUgfSlcbiAgICAgIDsoeyBleHQsIG1pbWUgfSA9IGF3YWl0IGZyb21CdWZmZXIoZmlsZUJ1ZmZlci5kYXRhKSkgLy8gVGhpcyBpcyBnZXR0aW5nIGFuIGluY29ycmVjdCBnaWYgaGVpZ2h0IGJhY2suXG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGZpbGVCdWZmZXIuaW5mby53aWR0aFxuICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gZmlsZUJ1ZmZlci5pbmZvLmhlaWdodFxuICAgICAgZmlsZURhdGEuZmlsZXNpemUgPSBmaWxlQnVmZmVyLmluZm8uc2l6ZVxuXG4gICAgICAvLyBBbmltYXRlZCBHSUZzICsgV2ViUCBhZ2dyZWdhdGUgdGhlIGhlaWdodCBmcm9tIGV2ZXJ5IGZyYW1lLCBzbyB3ZSBuZWVkIHRvIHVzZSBkaXZpZGUgYnkgbnVtYmVyIG9mIHBhZ2VzXG4gICAgICBpZiAobWV0YWRhdGEucGFnZXMpIHtcbiAgICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gZmlsZUJ1ZmZlci5pbmZvLmhlaWdodCAvIG1ldGFkYXRhLnBhZ2VzXG4gICAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gZmlsZUJ1ZmZlci5kYXRhLmxlbmd0aFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtaW1lID0gZmlsZS5taW1ldHlwZVxuICAgICAgZmlsZURhdGEuZmlsZXNpemUgPSBmaWxlLnNpemVcblxuICAgICAgaWYgKGZpbGUubmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgIGV4dCA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHQgPSAnJ1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkdXN0IFNWRyBtaW1lIHR5cGUuIGZyb21CdWZmZXIgbW9kaWZpZXMgaXQuXG4gICAgaWYgKG1pbWUgPT09ICdhcHBsaWNhdGlvbi94bWwnICYmIGV4dCA9PT0gJ3N2ZycpIG1pbWUgPSAnaW1hZ2Uvc3ZnK3htbCdcbiAgICBmaWxlRGF0YS5taW1lVHlwZSA9IG1pbWVcblxuICAgIGNvbnN0IGJhc2VGaWxlbmFtZSA9IHNhbml0aXplKGZpbGUubmFtZS5zdWJzdHJpbmcoMCwgZmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJykpIHx8IGZpbGUubmFtZSlcbiAgICBmc1NhZmVOYW1lID0gYCR7YmFzZUZpbGVuYW1lfSR7ZXh0ID8gYC4ke2V4dH1gIDogJyd9YFxuXG4gICAgaWYgKCFvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzKSB7XG4gICAgICBmc1NhZmVOYW1lID0gYXdhaXQgZ2V0U2FmZUZpbGVOYW1lKHtcbiAgICAgICAgY29sbGVjdGlvblNsdWc6IGNvbGxlY3Rpb25Db25maWcuc2x1ZyxcbiAgICAgICAgZGVzaXJlZEZpbGVuYW1lOiBmc1NhZmVOYW1lLFxuICAgICAgICByZXEsXG4gICAgICAgIHN0YXRpY1BhdGgsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZpbGVEYXRhLmZpbGVuYW1lID0gZnNTYWZlTmFtZVxuICAgIGxldCBmaWxlRm9yUmVzaXplID0gZmlsZVxuXG4gICAgaWYgKGNyb3BEYXRhKSB7XG4gICAgICBjb25zdCB7IGRhdGE6IGNyb3BwZWRJbWFnZSwgaW5mbyB9ID0gYXdhaXQgY3JvcEltYWdlKHsgY3JvcERhdGEsIGRpbWVuc2lvbnMsIGZpbGUgfSlcblxuICAgICAgZmlsZXNUb1NhdmUucHVzaCh7XG4gICAgICAgIGJ1ZmZlcjogY3JvcHBlZEltYWdlLFxuICAgICAgICBwYXRoOiBgJHtzdGF0aWNQYXRofS8ke2ZzU2FmZU5hbWV9YCxcbiAgICAgIH0pXG5cbiAgICAgIGZpbGVGb3JSZXNpemUgPSB7XG4gICAgICAgIC4uLmZpbGUsXG4gICAgICAgIGRhdGE6IGNyb3BwZWRJbWFnZSxcbiAgICAgICAgc2l6ZTogaW5mby5zaXplLFxuICAgICAgfVxuICAgICAgZmlsZURhdGEud2lkdGggPSBpbmZvLndpZHRoXG4gICAgICBmaWxlRGF0YS5oZWlnaHQgPSBpbmZvLmhlaWdodFxuICAgICAgaWYgKGZpbGVJc0FuaW1hdGVkVHlwZSkge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IHNoYXJwRmlsZS5tZXRhZGF0YSgpXG4gICAgICAgIGZpbGVEYXRhLmhlaWdodCA9IG1ldGFkYXRhLnBhZ2VzID8gaW5mby5oZWlnaHQgLyBtZXRhZGF0YS5wYWdlcyA6IGluZm8uaGVpZ2h0XG4gICAgICB9XG4gICAgICBmaWxlRGF0YS5maWxlc2l6ZSA9IGluZm8uc2l6ZVxuXG4gICAgICBpZiAoZmlsZS50ZW1wRmlsZVBhdGgpIHtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKGZpbGUudGVtcEZpbGVQYXRoLCBjcm9wcGVkSW1hZ2UpIC8vIHdyaXRlIGZpbGVCdWZmZXIgdG8gdGhlIHRlbXAgcGF0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxLmZpbGVzLmZpbGUgPSBmaWxlRm9yUmVzaXplXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbGVzVG9TYXZlLnB1c2goe1xuICAgICAgICBidWZmZXI6IGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhLFxuICAgICAgICBwYXRoOiBgJHtzdGF0aWNQYXRofS8ke2ZzU2FmZU5hbWV9YCxcbiAgICAgIH0pXG5cbiAgICAgIC8vIElmIHVzaW5nIHRlbXAgZmlsZXMgYW5kIHRoZSBpbWFnZSBpcyBiZWluZyByZXNpemVkLCB3cml0ZSB0aGUgZmlsZSB0byB0aGUgdGVtcCBwYXRoXG4gICAgICBpZiAoZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoZmlsZS50ZW1wRmlsZVBhdGgpIHtcbiAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZS50ZW1wRmlsZVBhdGgsIGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhKSAvLyB3cml0ZSBmaWxlQnVmZmVyIHRvIHRoZSB0ZW1wIHBhdGhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBBc3NpZ24gdGhlIF9wb3NzaWJseSBtb2RpZmllZF8gZmlsZSB0byB0aGUgcmVxdWVzdCBvYmplY3RcbiAgICAgICAgICByZXEuZmlsZXMuZmlsZSA9IHtcbiAgICAgICAgICAgIC4uLmZpbGUsXG4gICAgICAgICAgICBkYXRhOiBmaWxlQnVmZmVyPy5kYXRhIHx8IGZpbGUuZGF0YSxcbiAgICAgICAgICAgIHNpemU6IGZpbGVCdWZmZXI/LmluZm8uc2l6ZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmlsZVN1cHBvcnRzUmVzaXplICYmIChBcnJheS5pc0FycmF5KGltYWdlU2l6ZXMpIHx8IGZvY2FsUG9pbnRFbmFibGVkICE9PSBmYWxzZSkpIHtcbiAgICAgIHJlcS5wYXlsb2FkVXBsb2FkU2l6ZXMgPSB7fVxuICAgICAgY29uc3QgeyBmb2NhbFBvaW50LCBzaXplRGF0YSwgc2l6ZXNUb1NhdmUgfSA9IGF3YWl0IHJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMoe1xuICAgICAgICBjb25maWc6IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgIGRpbWVuc2lvbnM6ICFjcm9wRGF0YVxuICAgICAgICAgID8gZGltZW5zaW9uc1xuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAuLi5kaW1lbnNpb25zLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGZpbGVEYXRhLmhlaWdodCxcbiAgICAgICAgICAgICAgd2lkdGg6IGZpbGVEYXRhLndpZHRoLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgZmlsZTogZmlsZUZvclJlc2l6ZSxcbiAgICAgICAgbWltZVR5cGU6IGZpbGVEYXRhLm1pbWVUeXBlLFxuICAgICAgICByZXEsXG4gICAgICAgIHNhdmVkRmlsZW5hbWU6IGZzU2FmZU5hbWUgfHwgZmlsZS5uYW1lLFxuICAgICAgICBzdGF0aWNQYXRoLFxuICAgICAgICB1cGxvYWRFZGl0cyxcbiAgICAgIH0pXG5cbiAgICAgIGZpbGVEYXRhLnNpemVzID0gc2l6ZURhdGFcbiAgICAgIGZpbGVEYXRhLmZvY2FsWCA9IGZvY2FsUG9pbnQ/LnhcbiAgICAgIGZpbGVEYXRhLmZvY2FsWSA9IGZvY2FsUG9pbnQ/LnlcbiAgICAgIGZpbGVzVG9TYXZlLnB1c2goLi4uc2l6ZXNUb1NhdmUpXG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXEucGF5bG9hZC5sb2dnZXIuZXJyb3IoeyBlcnIsIG1zZzogJ0Vycm9yIHVwbG9hZGluZyBmaWxlJyB9KVxuICAgIHRocm93IG5ldyBGaWxlVXBsb2FkRXJyb3IocmVxLnQpXG4gIH1cblxuICBuZXdEYXRhID0ge1xuICAgIC4uLm5ld0RhdGEsXG4gICAgLi4uZmlsZURhdGEsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRhdGE6IG5ld0RhdGEsXG4gICAgZmlsZXM6IGZpbGVzVG9TYXZlLFxuICB9XG59XG5cbi8qKlxuICogUGFyc2UgdXBsb2FkIGVkaXRzIGZyb20gcmVxIG9yIGluY29taW5nIGRhdGFcbiAqL1xuZnVuY3Rpb24gcGFyc2VVcGxvYWRFZGl0c0Zyb21SZXFPckluY29taW5nRGF0YShhcmdzOiB7XG4gIGRhdGE6IHVua25vd25cbiAgb3BlcmF0aW9uOiAnY3JlYXRlJyB8ICd1cGRhdGUnXG4gIG9yaWdpbmFsRG9jOiB1bmtub3duXG4gIHJlcTogUGF5bG9hZFJlcXVlc3Rcbn0pOiBVcGxvYWRFZGl0cyB7XG4gIGNvbnN0IHsgZGF0YSwgb3BlcmF0aW9uLCBvcmlnaW5hbERvYywgcmVxIH0gPSBhcmdzXG5cbiAgLy8gR2V0IGludGVuZGVkIGZvY2FsIHBvaW50IGNoYW5nZSBmcm9tIHF1ZXJ5IHN0cmluZyBvciBpbmNvbWluZyBkYXRhXG4gIGNvbnN0IHtcbiAgICB1cGxvYWRFZGl0cyA9IHt9LFxuICB9OiB7XG4gICAgdXBsb2FkRWRpdHM/OiBVcGxvYWRFZGl0c1xuICB9ID0gcmVxLnF1ZXJ5IHx8IHt9XG5cbiAgaWYgKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQpIHJldHVybiB1cGxvYWRFZGl0c1xuXG4gIGNvbnN0IGluY29taW5nRGF0YSA9IGRhdGEgYXMgRmlsZURhdGFcbiAgY29uc3Qgb3JpZ0RvYyA9IG9yaWdpbmFsRG9jIGFzIEZpbGVEYXRhXG5cbiAgLy8gSWYgbm8gY2hhbmdlIGluIGZvY2FsIHBvaW50LCByZXR1cm4gdW5kZWZpbmVkLlxuICAvLyBUaGlzIHByZXZlbnRzIGEgcmVmb2NhbCBvcGVyYXRpb24gdHJpZ2dlcmVkIGZyb20gYWRtaW4sIGJlY2F1c2UgaXQgYWx3YXlzIHNlbmRzIHRoZSBmb2NhbCBwb2ludC5cbiAgaWYgKG9yaWdEb2MgJiYgaW5jb21pbmdEYXRhLmZvY2FsWCA9PT0gb3JpZ0RvYy5mb2NhbFggJiYgaW5jb21pbmdEYXRhLmZvY2FsWSA9PT0gb3JpZ0RvYy5mb2NhbFkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBpZiAoaW5jb21pbmdEYXRhLmZvY2FsWCAmJiBpbmNvbWluZ0RhdGEuZm9jYWxZKSB7XG4gICAgdXBsb2FkRWRpdHMuZm9jYWxQb2ludCA9IHtcbiAgICAgIHg6IGluY29taW5nRGF0YS5mb2NhbFgsXG4gICAgICB5OiBpbmNvbWluZ0RhdGEuZm9jYWxZLFxuICAgIH1cbiAgICByZXR1cm4gdXBsb2FkRWRpdHNcbiAgfVxuXG4gIC8vIElmIG5vIGZvY2FsIHBvaW50IGlzIHNldCwgZGVmYXVsdCB0byBjZW50ZXJcbiAgaWYgKG9wZXJhdGlvbiA9PT0gJ2NyZWF0ZScpIHtcbiAgICB1cGxvYWRFZGl0cy5mb2NhbFBvaW50ID0ge1xuICAgICAgeDogNTAsXG4gICAgICB5OiA1MCxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVwbG9hZEVkaXRzXG59XG4iXSwibmFtZXMiOlsiZ2VuZXJhdGVGaWxlRGF0YSIsImNvbGxlY3Rpb24iLCJjb25maWciLCJjb2xsZWN0aW9uQ29uZmlnIiwiZGF0YSIsIm9wZXJhdGlvbiIsIm9yaWdpbmFsRG9jIiwib3ZlcndyaXRlRXhpc3RpbmdGaWxlcyIsInJlcSIsInRocm93T25NaXNzaW5nRmlsZSIsInVwbG9hZCIsImZpbGVzIiwiZmlsZSIsInVuZGVmaW5lZCIsInVwbG9hZEVkaXRzIiwicGFyc2VVcGxvYWRFZGl0c0Zyb21SZXFPckluY29taW5nRGF0YSIsImRpc2FibGVMb2NhbFN0b3JhZ2UiLCJmb2NhbFBvaW50IiwiZm9jYWxQb2ludEVuYWJsZWQiLCJmb3JtYXRPcHRpb25zIiwiaW1hZ2VTaXplcyIsInJlc2l6ZU9wdGlvbnMiLCJzdGF0aWNEaXIiLCJ0cmltT3B0aW9ucyIsInN0YXRpY1BhdGgiLCJpbmRleE9mIiwicGF0aCIsInJlc29sdmUiLCJwYXRocyIsImNvbmZpZ0RpciIsImZpbGVuYW1lIiwidXJsIiwic3RhcnRzV2l0aCIsImZpbGVQYXRoIiwicmVzcG9uc2UiLCJnZXRGaWxlQnlQYXRoIiwiZ2V0RXh0ZXJuYWxGaWxlIiwidXBsb2FkQ29uZmlnIiwiZXJyIiwiRXJyb3IiLCJGaWxlUmV0cmlldmFsRXJyb3IiLCJ0IiwibWVzc2FnZSIsIk1pc3NpbmdGaWxlIiwibWtkaXJwIiwic3luYyIsIm5ld0RhdGEiLCJmaWxlc1RvU2F2ZSIsImZpbGVEYXRhIiwiZmlsZUlzQW5pbWF0ZWRUeXBlIiwiaW5jbHVkZXMiLCJtaW1ldHlwZSIsImNyb3BEYXRhIiwiY3JvcCIsImZpbGVTdXBwb3J0c1Jlc2l6ZSIsImNhblJlc2l6ZUltYWdlIiwiZnNTYWZlTmFtZSIsInNoYXJwRmlsZSIsImRpbWVuc2lvbnMiLCJmaWxlQnVmZmVyIiwiZXh0IiwibWltZSIsImZpbGVIYXNBZGp1c3RtZW50cyIsIkJvb2xlYW4iLCJ0ZW1wRmlsZVBhdGgiLCJzaGFycE9wdGlvbnMiLCJhbmltYXRlZCIsInNoYXJwIiwicm90YXRlIiwicmVzaXplIiwidG9Gb3JtYXQiLCJmb3JtYXQiLCJvcHRpb25zIiwidHJpbSIsImlzSW1hZ2UiLCJnZXRJbWFnZVNpemUiLCJ3aWR0aCIsImhlaWdodCIsIm1ldGFkYXRhIiwidG9CdWZmZXIiLCJyZXNvbHZlV2l0aE9iamVjdCIsImZyb21CdWZmZXIiLCJpbmZvIiwiZmlsZXNpemUiLCJzaXplIiwicGFnZXMiLCJsZW5ndGgiLCJuYW1lIiwic3BsaXQiLCJwb3AiLCJtaW1lVHlwZSIsImJhc2VGaWxlbmFtZSIsInNhbml0aXplIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJnZXRTYWZlRmlsZU5hbWUiLCJjb2xsZWN0aW9uU2x1ZyIsInNsdWciLCJkZXNpcmVkRmlsZW5hbWUiLCJmaWxlRm9yUmVzaXplIiwiY3JvcHBlZEltYWdlIiwiY3JvcEltYWdlIiwicHVzaCIsImJ1ZmZlciIsImZzIiwicHJvbWlzZXMiLCJ3cml0ZUZpbGUiLCJBcnJheSIsImlzQXJyYXkiLCJwYXlsb2FkVXBsb2FkU2l6ZXMiLCJzaXplRGF0YSIsInNpemVzVG9TYXZlIiwicmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyIsInNhdmVkRmlsZW5hbWUiLCJzaXplcyIsImZvY2FsWCIsIngiLCJmb2NhbFkiLCJ5IiwicGF5bG9hZCIsImxvZ2dlciIsImVycm9yIiwibXNnIiwiRmlsZVVwbG9hZEVycm9yIiwiYXJncyIsInF1ZXJ5IiwiaW5jb21pbmdEYXRhIiwib3JpZ0RvYyJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7OytCQTBDYUE7OztlQUFBQTs7OzBCQXZDYzsyREFDWjsrREFDSTs2REFDRjt5RUFDSTs4REFDSDt3QkFPMkI7MkVBQ2Q7dUVBQ0o7a0VBQ0w7aUNBQ1U7c0VBQ047cUVBQ0Q7d0VBQ0c7cUVBQ2E7Z0VBQ3JCOzs7Ozs7QUFrQmIsTUFBTUEsbUJBQW1CLE9BQVUsRUFDeENDLFlBQVksRUFBRUMsUUFBUUMsZ0JBQWdCLEVBQUUsRUFDeENELE1BQU0sRUFDTkUsSUFBSSxFQUNKQyxTQUFTLEVBQ1RDLFdBQVcsRUFDWEMsc0JBQXNCLEVBQ3RCQyxHQUFHLEVBQ0hDLGtCQUFrQixFQUNWO0lBQ1IsSUFB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
|
|
283
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVcGxvYWRlZEZpbGUgfSBmcm9tICdleHByZXNzLWZpbGV1cGxvYWQnXG5pbXBvcnQgdHlwZSB7IE91dHB1dEluZm8sIFNoYXJwLCBTaGFycE9wdGlvbnMgfSBmcm9tICdzaGFycCdcblxuaW1wb3J0IHsgZnJvbUJ1ZmZlciB9IGZyb20gJ2ZpbGUtdHlwZSdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1maWxlbmFtZSdcbmltcG9ydCBzaGFycCBmcm9tICdzaGFycCdcblxuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmlsZURhdGEsIEZpbGVUb1NhdmUsIFByb2JlZEltYWdlU2l6ZSwgVXBsb2FkRWRpdHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBGaWxlVXBsb2FkRXJyb3IsIE1pc3NpbmdGaWxlIH0gZnJvbSAnLi4vZXJyb3JzJ1xuaW1wb3J0IEZpbGVSZXRyaWV2YWxFcnJvciBmcm9tICcuLi9lcnJvcnMvRmlsZVJldHJpZXZhbEVycm9yJ1xuaW1wb3J0IGNhblJlc2l6ZUltYWdlIGZyb20gJy4vY2FuUmVzaXplSW1hZ2UnXG5pbXBvcnQgY3JvcEltYWdlIGZyb20gJy4vY3JvcEltYWdlJ1xuaW1wb3J0IHsgZ2V0RXh0ZXJuYWxGaWxlIH0gZnJvbSAnLi9nZXRFeHRlcm5hbEZpbGUnXG5pbXBvcnQgZ2V0RmlsZUJ5UGF0aCBmcm9tICcuL2dldEZpbGVCeVBhdGgnXG5pbXBvcnQgZ2V0SW1hZ2VTaXplIGZyb20gJy4vZ2V0SW1hZ2VTaXplJ1xuaW1wb3J0IGdldFNhZmVGaWxlTmFtZSBmcm9tICcuL2dldFNhZmVGaWxlbmFtZSdcbmltcG9ydCByZXNpemVBbmRUcmFuc2Zvcm1JbWFnZVNpemVzIGZyb20gJy4vaW1hZ2VSZXNpemVyJ1xuaW1wb3J0IGlzSW1hZ2UgZnJvbSAnLi9pc0ltYWdlJ1xuXG50eXBlIEFyZ3M8VD4gPSB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb25cbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcbiAgZGF0YTogVFxuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3JpZ2luYWxEb2M/OiBUXG4gIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXM/OiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgdGhyb3dPbk1pc3NpbmdGaWxlPzogYm9vbGVhblxufVxuXG50eXBlIFJlc3VsdDxUPiA9IFByb21pc2U8e1xuICBkYXRhOiBUXG4gIGZpbGVzOiBGaWxlVG9TYXZlW11cbn0+XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUZpbGVEYXRhID0gYXN5bmMgPFQ+KHtcbiAgY29sbGVjdGlvbjogeyBjb25maWc6IGNvbGxlY3Rpb25Db25maWcgfSxcbiAgY29uZmlnLFxuICBkYXRhLFxuICBvcGVyYXRpb24sXG4gIG9yaWdpbmFsRG9jLFxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzLFxuICByZXEsXG4gIHRocm93T25NaXNzaW5nRmlsZSxcbn06IEFyZ3M8VD4pOiBSZXN1bHQ8VD4gPT4ge1xuICBpZiAoIWNvbGxlY3Rpb25Db25maWcudXBsb2FkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBmaWxlczogW10sXG4gICAgfVxuICB9XG5cbiAgbGV0IGZpbGUgPSByZXEuZmlsZXM/LmZpbGUgfHwgdW5kZWZpbmVkXG5cbiAgY29uc3QgdXBsb2FkRWRpdHMgPSBwYXJzZVVwbG9hZEVkaXRzRnJvbVJlcU9ySW5jb21pbmdEYXRhKHtcbiAgICBkYXRhLFxuICAgIG9wZXJhdGlvbixcbiAgICBvcmlnaW5hbERvYyxcbiAgICByZXEsXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGRpc2FibGVMb2NhbFN0b3JhZ2UsXG4gICAgZm9jYWxQb2ludDogZm9jYWxQb2ludEVuYWJsZWQsXG4gICAgZm9ybWF0T3B0aW9ucyxcbiAgICBpbWFnZVNpemVzLFxuICAgIHJlc2l6ZU9wdGlvbnMsXG4gICAgc3RhdGljRGlyLFxuICAgIHRyaW1PcHRpb25zLFxuICB9ID0gY29sbGVjdGlvbkNvbmZpZy51cGxvYWRcblxuICBsZXQgc3RhdGljUGF0aCA9IHN0YXRpY0RpclxuICBpZiAoc3RhdGljRGlyLmluZGV4T2YoJy8nKSAhPT0gMCkge1xuICAgIHN0YXRpY1BhdGggPSBwYXRoLnJlc29sdmUoY29uZmlnLnBhdGhzLmNvbmZpZ0Rpciwgc3RhdGljRGlyKVxuICB9XG5cbiAgaWYgKCFmaWxlICYmIHVwbG9hZEVkaXRzICYmIGRhdGEpIHtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCB1cmwgfSA9IGRhdGEgYXMgRmlsZURhdGFcblxuICAgIHRyeSB7XG4gICAgICBpZiAodXJsICYmIHVybC5zdGFydHNXaXRoKCcvJykgJiYgIWRpc2FibGVMb2NhbFN0b3JhZ2UpIHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBgJHtzdGF0aWNQYXRofS8ke2ZpbGVuYW1lfWBcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBnZXRGaWxlQnlQYXRoKGZpbGVQYXRoKVxuICAgICAgICBmaWxlID0gcmVzcG9uc2UgYXMgVXBsb2FkZWRGaWxlXG4gICAgICAgIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMgPSB0cnVlXG4gICAgICB9IGVsc2UgaWYgKGZpbGVuYW1lICYmIHVybCkge1xuICAgICAgICBmaWxlID0gKGF3YWl0IGdldEV4dGVybmFsRmlsZSh7XG4gICAgICAgICAgZGF0YTogZGF0YSBhcyBGaWxlRGF0YSxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgdXBsb2FkQ29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnLnVwbG9hZCxcbiAgICAgICAgfSkpIGFzIFVwbG9hZGVkRmlsZVxuICAgICAgICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzID0gdHJ1ZVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBGaWxlUmV0cmlldmFsRXJyb3IocmVxLnQsIGVyci5tZXNzYWdlKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghZmlsZSkge1xuICAgIGlmICh0aHJvd09uTWlzc2luZ0ZpbGUpIHRocm93IG5ldyBNaXNzaW5nRmlsZShyZXEudClcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZmlsZXM6IFtdLFxuICAgIH1cbiAgfVxuXG4gIGlmICghZGlzYWJsZUxvY2FsU3RvcmFnZSkge1xuICAgIG1rZGlycC5zeW5jKHN0YXRpY1BhdGgpXG4gIH1cblxuICBsZXQgbmV3RGF0YSA9IGRhdGFcbiAgY29uc3QgZmlsZXNUb1NhdmU6IEZpbGVUb1NhdmVbXSA9IFtdXG4gIGNvbnN0IGZpbGVEYXRhOiBQYXJ0aWFsPEZpbGVEYXRhPiA9IHt9XG4gIGNvbnN0IGZpbGVJc0FuaW1hdGVkVHlwZSA9IFsnaW1hZ2UvYXZpZicsICdpbWFnZS9naWYnLCAnaW1hZ2Uvd2VicCddLmluY2x1ZGVzKGZpbGUubWltZXR5cGUpXG4gIGNvbnN0IGNyb3BEYXRhID1cbiAgICB0eXBlb2YgdXBsb2FkRWRpdHMgPT09ICdvYmplY3QnICYmICdjcm9wJyBpbiB1cGxvYWRFZGl0cyA/IHVwbG9hZEVkaXRzLmNyb3AgOiB1bmRlZmluZWRcblxuICB0cnkge1xuICAgIGNvbnN0IGZpbGVTdXBwb3J0c1Jlc2l6ZSA9IGNhblJlc2l6ZUltYWdlKGZpbGUubWltZXR5cGUpXG4gICAgbGV0IGZzU2FmZU5hbWU6IHN0cmluZ1xuICAgIGxldCBzaGFycEZpbGU6IFNoYXJwIHwgdW5kZWZpbmVkXG4gICAgbGV0IGRpbWVuc2lvbnM6IFByb2JlZEltYWdlU2l6ZSB8IHVuZGVmaW5lZFxuICAgIGxldCBmaWxlQnVmZmVyOiB7IGRhdGE6IEJ1ZmZlcjsgaW5mbzogT3V0cHV0SW5mbyB9XG4gICAgbGV0IGV4dFxuICAgIGxldCBtaW1lOiBzdHJpbmdcbiAgICBjb25zdCBmaWxlSGFzQWRqdXN0bWVudHMgPVxuICAgICAgZmlsZVN1cHBvcnRzUmVzaXplICYmXG4gICAgICBCb29sZWFuKHJlc2l6ZU9wdGlvbnMgfHwgZm9ybWF0T3B0aW9ucyB8fCBpbWFnZVNpemVzIHx8IHRyaW1PcHRpb25zIHx8IGZpbGUudGVtcEZpbGVQYXRoKVxuXG4gICAgY29uc3Qgc2hhcnBPcHRpb25zOiBTaGFycE9wdGlvbnMgPSB7fVxuXG4gICAgaWYgKGZpbGVJc0FuaW1hdGVkVHlwZSkgc2hhcnBPcHRpb25zLmFuaW1hdGVkID0gdHJ1ZVxuXG4gICAgaWYgKHNoYXJwICYmIChmaWxlSXNBbmltYXRlZFR5cGUgfHwgZmlsZUhhc0FkanVzdG1lbnRzKSkge1xuICAgICAgaWYgKGZpbGUudGVtcEZpbGVQYXRoKSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwKGZpbGUudGVtcEZpbGVQYXRoLCBzaGFycE9wdGlvbnMpLnJvdGF0ZSgpIC8vIHBhc3Mgcm90YXRlKCkgdG8gYXV0by1yb3RhdGUgYmFzZWQgb24gRVhJRiBkYXRhLiBodHRwczovL2dpdGh1Yi5jb20vcGF5bG9hZGNtcy9wYXlsb2FkL3B1bGwvMzA4MVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2hhcnBGaWxlID0gc2hhcnAoZmlsZS5kYXRhLCBzaGFycE9wdGlvbnMpLnJvdGF0ZSgpIC8vIHBhc3Mgcm90YXRlKCkgdG8gYXV0by1yb3RhdGUgYmFzZWQgb24gRVhJRiBkYXRhLiBodHRwczovL2dpdGh1Yi5jb20vcGF5bG9hZGNtcy9wYXlsb2FkL3B1bGwvMzA4MVxuICAgICAgfVxuXG4gICAgICBpZiAoZmlsZUhhc0FkanVzdG1lbnRzKSB7XG4gICAgICAgIGlmIChyZXNpemVPcHRpb25zKSB7XG4gICAgICAgICAgc2hhcnBGaWxlID0gc2hhcnBGaWxlLnJlc2l6ZShyZXNpemVPcHRpb25zKVxuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXRPcHRpb25zKSB7XG4gICAgICAgICAgc2hhcnBGaWxlID0gc2hhcnBGaWxlLnRvRm9ybWF0KGZvcm1hdE9wdGlvbnMuZm9ybWF0LCBmb3JtYXRPcHRpb25zLm9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyaW1PcHRpb25zKSB7XG4gICAgICAgICAgc2hhcnBGaWxlID0gc2hhcnBGaWxlLnRyaW0odHJpbU9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmlsZVN1cHBvcnRzUmVzaXplIHx8IGlzSW1hZ2UoZmlsZS5taW1ldHlwZSkpIHtcbiAgICAgIGRpbWVuc2lvbnMgPSBhd2FpdCBnZXRJbWFnZVNpemUoZmlsZSlcbiAgICAgIGZpbGVEYXRhLndpZHRoID0gZGltZW5zaW9ucy53aWR0aFxuICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gZGltZW5zaW9ucy5oZWlnaHRcbiAgICB9XG5cbiAgICBpZiAoc2hhcnBGaWxlKSB7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IHNoYXJwRmlsZS5tZXRhZGF0YSgpXG4gICAgICBmaWxlQnVmZmVyID0gYXdhaXQgc2hhcnBGaWxlLnRvQnVmZmVyKHsgcmVzb2x2ZVdpdGhPYmplY3Q6IHRydWUgfSlcbiAgICAgIDsoeyBleHQsIG1pbWUgfSA9IGF3YWl0IGZyb21CdWZmZXIoZmlsZUJ1ZmZlci5kYXRhKSkgLy8gVGhpcyBpcyBnZXR0aW5nIGFuIGluY29ycmVjdCBnaWYgaGVpZ2h0IGJhY2suXG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGZpbGVCdWZmZXIuaW5mby53aWR0aFxuICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gZmlsZUJ1ZmZlci5pbmZvLmhlaWdodFxuICAgICAgZmlsZURhdGEuZmlsZXNpemUgPSBmaWxlQnVmZmVyLmluZm8uc2l6ZVxuXG4gICAgICAvLyBBbmltYXRlZCBHSUZzICsgV2ViUCBhZ2dyZWdhdGUgdGhlIGhlaWdodCBmcm9tIGV2ZXJ5IGZyYW1lLCBzbyB3ZSBuZWVkIHRvIHVzZSBkaXZpZGUgYnkgbnVtYmVyIG9mIHBhZ2VzXG4gICAgICBpZiAobWV0YWRhdGEucGFnZXMpIHtcbiAgICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gZmlsZUJ1ZmZlci5pbmZvLmhlaWdodCAvIG1ldGFkYXRhLnBhZ2VzXG4gICAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gZmlsZUJ1ZmZlci5kYXRhLmxlbmd0aFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtaW1lID0gZmlsZS5taW1ldHlwZVxuICAgICAgZmlsZURhdGEuZmlsZXNpemUgPSBmaWxlLnNpemVcblxuICAgICAgaWYgKGZpbGUubmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgIGV4dCA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpLnNwbGl0KCc/JylbMF1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4dCA9ICcnXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRqdXN0IFNWRyBtaW1lIHR5cGUuIGZyb21CdWZmZXIgbW9kaWZpZXMgaXQuXG4gICAgaWYgKG1pbWUgPT09ICdhcHBsaWNhdGlvbi94bWwnICYmIGV4dCA9PT0gJ3N2ZycpIG1pbWUgPSAnaW1hZ2Uvc3ZnK3htbCdcbiAgICBmaWxlRGF0YS5taW1lVHlwZSA9IG1pbWVcblxuICAgIGNvbnN0IGJhc2VGaWxlbmFtZSA9IHNhbml0aXplKGZpbGUubmFtZS5zdWJzdHJpbmcoMCwgZmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJykpIHx8IGZpbGUubmFtZSlcbiAgICBmc1NhZmVOYW1lID0gYCR7YmFzZUZpbGVuYW1lfSR7ZXh0ID8gYC4ke2V4dH1gIDogJyd9YFxuXG4gICAgaWYgKCFvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzKSB7XG4gICAgICBmc1NhZmVOYW1lID0gYXdhaXQgZ2V0U2FmZUZpbGVOYW1lKHtcbiAgICAgICAgY29sbGVjdGlvblNsdWc6IGNvbGxlY3Rpb25Db25maWcuc2x1ZyxcbiAgICAgICAgZGVzaXJlZEZpbGVuYW1lOiBmc1NhZmVOYW1lLFxuICAgICAgICByZXEsXG4gICAgICAgIHN0YXRpY1BhdGgsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZpbGVEYXRhLmZpbGVuYW1lID0gZnNTYWZlTmFtZVxuICAgIGxldCBmaWxlRm9yUmVzaXplID0gZmlsZVxuXG4gICAgaWYgKGNyb3BEYXRhKSB7XG4gICAgICBjb25zdCB7IGRhdGE6IGNyb3BwZWRJbWFnZSwgaW5mbyB9ID0gYXdhaXQgY3JvcEltYWdlKHsgY3JvcERhdGEsIGRpbWVuc2lvbnMsIGZpbGUgfSlcblxuICAgICAgZmlsZXNUb1NhdmUucHVzaCh7XG4gICAgICAgIGJ1ZmZlcjogY3JvcHBlZEltYWdlLFxuICAgICAgICBwYXRoOiBgJHtzdGF0aWNQYXRofS8ke2ZzU2FmZU5hbWV9YCxcbiAgICAgIH0pXG5cbiAgICAgIGZpbGVGb3JSZXNpemUgPSB7XG4gICAgICAgIC4uLmZpbGUsXG4gICAgICAgIGRhdGE6IGNyb3BwZWRJbWFnZSxcbiAgICAgICAgc2l6ZTogaW5mby5zaXplLFxuICAgICAgfVxuICAgICAgZmlsZURhdGEud2lkdGggPSBpbmZvLndpZHRoXG4gICAgICBmaWxlRGF0YS5oZWlnaHQgPSBpbmZvLmhlaWdodFxuICAgICAgaWYgKGZpbGVJc0FuaW1hdGVkVHlwZSkge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IHNoYXJwRmlsZS5tZXRhZGF0YSgpXG4gICAgICAgIGZpbGVEYXRhLmhlaWdodCA9IG1ldGFkYXRhLnBhZ2VzID8gaW5mby5oZWlnaHQgLyBtZXRhZGF0YS5wYWdlcyA6IGluZm8uaGVpZ2h0XG4gICAgICB9XG4gICAgICBmaWxlRGF0YS5maWxlc2l6ZSA9IGluZm8uc2l6ZVxuXG4gICAgICBpZiAoZmlsZS50ZW1wRmlsZVBhdGgpIHtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKGZpbGUudGVtcEZpbGVQYXRoLCBjcm9wcGVkSW1hZ2UpIC8vIHdyaXRlIGZpbGVCdWZmZXIgdG8gdGhlIHRlbXAgcGF0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxLmZpbGVzLmZpbGUgPSBmaWxlRm9yUmVzaXplXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbGVzVG9TYXZlLnB1c2goe1xuICAgICAgICBidWZmZXI6IGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhLFxuICAgICAgICBwYXRoOiBgJHtzdGF0aWNQYXRofS8ke2ZzU2FmZU5hbWV9YCxcbiAgICAgIH0pXG5cbiAgICAgIC8vIElmIHVzaW5nIHRlbXAgZmlsZXMgYW5kIHRoZSBpbWFnZSBpcyBiZWluZyByZXNpemVkLCB3cml0ZSB0aGUgZmlsZSB0byB0aGUgdGVtcCBwYXRoXG4gICAgICBpZiAoZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoZmlsZS50ZW1wRmlsZVBhdGgpIHtcbiAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZS50ZW1wRmlsZVBhdGgsIGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhKSAvLyB3cml0ZSBmaWxlQnVmZmVyIHRvIHRoZSB0ZW1wIHBhdGhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBBc3NpZ24gdGhlIF9wb3NzaWJseSBtb2RpZmllZF8gZmlsZSB0byB0aGUgcmVxdWVzdCBvYmplY3RcbiAgICAgICAgICByZXEuZmlsZXMuZmlsZSA9IHtcbiAgICAgICAgICAgIC4uLmZpbGUsXG4gICAgICAgICAgICBkYXRhOiBmaWxlQnVmZmVyPy5kYXRhIHx8IGZpbGUuZGF0YSxcbiAgICAgICAgICAgIHNpemU6IGZpbGVCdWZmZXI/LmluZm8uc2l6ZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmlsZVN1cHBvcnRzUmVzaXplICYmIChBcnJheS5pc0FycmF5KGltYWdlU2l6ZXMpIHx8IGZvY2FsUG9pbnRFbmFibGVkICE9PSBmYWxzZSkpIHtcbiAgICAgIHJlcS5wYXlsb2FkVXBsb2FkU2l6ZXMgPSB7fVxuICAgICAgY29uc3QgeyBmb2NhbFBvaW50LCBzaXplRGF0YSwgc2l6ZXNUb1NhdmUgfSA9IGF3YWl0IHJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMoe1xuICAgICAgICBjb25maWc6IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgIGRpbWVuc2lvbnM6ICFjcm9wRGF0YVxuICAgICAgICAgID8gZGltZW5zaW9uc1xuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAuLi5kaW1lbnNpb25zLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGZpbGVEYXRhLmhlaWdodCxcbiAgICAgICAgICAgICAgd2lkdGg6IGZpbGVEYXRhLndpZHRoLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgZmlsZTogZmlsZUZvclJlc2l6ZSxcbiAgICAgICAgbWltZVR5cGU6IGZpbGVEYXRhLm1pbWVUeXBlLFxuICAgICAgICByZXEsXG4gICAgICAgIHNhdmVkRmlsZW5hbWU6IGZzU2FmZU5hbWUgfHwgZmlsZS5uYW1lLFxuICAgICAgICBzdGF0aWNQYXRoLFxuICAgICAgICB1cGxvYWRFZGl0cyxcbiAgICAgIH0pXG5cbiAgICAgIGZpbGVEYXRhLnNpemVzID0gc2l6ZURhdGFcbiAgICAgIGZpbGVEYXRhLmZvY2FsWCA9IGZvY2FsUG9pbnQ/LnhcbiAgICAgIGZpbGVEYXRhLmZvY2FsWSA9IGZvY2FsUG9pbnQ/LnlcbiAgICAgIGZpbGVzVG9TYXZlLnB1c2goLi4uc2l6ZXNUb1NhdmUpXG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXEucGF5bG9hZC5sb2dnZXIuZXJyb3IoeyBlcnIsIG1zZzogJ0Vycm9yIHVwbG9hZGluZyBmaWxlJyB9KVxuICAgIHRocm93IG5ldyBGaWxlVXBsb2FkRXJyb3IocmVxLnQpXG4gIH1cblxuICBuZXdEYXRhID0ge1xuICAgIC4uLm5ld0RhdGEsXG4gICAgLi4uZmlsZURhdGEsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRhdGE6IG5ld0RhdGEsXG4gICAgZmlsZXM6IGZpbGVzVG9TYXZlLFxuICB9XG59XG5cbi8qKlxuICogUGFyc2UgdXBsb2FkIGVkaXRzIGZyb20gcmVxIG9yIGluY29taW5nIGRhdGFcbiAqL1xuZnVuY3Rpb24gcGFyc2VVcGxvYWRFZGl0c0Zyb21SZXFPckluY29taW5nRGF0YShhcmdzOiB7XG4gIGRhdGE6IHVua25vd25cbiAgb3BlcmF0aW9uOiAnY3JlYXRlJyB8ICd1cGRhdGUnXG4gIG9yaWdpbmFsRG9jOiB1bmtub3duXG4gIHJlcTogUGF5bG9hZFJlcXVlc3Rcbn0pOiBVcGxvYWRFZGl0cyB7XG4gIGNvbnN0IHsgZGF0YSwgb3BlcmF0aW9uLCBvcmlnaW5hbERvYywgcmVxIH0gPSBhcmdzXG5cbiAgLy8gR2V0IGludGVuZGVkIGZvY2FsIHBvaW50IGNoYW5nZSBmcm9tIHF1ZXJ5IHN0cmluZyBvciBpbmNvbWluZyBkYXRhXG4gIGNvbnN0IHVwbG9hZEVkaXRzID1cbiAgICByZXEucXVlcnk/LnVwbG9hZEVkaXRzICYmIHR5cGVvZiByZXEucXVlcnkudXBsb2FkRWRpdHMgPT09ICdvYmplY3QnXG4gICAgICA/IChyZXEucXVlcnkudXBsb2FkRWRpdHMgYXMgVXBsb2FkRWRpdHMpXG4gICAgICA6IHt9XG5cbiAgaWYgKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQpIHJldHVybiB1cGxvYWRFZGl0c1xuXG4gIGNvbnN0IGluY29taW5nRGF0YSA9IGRhdGEgYXMgRmlsZURhdGFcbiAgY29uc3Qgb3JpZ0RvYyA9IG9yaWdpbmFsRG9jIGFzIEZpbGVEYXRhXG5cbiAgLy8gSWYgbm8gY2hhbmdlIGluIGZvY2FsIHBvaW50LCByZXR1cm4gdW5kZWZpbmVkLlxuICAvLyBUaGlzIHByZXZlbnRzIGEgcmVmb2NhbCBvcGVyYXRpb24gdHJpZ2dlcmVkIGZyb20gYWRtaW4sIGJlY2F1c2UgaXQgYWx3YXlzIHNlbmRzIHRoZSBmb2NhbCBwb2ludC5cbiAgaWYgKG9yaWdEb2MgJiYgaW5jb21pbmdEYXRhLmZvY2FsWCA9PT0gb3JpZ0RvYy5mb2NhbFggJiYgaW5jb21pbmdEYXRhLmZvY2FsWSA9PT0gb3JpZ0RvYy5mb2NhbFkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBpZiAoaW5jb21pbmdEYXRhLmZvY2FsWCAmJiBpbmNvbWluZ0RhdGEuZm9jYWxZKSB7XG4gICAgdXBsb2FkRWRpdHMuZm9jYWxQb2ludCA9IHtcbiAgICAgIHg6IGluY29taW5nRGF0YS5mb2NhbFgsXG4gICAgICB5OiBpbmNvbWluZ0RhdGEuZm9jYWxZLFxuICAgIH1cbiAgICByZXR1cm4gdXBsb2FkRWRpdHNcbiAgfVxuXG4gIC8vIElmIG5vIGZvY2FsIHBvaW50IGlzIHNldCwgZGVmYXVsdCB0byBjZW50ZXJcbiAgaWYgKG9wZXJhdGlvbiA9PT0gJ2NyZWF0ZScpIHtcbiAgICB1cGxvYWRFZGl0cy5mb2NhbFBvaW50ID0ge1xuICAgICAgeDogNTAsXG4gICAgICB5OiA1MCxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVwbG9hZEVkaXRzXG59XG4iXSwibmFtZXMiOlsiZ2VuZXJhdGVGaWxlRGF0YSIsImNvbGxlY3Rpb24iLCJjb25maWciLCJjb2xsZWN0aW9uQ29uZmlnIiwiZGF0YSIsIm9wZXJhdGlvbiIsIm9yaWdpbmFsRG9jIiwib3ZlcndyaXRlRXhpc3RpbmdGaWxlcyIsInJlcSIsInRocm93T25NaXNzaW5nRmlsZSIsInVwbG9hZCIsImZpbGVzIiwiZmlsZSIsInVuZGVmaW5lZCIsInVwbG9hZEVkaXRzIiwicGFyc2VVcGxvYWRFZGl0c0Zyb21SZXFPckluY29taW5nRGF0YSIsImRpc2FibGVMb2NhbFN0b3JhZ2UiLCJmb2NhbFBvaW50IiwiZm9jYWxQb2ludEVuYWJsZWQiLCJmb3JtYXRPcHRpb25zIiwiaW1hZ2VTaXplcyIsInJlc2l6ZU9wdGlvbnMiLCJzdGF0aWNEaXIiLCJ0cmltT3B0aW9ucyIsInN0YXRpY1BhdGgiLCJpbmRleE9mIiwicGF0aCIsInJlc29sdmUiLCJwYXRocyIsImNvbmZpZ0RpciIsImZpbGVuYW1lIiwidXJsIiwic3RhcnRzV2l0aCIsImZpbGVQYXRoIiwicmVzcG9uc2UiLCJnZXRGaWxlQnlQYXRoIiwiZ2V0RXh0ZXJuYWxGaWxlIiwidXBsb2FkQ29uZmlnIiwiZXJyIiwiRXJyb3IiLCJGaWxlUmV0cmlldmFsRXJyb3IiLCJ0IiwibWVzc2FnZSIsIk1pc3NpbmdGaWxlIiwibWtkaXJwIiwic3luYyIsIm5ld0RhdGEiLCJmaWxlc1RvU2F2ZSIsImZpbGVEYXRhIiwiZmlsZUlzQW5pbWF0ZWRUeXBlIiwiaW5jbHVkZXMiLCJtaW1ldHlwZSIsImNyb3BEYXRhIiwiY3JvcCIsImZpbGVTdXBwb3J0c1Jlc2l6ZSIsImNhblJlc2l6ZUltYWdlIiwiZnNTYWZlTmFtZSIsInNoYXJwRmlsZSIsImRpbWVuc2lvbnMiLCJmaWxlQnVmZmVyIiwiZXh0IiwibWltZSIsImZpbGVIYXNBZGp1c3RtZW50cyIsIkJvb2xlYW4iLCJ0ZW1wRmlsZVBhdGgiLCJzaGFycE9wdGlvbnMiLCJhbmltYXRlZCIsInNoYXJwIiwicm90YXRlIiwicmVzaXplIiwidG9Gb3JtYXQiLCJmb3JtYXQiLCJvcHRpb25zIiwidHJpbSIsImlzSW1hZ2UiLCJnZXRJbWFnZVNpemUiLCJ3aWR0aCIsImhlaWdodCIsIm1ldGFkYXRhIiwidG9CdWZmZXIiLCJyZXNvbHZlV2l0aE9iamVjdCIsImZyb21CdWZmZXIiLCJpbmZvIiwiZmlsZXNpemUiLCJzaXplIiwicGFnZXMiLCJsZW5ndGgiLCJuYW1lIiwic3BsaXQiLCJwb3AiLCJtaW1lVHlwZSIsImJhc2VGaWxlbmFtZSIsInNhbml0aXplIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJnZXRTYWZlRmlsZU5hbWUiLCJjb2xsZWN0aW9uU2x1ZyIsInNsdWciLCJkZXNpcmVkRmlsZW5hbWUiLCJmaWxlRm9yUmVzaXplIiwiY3JvcHBlZEltYWdlIiwiY3JvcEltYWdlIiwicHVzaCIsImJ1ZmZlciIsImZzIiwicHJvbWlzZXMiLCJ3cml0ZUZpbGUiLCJBcnJheSIsImlzQXJyYXkiLCJwYXlsb2FkVXBsb2FkU2l6ZXMiLCJzaXplRGF0YSIsInNpemVzVG9TYXZlIiwicmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyIsInNhdmVkRmlsZW5hbWUiLCJzaXplcyIsImZvY2FsWCIsIngiLCJmb2NhbFkiLCJ5IiwicGF5bG9hZCIsImxvZ2dlciIsImVycm9yIiwibXNnIiwiRmlsZVVwbG9hZEVycm9yIiwiYXJncyIsInF1ZXJ5IiwiaW5jb21pbmdEYXRhIiwib3JpZ0RvYyJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7OytCQTBDYUE7OztlQUFBQTs7OzBCQXZDYzsyREFDWjsrREFDSTs2REFDRjt5RUFDSTs4REFDSDt3QkFPMkI7MkVBQ2Q7dUVBQ0o7a0VBQ0w7aUNBQ1U7c0VBQ047cUVBQ0Q7d0VBQ0c7cUVBQ2E7Z0VBQ3JCOzs7Ozs7QUFrQmIsTUFBTUEsbUJBQW1CLE9BQVUsRUFDeENDLFlBQVksRUFBRUMsUUFBUUMsZ0JBQWdCLEVBQUUsRUFDeENELE1BQU0sRUFDTkUsSUFB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
|