From 3d6384d919f8fcbf061a048e30102fe3c963e1bd Mon Sep 17 00:00:00 2001
From: limingzhe <limingzhe@iplayabc.com>
Date: Mon, 15 Aug 2022 10:23:17 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8A=A8=E7=94=BB=E7=BC=A9=E6=94=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 assets/OP15/scene/OP15.js                     |     8 +-
 .../ddbf4888-2678-4720-899f-a7e48a445d42.js   |   645 +-
 ...dbf4888-2678-4720-899f-a7e48a445d42.js.map |     2 +-
 library/uuid-to-mtime.json                    |   208 +-
 temp/quick-scripts/dst/__file_stats__.json    |     2 +-
 temp/quick-scripts/dst/__qc_bundle__.js       | 11121 ++++++++--------
 temp/quick-scripts/dst/__quick_compile__.js   |     2 +-
 .../dst/assets/OP15/scene/OP15.js             |   647 +-
 .../src/assets/OP15/scene/OP15.js             |   645 +-
 .../src/assets/OP15/scene/OP15.js.map         |     2 +-
 temp/startup.json                             |     2 +-
 11 files changed, 7645 insertions(+), 5639 deletions(-)

diff --git a/assets/OP15/scene/OP15.js b/assets/OP15/scene/OP15.js
index 3e12207..5747f6c 100644
--- a/assets/OP15/scene/OP15.js
+++ b/assets/OP15/scene/OP15.js
@@ -653,7 +653,8 @@ cc.Class({
 	},
 
 	getDefaultData() {
-		return  {"begin_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","begin_sep_time":1,"guide_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","playing_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","right_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio1":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio2":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","end_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","bgItem":{"url":"http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png","rect":{"x":736.95,"y":0,"width":599.09,"height":775}},"hotZoneItemArr":[{"id":"1659333645573","index":0,"audio_url":"http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3","itemType":"rect","fontScale":1.61953125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.61953125,"dragDot":{"x":1036.5,"y":387.5},"gIdx":"1","labelText":"1","posX":887.5,"posY":165.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json","name":"spineboy-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas","name":"spineboy-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png","name":"spineboy-pro.png"},"animType":"spine","rect":{"x":48.05,"y":65.5,"width":205,"height":200}},{"id":"1659334098930","index":1,"audio_url":"http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3","itemType":"rect","fontScale":1.61953125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.61953125,"dragDot":{"x":1036.5,"y":387.5},"gIdx":"0","labelText":"1","posX":1212.5,"posY":643.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json","name":"alien-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas","name":"alien-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png","name":"alien-pro.png"},"animType":"spine","rect":{"x":375.56,"y":543.5,"width":200,"height":200}}]}
+		return {"begin_audio":"https://teach.cdn.ireadabc.com/9be46c9adb540ed8a60763f1e657ccb7.mp3","begin_sep_time":66,"guide_audio":"https://teach.cdn.ireadabc.com/9523c8ed45faee686363dd157b0d7426.mp3","playing_audio":"https://teach.cdn.ireadabc.com/d6a953052a6f80549730cb4307c55719.mp3","right_audio":"https://teach.cdn.ireadabc.com/43791fc418e666df5e9ec1b7bf936409.mp3","wrong_audio":"https://teach.cdn.ireadabc.com/7dd85f025a132c2eef8daee38d900287.mp3","wrong_audio1":"https://teach.cdn.ireadabc.com/a76afb06af0799bf538e38f9f80a2261.mp3","wrong_audio2":"https://teach.cdn.ireadabc.com/daee88b6f2eadd78b60436eedffcae08.mp3","end_audio":"https://teach.cdn.ireadabc.com/9c1e87b3c184b06e14e44bb058b9804e.mp3","bgItem":{"url":"https://teach.cdn.ireadabc.com/16b6dacd8e6c1ce6da16f500a66b366b.jpg","rect":{"x":319.68,"y":0,"width":257.64,"height":342}},"hotZoneItemArr":[{"id":"1650544807877","index":0,"itemType":"pic","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":176.65207877461702},"gIdx":"1","skeJsonData":{"url":"https://teach.cdn.ireadabc.com/66c7c0847c33f7f95cb0035fe14c4405.json","name":"monkey_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/98a8272cd2d97047b090ff10e948b978.json","name":"monkey_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/c35ced408ad68a52c4ec5375373d3627.png","name":"monkey_tex.png"},"rect":{"x":128.83,"y":171,"width":0,"height":0}},{"id":"1650546079000","index":1,"audio_url":"https://teach.cdn.ireadabc.com/f9edc84a669688c5abddd55e2aab015d.mp3","itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"0","labelText":"21.3","posX":692.4127500193598,"posY":218.14695959185556,"skeJsonData":{"url":"https://teach.cdn.ireadabc.com/e3c67a25dd3bb34fe113e126e6e1cc81.json","name":"ox_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/81d487bf31d3a4d0f25f44c184ba9233.json","name":"ox_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/e199392b52a735f6e37a6815ec3bb10e.png","name":"ox_tex.png"},"rect":{"x":159.34,"y":138.66,"width":38.83,"height":38.83}},{"id":"1650546232189","index":2,"itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"1","skeJsonData":{"url":"https://teach.cdn.ireadabc.com/0a3ea93c62ff4087859ed587020c53b5.json","name":"car_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/6000e4fbbb95f545afa5456c64d8c7d1.json","name":"car_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/75e9972c15d2a67deedf60d448fd4e69.png","name":"car_tex.png"},"rect":{"x":36.4,"y":78.56,"width":184.87,"height":184.87}},{"id":"1650546321127","index":3,"itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"1","skeJsonData":{"url":"https://teach.cdn.ireadabc.com/d4c1e1abcf3d8f5415747fd2599b8a8c.json","name":"Chair_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/1d7254eb7fa3008e8178347bb944cdcb.json","name":"Chair_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/48e85e8ff384eed72dfe865fc981e18c.png","name":"Chair_tex.png"},"rect":{"x":36.4,"y":78.56,"width":184.87,"height":184.87}},{"id":"1650546335240","index":4,"audio_url":"https://teach.cdn.ireadabc.com/6182d46bad09fccb8934217d33557204.mp3","itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"0","labelText":"53","posX":452.5,"posY":129,"skeJsonData":{"url":"https://teach.cdn.ireadabc.com/b462d80c21aa75995dd99f0f43ccf1e6.json","name":"quilt_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/866c9e2987870947fc63bce108ef157a.json","name":"quilt_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/d952c37f40c3cf07e024edfd4416423e.png","name":"quilt_tex.png"},"rect":{"x":71.99,"y":100.75,"width":50.83,"height":36.97}},{"id":"1650546644333","index":5,"itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"1","skeJsonData":{"url":"https://teach.cdn.ireadabc.com/6b8a1a7b0fd23686ea60465279cd4da0.json","name":"robot_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/31a74ed95fe48adab00702675811c3a8.json","name":"robot_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/e57052537d89356b0a79d8cb77980219.png","name":"robot_tex.png"},"rect":{"x":36.4,"y":78.56,"width":184.87,"height":184.87}},{"id":"1650546658697","index":6,"itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"1","skeJsonData":{"url":"https://teach.cdn.ireadabc.com/bf3616060460439eeb3fd5227370e15a.json","name":"panda_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/2dafeb25c973c910035ff7ed1a6a6334.json","name":"panda_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/75d90b05345fa470285ac488cb205cfd.png","name":"panda_tex.png"},"rect":{"x":36.4,"y":78.56,"width":184.87,"height":184.87}},{"id":"1650546672448","index":7,"itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"1","skeJsonData":{"url":"https://teach.cdn.ireadabc.com/5feff811b0117dd8e67973072e60d310.json","name":"queen_1_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/bb5856b92b09c5fe7a1da00bb68134ca.json","name":"queen_1_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/f4e5a138b086ef3dcfa57432543b66e9.png","name":"queen_1_tex.png"},"animType":"dragonBone","rect":{"x":36.4,"y":78.56,"width":184.87,"height":184.87}},{"id":"1650546687069","index":8,"audio_url":"https://teach.cdn.ireadabc.com/301858df7b07e661426a006acb26059c.mp3","itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"0","labelText":"42.5","posX":512.3883524629834,"posY":259.83617125849,"skeJsonData":{"url":"https://teach.cdn.ireadabc.com/f3a8efcd1850ee8a6cee89a18e86dc4a.json","name":"milk_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/73b05f19d419bd3ac17c2b92dab88423.json","name":"milk_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/e38375da46f85a23202d5cbc812d62e4.png","name":"milk_tex.png"},"rect":{"x":37.72,"y":168.1,"width":21.17,"height":40.34}},{"id":"1650547060490","index":9,"audio_url":"https://teach.cdn.ireadabc.com/05e5b29aeffa4ef94bcc5b23167aec90.mp3","itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"0","labelText":"47.7","posX":483.22135734006736,"posY":245.38039407076505,"skeJsonData":{"url":"https://teach.cdn.ireadabc.com/99a6e6d9361eca7e51ed34ca2e0fd017.json","name":"bird_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/6a379ddbe6df1806368c43c8ee82332d.json","name":"bird_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/cf04c63104d89511902578944061f980.png","name":"bird_tex.png"},"rect":{"x":17.91,"y":140.83,"width":18.52,"height":73.95}},{"id":"1650547373869","index":10,"itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"1","labelText":"60","posX":420.5,"posY":295,"skeJsonData":{"url":"https://teach.cdn.ireadabc.com/7ebc28f3f339b16ca48d20f2a3eb44c1.json","name":"alligator_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/b04e8206fd217bd22dcdac1008393317.json","name":"alligator_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/b3990d94612bd3d6e25cf200f85e4334.png","name":"alligator_tex.png"},"rect":{"x":16.06,"y":229.24,"width":103.52,"height":86.89}},{"id":"1650547482398","index":11,"itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"1","skeJsonData":{"url":"https://teach.cdn.ireadabc.com/a19f2ed7c297c70c639e54e969d64593.json","name":"rabbit_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/4b4f8189cf79fadd7e6533ad84db96be.json","name":"rabbit_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/8f953c861eac94e4e22a8e4ec3eb56b5.png","name":"rabbit_tex.png"},"rect":{"x":36.4,"y":78.56,"width":184.87,"height":184.87}},{"id":"1650547496232","index":12,"itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"1","skeJsonData":{"url":"https://teach.cdn.ireadabc.com/89e0fc6085c294866142803b4ff267ba.json","name":"King_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/d6cfd2d9cd2cd9aff09ab7f03e287421.json","name":"King_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/8c02c3561a2eea0423cb1102200e76f9.png","name":"King_tex.png"},"rect":{"x":36.4,"y":78.56,"width":184.87,"height":184.87}},{"id":"1650547510648","index":13,"audio_url":"https://teach.cdn.ireadabc.com/717ee9713b18d32d38ee089c0abc85ea.mp3","itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"0","labelText":"10.2","posX":641.6680134951944,"posY":288.93672702541255,"skeJsonData":{"url":"https://teach.cdn.ireadabc.com/3b7113ebdedcae54be6d0b9633875b88.json","name":"net_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/fc810762f1f2025585e722e43e94137b.json","name":"net_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/5c90820da4f559280fee4579e8db2dbc.png","name":"net_tex.png"},"rect":{"x":123.03,"y":183.02,"width":37.9,"height":52.68}},{"id":"1650547555018","index":14,"itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"1","skeJsonData":{"url":"https://teach.cdn.ireadabc.com/0a5c8df5a23aca7a7540b87340c7608f.json","name":"ostrich_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/2478573c91d1a83fa038e7f6a9db8a85.json","name":"ostrich_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/4619ace67e5770e1fd7fc3ff76e7263e.png","name":"ostrich_tex.png"},"rect":{"x":36.4,"y":78.56,"width":184.87,"height":184.87}},{"id":"1650547573305","index":15,"audio_url":"https://teach.cdn.ireadabc.com/b7bc161c3a3ee143a53058691abf4fa9.mp3","itemType":"rect","fontScale":0.70078125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":0.70078125,"dragDot":{"x":448.5,"y":170.54984583761566},"gIdx":"0","labelText":"15.9","posX":670.8119839772754,"posY":137.87940870201697,"skeJsonData":{"url":"https://teach.cdn.ireadabc.com/91e8ca03d1df89e4ec2404421d4c692f.json","name":"durazno_ske.json"},"texJsonData":{"url":"https://teach.cdn.ireadabc.com/32d259b0194370625f8fe94b1ddc0a85.json","name":"durazno_tex.json"},"texPngData":{"url":"https://teach.cdn.ireadabc.com/8eef56b20e221a36fce1d672199859ff.png","name":"durazno_tex.png"},"rect":{"x":146.92,"y":83.73,"width":32.34,"height":32.34}}]}
+		// return  {"begin_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","begin_sep_time":1,"guide_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","playing_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","right_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio1":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio2":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","end_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","bgItem":{"url":"http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png","rect":{"x":736.95,"y":0,"width":599.09,"height":775}},"hotZoneItemArr":[{"id":"1659333645573","index":0,"audio_url":"http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3","itemType":"rect","fontScale":1.61953125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.61953125,"dragDot":{"x":1036.5,"y":387.5},"gIdx":"1","labelText":"1","posX":887.5,"posY":165.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json","name":"spineboy-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas","name":"spineboy-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png","name":"spineboy-pro.png"},"animType":"spine","rect":{"x":48.05,"y":65.5,"width":205,"height":200}},{"id":"1659334098930","index":1,"audio_url":"http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3","itemType":"rect","fontScale":1.61953125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.61953125,"dragDot":{"x":1036.5,"y":387.5},"gIdx":"0","labelText":"1","posX":1212.5,"posY":643.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json","name":"alien-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas","name":"alien-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png","name":"alien-pro.png"},"animType":"spine","rect":{"x":375.56,"y":543.5,"width":200,"height":200}}]}
 		// return defaultData;
 	},
 
@@ -853,8 +854,9 @@ cc.Class({
 					if (block.gIdx == '0' || block.gIdx == '1') {
 
 						const n = new cc.Node();
-						n.scale = 0.25;
-						n.scale *= groundBg.width / ground.width;
+						// n.scale = 0.25;
+						n.scale = ground.width / groundBg.width;
+
 						n.parent = ground;
 						n.active = false;
 
diff --git a/library/imports/dd/ddbf4888-2678-4720-899f-a7e48a445d42.js b/library/imports/dd/ddbf4888-2678-4720-899f-a7e48a445d42.js
index ef4a102..a444447 100644
--- a/library/imports/dd/ddbf4888-2678-4720-899f-a7e48a445d42.js
+++ b/library/imports/dd/ddbf4888-2678-4720-899f-a7e48a445d42.js
@@ -206,8 +206,6 @@ cc.Class({
                 console.log('[answer] thinking and playing'); // check every second
 
                 var id = setInterval(function () {
-                  console.log("aaaaaa");
-
                   if (!_this._lastFingerPosition.dirty) {
                     return;
                   }
@@ -227,7 +225,7 @@ cc.Class({
                   } else {
                     callback('WRONG');
                   }
-                }, 300);
+                }, 100);
 
                 _this._intervalIds.push(id); // Perform cleanup
 
@@ -258,8 +256,17 @@ cc.Class({
                 var an = context.questions[context.questionIndex].node;
                 console.log('in right ' + typeof an);
                 an.active = true;
-                var dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);
-                dragonDisplay.playAnimation('normal', 0);
+
+                if (an.isSpine) {
+                  var skeleton = an.getComponent(sp.Skeleton);
+                  skeleton.setToSetupPose();
+                  setTimeout(function () {
+                    skeleton.setAnimation(0, 'normal', true);
+                  }, 1);
+                } else {
+                  var dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);
+                  dragonDisplay.playAnimation('normal', 0);
+                }
 
                 var ddLogoCat = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
 
@@ -610,8 +617,6 @@ cc.Class({
     this.isDebug = false;
   },
   checkInRegion: function checkInRegion(r) {
-    console.log('r~~~: ', r);
-
     if (!this._lastFingerPosition && !this._lastFingerPosition.pos) {
       return null;
     }
@@ -623,6 +628,8 @@ cc.Class({
       x: 0,
       y: 0
     };
+    console.log('~p: ', p);
+    console.log('~r: ', r);
     var w = p.x > r.x && p.x < r.x + r.width;
     var h = p.y > r.y && p.y < r.y + r.height;
     return w && h;
@@ -645,100 +652,567 @@ cc.Class({
   },
   getDefaultData: function getDefaultData() {
     return {
-      "begin_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "begin_sep_time": 1,
-      "guide_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "playing_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "right_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "wrong_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "wrong_audio1": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "wrong_audio2": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "end_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
+      "begin_audio": "https://teach.cdn.ireadabc.com/9be46c9adb540ed8a60763f1e657ccb7.mp3",
+      "begin_sep_time": 66,
+      "guide_audio": "https://teach.cdn.ireadabc.com/9523c8ed45faee686363dd157b0d7426.mp3",
+      "playing_audio": "https://teach.cdn.ireadabc.com/d6a953052a6f80549730cb4307c55719.mp3",
+      "right_audio": "https://teach.cdn.ireadabc.com/43791fc418e666df5e9ec1b7bf936409.mp3",
+      "wrong_audio": "https://teach.cdn.ireadabc.com/7dd85f025a132c2eef8daee38d900287.mp3",
+      "wrong_audio1": "https://teach.cdn.ireadabc.com/a76afb06af0799bf538e38f9f80a2261.mp3",
+      "wrong_audio2": "https://teach.cdn.ireadabc.com/daee88b6f2eadd78b60436eedffcae08.mp3",
+      "end_audio": "https://teach.cdn.ireadabc.com/9c1e87b3c184b06e14e44bb058b9804e.mp3",
       "bgItem": {
-        "url": "http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png",
+        "url": "https://teach.cdn.ireadabc.com/16b6dacd8e6c1ce6da16f500a66b366b.jpg",
         "rect": {
-          "x": 736.95,
+          "x": 319.68,
           "y": 0,
-          "width": 599.09,
-          "height": 775
+          "width": 257.64,
+          "height": 342
         }
       },
       "hotZoneItemArr": [{
-        "id": "1659333645573",
+        "id": "1650544807877",
         "index": 0,
-        "audio_url": "http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3",
-        "itemType": "rect",
-        "fontScale": 1.61953125,
+        "itemType": "pic",
+        "fontScale": 0.70078125,
         "imgScale": 1,
         "imgSizeW": 0,
         "imgSizeH": 0,
-        "mapScale": 1.61953125,
+        "mapScale": 0.70078125,
         "dragDot": {
-          "x": 1036.5,
-          "y": 387.5
+          "x": 448.5,
+          "y": 176.65207877461702
         },
         "gIdx": "1",
-        "labelText": "1",
-        "posX": 887.5,
-        "posY": 165.5,
         "skeJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json",
-          "name": "spineboy-pro.json"
+          "url": "https://teach.cdn.ireadabc.com/66c7c0847c33f7f95cb0035fe14c4405.json",
+          "name": "monkey_ske.json"
         },
         "texJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas",
-          "name": "spineboy-pro.atlas"
+          "url": "https://teach.cdn.ireadabc.com/98a8272cd2d97047b090ff10e948b978.json",
+          "name": "monkey_tex.json"
         },
         "texPngData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png",
-          "name": "spineboy-pro.png"
+          "url": "https://teach.cdn.ireadabc.com/c35ced408ad68a52c4ec5375373d3627.png",
+          "name": "monkey_tex.png"
         },
-        "animType": "spine",
         "rect": {
-          "x": 48.05,
-          "y": 65.5,
-          "width": 205,
-          "height": 200
+          "x": 128.83,
+          "y": 171,
+          "width": 0,
+          "height": 0
         }
       }, {
-        "id": "1659334098930",
+        "id": "1650546079000",
         "index": 1,
-        "audio_url": "http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3",
+        "audio_url": "https://teach.cdn.ireadabc.com/f9edc84a669688c5abddd55e2aab015d.mp3",
         "itemType": "rect",
-        "fontScale": 1.61953125,
+        "fontScale": 0.70078125,
         "imgScale": 1,
         "imgSizeW": 0,
         "imgSizeH": 0,
-        "mapScale": 1.61953125,
+        "mapScale": 0.70078125,
         "dragDot": {
-          "x": 1036.5,
-          "y": 387.5
+          "x": 448.5,
+          "y": 170.54984583761566
         },
         "gIdx": "0",
-        "labelText": "1",
-        "posX": 1212.5,
-        "posY": 643.5,
+        "labelText": "21.3",
+        "posX": 692.4127500193598,
+        "posY": 218.14695959185556,
         "skeJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json",
-          "name": "alien-pro.json"
+          "url": "https://teach.cdn.ireadabc.com/e3c67a25dd3bb34fe113e126e6e1cc81.json",
+          "name": "ox_ske.json"
         },
         "texJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas",
-          "name": "alien-pro.atlas"
+          "url": "https://teach.cdn.ireadabc.com/81d487bf31d3a4d0f25f44c184ba9233.json",
+          "name": "ox_tex.json"
         },
         "texPngData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png",
-          "name": "alien-pro.png"
+          "url": "https://teach.cdn.ireadabc.com/e199392b52a735f6e37a6815ec3bb10e.png",
+          "name": "ox_tex.png"
         },
-        "animType": "spine",
         "rect": {
-          "x": 375.56,
-          "y": 543.5,
-          "width": 200,
-          "height": 200
+          "x": 159.34,
+          "y": 138.66,
+          "width": 38.83,
+          "height": 38.83
+        }
+      }, {
+        "id": "1650546232189",
+        "index": 2,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/0a3ea93c62ff4087859ed587020c53b5.json",
+          "name": "car_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/6000e4fbbb95f545afa5456c64d8c7d1.json",
+          "name": "car_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/75e9972c15d2a67deedf60d448fd4e69.png",
+          "name": "car_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546321127",
+        "index": 3,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/d4c1e1abcf3d8f5415747fd2599b8a8c.json",
+          "name": "Chair_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/1d7254eb7fa3008e8178347bb944cdcb.json",
+          "name": "Chair_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/48e85e8ff384eed72dfe865fc981e18c.png",
+          "name": "Chair_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546335240",
+        "index": 4,
+        "audio_url": "https://teach.cdn.ireadabc.com/6182d46bad09fccb8934217d33557204.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "53",
+        "posX": 452.5,
+        "posY": 129,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/b462d80c21aa75995dd99f0f43ccf1e6.json",
+          "name": "quilt_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/866c9e2987870947fc63bce108ef157a.json",
+          "name": "quilt_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/d952c37f40c3cf07e024edfd4416423e.png",
+          "name": "quilt_tex.png"
+        },
+        "rect": {
+          "x": 71.99,
+          "y": 100.75,
+          "width": 50.83,
+          "height": 36.97
+        }
+      }, {
+        "id": "1650546644333",
+        "index": 5,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/6b8a1a7b0fd23686ea60465279cd4da0.json",
+          "name": "robot_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/31a74ed95fe48adab00702675811c3a8.json",
+          "name": "robot_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/e57052537d89356b0a79d8cb77980219.png",
+          "name": "robot_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546658697",
+        "index": 6,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/bf3616060460439eeb3fd5227370e15a.json",
+          "name": "panda_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/2dafeb25c973c910035ff7ed1a6a6334.json",
+          "name": "panda_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/75d90b05345fa470285ac488cb205cfd.png",
+          "name": "panda_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546672448",
+        "index": 7,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/5feff811b0117dd8e67973072e60d310.json",
+          "name": "queen_1_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/bb5856b92b09c5fe7a1da00bb68134ca.json",
+          "name": "queen_1_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/f4e5a138b086ef3dcfa57432543b66e9.png",
+          "name": "queen_1_tex.png"
+        },
+        "animType": "dragonBone",
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546687069",
+        "index": 8,
+        "audio_url": "https://teach.cdn.ireadabc.com/301858df7b07e661426a006acb26059c.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "42.5",
+        "posX": 512.3883524629834,
+        "posY": 259.83617125849,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/f3a8efcd1850ee8a6cee89a18e86dc4a.json",
+          "name": "milk_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/73b05f19d419bd3ac17c2b92dab88423.json",
+          "name": "milk_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/e38375da46f85a23202d5cbc812d62e4.png",
+          "name": "milk_tex.png"
+        },
+        "rect": {
+          "x": 37.72,
+          "y": 168.1,
+          "width": 21.17,
+          "height": 40.34
+        }
+      }, {
+        "id": "1650547060490",
+        "index": 9,
+        "audio_url": "https://teach.cdn.ireadabc.com/05e5b29aeffa4ef94bcc5b23167aec90.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "47.7",
+        "posX": 483.22135734006736,
+        "posY": 245.38039407076505,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/99a6e6d9361eca7e51ed34ca2e0fd017.json",
+          "name": "bird_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/6a379ddbe6df1806368c43c8ee82332d.json",
+          "name": "bird_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/cf04c63104d89511902578944061f980.png",
+          "name": "bird_tex.png"
+        },
+        "rect": {
+          "x": 17.91,
+          "y": 140.83,
+          "width": 18.52,
+          "height": 73.95
+        }
+      }, {
+        "id": "1650547373869",
+        "index": 10,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "labelText": "60",
+        "posX": 420.5,
+        "posY": 295,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/7ebc28f3f339b16ca48d20f2a3eb44c1.json",
+          "name": "alligator_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/b04e8206fd217bd22dcdac1008393317.json",
+          "name": "alligator_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/b3990d94612bd3d6e25cf200f85e4334.png",
+          "name": "alligator_tex.png"
+        },
+        "rect": {
+          "x": 16.06,
+          "y": 229.24,
+          "width": 103.52,
+          "height": 86.89
+        }
+      }, {
+        "id": "1650547482398",
+        "index": 11,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/a19f2ed7c297c70c639e54e969d64593.json",
+          "name": "rabbit_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/4b4f8189cf79fadd7e6533ad84db96be.json",
+          "name": "rabbit_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/8f953c861eac94e4e22a8e4ec3eb56b5.png",
+          "name": "rabbit_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650547496232",
+        "index": 12,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/89e0fc6085c294866142803b4ff267ba.json",
+          "name": "King_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/d6cfd2d9cd2cd9aff09ab7f03e287421.json",
+          "name": "King_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/8c02c3561a2eea0423cb1102200e76f9.png",
+          "name": "King_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650547510648",
+        "index": 13,
+        "audio_url": "https://teach.cdn.ireadabc.com/717ee9713b18d32d38ee089c0abc85ea.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "10.2",
+        "posX": 641.6680134951944,
+        "posY": 288.93672702541255,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/3b7113ebdedcae54be6d0b9633875b88.json",
+          "name": "net_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/fc810762f1f2025585e722e43e94137b.json",
+          "name": "net_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/5c90820da4f559280fee4579e8db2dbc.png",
+          "name": "net_tex.png"
+        },
+        "rect": {
+          "x": 123.03,
+          "y": 183.02,
+          "width": 37.9,
+          "height": 52.68
+        }
+      }, {
+        "id": "1650547555018",
+        "index": 14,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/0a5c8df5a23aca7a7540b87340c7608f.json",
+          "name": "ostrich_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/2478573c91d1a83fa038e7f6a9db8a85.json",
+          "name": "ostrich_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/4619ace67e5770e1fd7fc3ff76e7263e.png",
+          "name": "ostrich_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650547573305",
+        "index": 15,
+        "audio_url": "https://teach.cdn.ireadabc.com/b7bc161c3a3ee143a53058691abf4fa9.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "15.9",
+        "posX": 670.8119839772754,
+        "posY": 137.87940870201697,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/91e8ca03d1df89e4ec2404421d4c692f.json",
+          "name": "durazno_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/32d259b0194370625f8fe94b1ddc0a85.json",
+          "name": "durazno_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/8eef56b20e221a36fce1d672199859ff.png",
+          "name": "durazno_tex.png"
+        },
+        "rect": {
+          "x": 146.92,
+          "y": 83.73,
+          "width": 32.34,
+          "height": 32.34
         }
       }]
-    }; // return defaultData;
+    }; // return  {"begin_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","begin_sep_time":1,"guide_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","playing_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","right_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio1":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio2":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","end_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","bgItem":{"url":"http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png","rect":{"x":736.95,"y":0,"width":599.09,"height":775}},"hotZoneItemArr":[{"id":"1659333645573","index":0,"audio_url":"http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3","itemType":"rect","fontScale":1.61953125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.61953125,"dragDot":{"x":1036.5,"y":387.5},"gIdx":"1","labelText":"1","posX":887.5,"posY":165.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json","name":"spineboy-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas","name":"spineboy-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png","name":"spineboy-pro.png"},"animType":"spine","rect":{"x":48.05,"y":65.5,"width":205,"height":200}},{"id":"1659334098930","index":1,"audio_url":"http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3","itemType":"rect","fontScale":1.61953125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.61953125,"dragDot":{"x":1036.5,"y":387.5},"gIdx":"0","labelText":"1","posX":1212.5,"posY":643.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json","name":"alien-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas","name":"alien-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png","name":"alien-pro.png"},"animType":"spine","rect":{"x":375.56,"y":543.5,"width":200,"height":200}}]}
+    // return defaultData;
   },
   preloadItem: function preloadItem() {
     this.addPreloadImage();
@@ -986,8 +1460,9 @@ cc.Class({
 
           if (_block.gIdx == '0' || _block.gIdx == '1') {
             (function () {
-              var n = new cc.Node();
-              n.scale = 0.25;
+              var n = new cc.Node(); // n.scale = 0.25;
+
+              n.scale = ground.width / groundBg.width;
               n.parent = ground;
               n.active = false;
 
@@ -1005,8 +1480,7 @@ cc.Class({
                   n.height = height;
                   n.active = true; // db.playAnimation('null', 0);
                   // skeleton.setToSetupPose();
-
-                  skeleton.setAnimation(0, 'enlarge', true);
+                  // skeleton.setAnimation(0, 'enlarge', true);				
 
                   _this4._allAnimationNodes.push(n);
 
@@ -1138,27 +1612,54 @@ cc.Class({
   // 	this.initIcon();
   // },
   addRectNodeListener: function addRectNodeListener(data) {
-    var bg = cc.find("Canvas/frame-border/ground/bg");
+    var _this5 = this;
+
+    var bg = cc.find("Canvas/frame-border/ground/bg").parent;
     var rate = bg.scale * bg.width / this.data.bgItem.rect.width;
     var rectNode = new cc.Node();
     rectNode.name = 'rect' + data.index;
-    bg.addChild(rectNode);
+    bg.addChild(rectNode, 20);
     var ctx = rectNode.addComponent(cc.Graphics); // 红色矩形
 
     ctx.lineWidth = 4;
     ctx.strokeColor = cc.Color.BLACK;
     ctx.fillColor = cc.Color.WHITE.setA(100);
     var scale = rate / bg.scaleY;
+    console.log('scale~ : ', scale);
     rectNode.width = data.rect.width * scale;
     rectNode.height = data.rect.height * scale;
-    rectNode.x = -bg.width / 2 + data.rect.x * scale;
-    rectNode.y = bg.height / 2 - data.rect.height * scale - data.rect.y * scale;
-    rectNode.anchorX = rectNode.anchorY = 0; // if (pageData.bgItem.isShowDebugLine) {
+    rectNode.x = -bg.width / 2 + data.rect.x * scale + bg.x;
+    rectNode.y = bg.height / 2 - data.rect.height * scale - data.rect.y * scale + bg.y;
+    rectNode.anchorX = rectNode.anchorY = 0;
+    console.log('data: ', data);
+    console.log('rectNode: ', rectNode); // if (pageData.bgItem.isShowDebugLine) {
 
-    ctx.rect(0, 0, rectNode.width, rectNode.height); // }
+    ctx.rect(0, 0, rectNode.width, rectNode.height); // ctx.fillRect(0, 0, 200, 200);
+    // }
 
     ctx.stroke();
     ctx.fill();
+    rectNode.addComponent(cc.Button);
+    rectNode.on("click", function () {
+      console.log(" in rectNode click");
+
+      var _x = rectNode.x / bg.width;
+
+      var _y = rectNode.y / bg.height;
+
+      var _w = rectNode.width / bg.width;
+
+      var _h = rectNode.height / bg.height;
+
+      var pos = {
+        x: _x + _w / 2 + 0.5,
+        y: -(_y + _h / 2 - 0.5)
+      };
+      _this5._lastFingerPosition = {
+        pos: pos,
+        dirty: true
+      };
+    });
   },
   initBg: function initBg() {
     var bgNode = cc.find('Canvas/bg');
diff --git a/library/imports/dd/ddbf4888-2678-4720-899f-a7e48a445d42.js.map b/library/imports/dd/ddbf4888-2678-4720-899f-a7e48a445d42.js.map
index af19a8f..3b977a2 100644
--- a/library/imports/dd/ddbf4888-2678-4720-899f-a7e48a445d42.js.map
+++ b/library/imports/dd/ddbf4888-2678-4720-899f-a7e48a445d42.js.map
@@ -1 +1 @@
-{"version":3,"sources":["assets/OP15/scene/OP15.js"],"names":["pure","actions","send","raise","sendParent","cc","Class","Component","properties","rightAudio","type","AudioClip","wrongAudio","logoCat","Node","playAni","idx","name","options","times","cb","callback","node","_figurePointRectArray","dragonDisplay","getComponent","dragonBones","ArmatureDisplay","state","playAnimation","onLoad","_timeoutIds","_intervalIds","initSceneData","initSize","window","ccc","_imageResList","_audioResList","_animaResList","_lastFingerPosition","_hintsNodeList","_allAnimationNodes","pos","dirty","_designSize","_frameSize","_mapScaleMin","_mapScaleMax","_cocosScale","screen_size","view","getFrameSize","width","height","design_size","Canvas","instance","designResolution","f","fitHeight","fitWidth","frameSize","getDesignResolutionSize","sx","winSize","sy","Math","min","max","createStateMachine","check","target","cond","ctx","evt","console","log","questionIndex","questionsCount","QuestionState","id","initial","states","hint","invoke","src","event","questionPlayTimes","Promise","resolve","reject","questions","audio_url","onDone","onError","answer","after","context","onReceive","setInterval","region","result","checkInRegion","rect","push","clearInterval","on","RIGHT","WRONG","right","an","active","ddLogoCat","once","EventObject","COMPLETE","wrong","maxQuestionTryTimes","wrongEffect","includes","data","isSpine","skeleton","sp","Skeleton","setToSetupPose","setTimeout","setAnimation","QuestionsArrayStatus","play","next","CHECK","length","begin","courseware","openOsmoFingerRead","isOpenedOsmoFingerRead","begin_audio","guide","guide_audio","playing","entry","assetManager","loadRemote","playing_audio","err","audioClip","audioEngine","playMusic","forEach","block","exit","stopMusic","NEXT","end","closeOsmoFingerRead","end_audio","i","t","k","_armatureKey","addEventListener","begin_sep_time","gameMachine","gameMachineService","onTransition","start","getData","bind","getDefaultData","JSON","parse","stringify","preloadItem","air","osmoFingerReadCallback","resultObj","finger_pos_in_page","p","x","y","debugPointer","isDebug","r","w","h","func","middleLayer","find","middleLayerComponent","addPreloadImage","addPreloadAudio","addPreloadAnima","preload","url","bgItem","hotZoneItemArr","q","gIdx","texPngData","pic_url","prepareAudioClip","key","wrong_audio","right_audio","wrong_audio1","wrong_audio2","boxDebugger","POINTER_NODE","parent","addComponent","Graphics","grap","clear","ground","baseW","baseH","px","py","pn","fillColor","color","circle","fill","stroke","debugGraphics","canvas","bgW","bgH","scaleX","scaleY","added","area","dn","lblNode","lbl","Label","string","skeJsonData","substring","g","b","rx","ry","rw","rh","fillRect","preloadArr","concat","loadAny","item","groundBg","baseRect","sf","gs","Sprite","spriteFrame","dbCount","finishDbCount","s1","imgSizeW","imgSizeH","spr","scale","n","animType","tex","atlas","texJsonData","ske","then","loadEnd","db","rectInfo","labelText","isNaN","debug","setDisplayStats","hideAirClassLoading","initData","initBg","_cantouch","addRectNodeListener","bg","rate","rectNode","index","addChild","lineWidth","strokeColor","Color","BLACK","WHITE","setA","anchorX","anchorY","bgNode","onDestroy","clearTimeout","stopChild","stop"],"mappings":"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","sourceRoot":"/","sourcesContent":["import { onHomeworkFinish, RandomInt, playAudioByUrl, loadDragonBones, getSpriteFrimeByUrl, loadSpine } from \"../script/util\";\nimport { defaultData } from \"../script/defaultData\";\nimport { assign, createMachine, interpret, actions, forwardTo, matchesState  } from \"../script/xstate\";\nconst { pure , send, raise, sendParent  } = actions;\n\n\ncc.Class({\n\n\textends: cc.Component,\n\n\tproperties: {\n\t\t/*ant: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tapple: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tbird: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tcar: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tcat: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tcow: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tduck: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tegg: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tfarmer: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tfish: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tgirl: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\then: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\thouse: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},*/\n\t\trightAudio: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.AudioClip,\n\t\t},\n\t\twrongAudio: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.AudioClip,\n\t\t},\n\t\tlogoCat: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node\n\t\t}\n\n\t},\n\n\tplayAni(idx, name, options) {\n\t\tconst times = (options && options.times) || 1;\n\t\tconst cb = (options && options.callback) || null;\n\t\t// const cat = cc.find(`Canvas/frame-border/ground/${node}`);\n\t\tconst node = this._figurePointRectArray[idx].node\n\t\tvar dragonDisplay = node.getComponent(dragonBones.ArmatureDisplay);\n\n\t\tconst state = dragonDisplay.playAnimation(name, times);\n\t\t// dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {\n\t\t// \t//TODO 这里写触发事件\n\t\t// \t//event.name为事件名称\n\t\t// \tconsole.log(event.name)\n\t\t// }, this);\n\t\t// animationDisplay.addEventListener(dragonBones.EventObject.COMPLETE, completeCallback);\n\t\treturn state;\n\t},\n\t// 生命周期 onLoad\n\tonLoad() {\n\t\tthis._timeoutIds = [];\n\t\tthis._intervalIds = [];\n\t\tthis.initSceneData();\n\t\tthis.initSize();\n\t\twindow.ccc = this;\n\t},\n\n\t_imageResList: null,\n\t_audioResList: null,\n\t_animaResList: null,\n\n\t_lastFingerPosition: null,\n\n\t_hintsNodeList : null,\n\t_figurePointRectArray: null,\n\n\t_allAnimationNodes: null,\n\n\tinitSceneData() {\n\t\tthis._imageResList = [];\n\t\tthis._audioResList = [];\n\t\tthis._animaResList = [];\n\n\t\tthis._allAnimationNodes = [];\n\t\tthis._hintsNodeList = [];\n\t\tthis._lastFingerPosition= {\n\t\t\tpos: null,\n\t\t\tdirty: false\n\t\t};\n\t\tthis._figurePointRectArray = [];\n\t},\n\n\t_designSize: null,  // 设计分辨率\n\t_frameSize: null,  // 屏幕分辨率\n\t_mapScaleMin: null,  // 场景中常用缩放(取大值)\n\t_mapScaleMax: null,  // 场景中常用缩放(取小值)\n\t_cocosScale: null,  // cocos 自缩放 (较少用到)\n\t\n\tinitSize() {\n\t\t// 注意cc.winSize只有在适配后(修改fitHeight/fitWidth后)才能获取到正确的值,因此使用cc.getFrameSize()来获取初始的屏幕大小\n\t\tlet screen_size = cc.view.getFrameSize().width / cc.view.getFrameSize().height\n\t\tlet design_size = cc.Canvas.instance.designResolution.width / cc.Canvas.instance.designResolution.height\n\t\tlet f = screen_size >= design_size\n\t\tcc.Canvas.instance.fitHeight = f\n\t\tcc.Canvas.instance.fitWidth = !f\n\n\t\tconst frameSize = cc.view.getFrameSize();\n\t\tthis._frameSize = frameSize;\n\n\t\tthis._designSize = cc.view.getDesignResolutionSize();\n\n\t\tlet sx = cc.winSize.width / frameSize.width;\n\t\tlet sy = cc.winSize.height / frameSize.height;\n\t\tthis._cocosScale = Math.min(sx, sy);\n\n\t\tsx = frameSize.width / this._designSize.width;\n\t\tsy = frameSize.height / this._designSize.height;\n\t\tthis._mapScaleMin = Math.min(sx, sy) * this._cocosScale;\n\t\tthis._mapScaleMax = Math.max(sx, sy) * this._cocosScale;\n\t},\n\tcreateStateMachine(){\n\t\tconst check =  [\n\t\t\t\t\t\t\t{ target: '#game.end', cond: (ctx, evt) => {\n\t\t\t\t\t\t\t\tconsole.log('[answer NEXT] check if end', ctx.questionIndex >= ctx.questionsCount - 1);\n\t\t\t\t\t\t\t\treturn ctx.questionIndex >= ctx.questionsCount -1\n\n\t\t\t\t\t\t\t} },\n        \t\t\t\t\t{ target: 'hint' } // reenter 'hint' state\n\t\t\t\t\t\t]\n\t\tconst QuestionState = {\n\t\t\tid: 'question',\n\t\t\tinitial: 'hint',\n\t\t\tstates: {\n\t\t\t\thint: {\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (ctx, event) => {\n\t\t\t\t\t\t\tconsole.log(`[hint] play question ${ctx.questionIndex}: ${ctx.questionPlayTimes } audio`);\n\t\t\t\t\t\t\tctx.questionPlayTimes += 1;\n\t\t\t\t\t\t\treturn new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tplayAudioByUrl(ctx.questions[ctx.questionIndex].audio_url, () => {\n\t\t\t\t\t\t\t\t\tconsole.log('hint finish');\n\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone: 'answer',\n\t\t\t\t\t\tonError: 'answer'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tanswer: {\n\t\t\t\t\tafter: {\n\t\t\t\t\t\t8000: [\n        \t\t\t\t\t{ \n\t\t\t\t\t\t\t\ttarget: 'wrong',\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t} // reenter 'hint' state\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\t\n\t\t\t\t\t\tsrc: (context, event) => (callback, onReceive) => {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconsole.log('[answer] thinking and playing');\n\t\t\t\t\t\t\t// check every second\n\t\t\t\t\t\t\tconst id = setInterval(() => {\n\t\t\t\t\t\t\t\tconsole.log(\"aaaaaa\");\n\t\t\t\t\t\t\t\tif (!this._lastFingerPosition.dirty) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst region = context.questions[context.questionIndex];\n\t\t\t\t\t\t\t\tconst result = this.checkInRegion(region.rect);\n\t\t\t\t\t\t\t\tif (result === null) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconsole.log('[Genise JS] checkInRegion' + result)\n\t\t\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\t\t\tcallback('RIGHT')\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcallback('WRONG')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, 300);\n\t\t\t\t\t\t\tthis._intervalIds.push(id);\n\t\t\t\t\t\n\t\t\t\t\t\t\t// Perform cleanup\n\t\t\t\t\t\t\treturn () => clearInterval(id);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\ton: {\n\t\t\t\t\t\tRIGHT: {\n\t\t\t\t\t\t\ttarget: 'right',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tWRONG: {\n\t\t\t\t\t\t\ttarget: 'wrong',\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\tright: {\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (context, event) => {\n\t\t\t\t\t\t\tthis._lastFingerPosition.pos = null;\n\t\t\t\t\t\t\tthis._lastFingerPosition.dirty = false;\n\t\t\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\tconsole.log('answer right');\n\t\t\t\t\t\t\t\t// this.playAni(context.questionIndex, 'normal')\n\t\t\t\t\t\t\t\tconst an = context.questions[context.questionIndex].node;\n\t\t\t\t\t\t\t\tconsole.log('in right ' + (typeof an))\n\t\t\t\t\t\t\t\tan.active = true;\n\t\t\t\t\t\t\t\tconst dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\t\tdragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t\t\tconst ddLogoCat = this.logoCat.getComponent(dragonBones.ArmatureDisplay)\n\t\t\t\t\t\t\t\tddLogoCat.playAnimation('right', 1)\n\t\t\t\t\t\t\t\tddLogoCat.once(dragonBones.EventObject.COMPLETE, function() {\n\t\t\t\t\t\t\t\t\tthis.logoCat.getComponent(dragonBones.ArmatureDisplay).playAnimation('normal', 0)\n\t\t\t\t\t\t\t\t}, this)\n\n\t\t\t\t\t\t\t\tplayAudioByUrl(this.rightAudio, () => {\n\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone: {\n\t\t\t\t\t\t\ttarget: '#QuestionsArray.next',\n\t\t\t\t\t\t\tactions: raise('CHECK')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: {\n\t\t\t\t\t\t\ttarget: '#QuestionsArray.next',\n\t\t\t\t\t\t\tactions: raise('CHECK')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\twrong:{\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (context, event) => {\n\t\t\t\t\t\t\tthis._lastFingerPosition.pos = null;\n\t\t\t\t\t\t\tthis._lastFingerPosition.dirty = false;\n\t\t\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\tconsole.log('answer wrong', context.questionIndex, context.questionPlayTimes , context.maxQuestionTryTimes);\n\t\t\t\t\t\t\t\tconst ddLogoCat = this.logoCat.getComponent(dragonBones.ArmatureDisplay)\n\t\t\t\t\t\t\t\tddLogoCat.playAnimation('wrong', 1)\n\t\t\t\t\t\t\t\tddLogoCat.once(dragonBones.EventObject.COMPLETE, function() {\n\t\t\t\t\t\t\t\t\tthis.logoCat.getComponent(dragonBones.ArmatureDisplay).playAnimation('normal', 0)\n\t\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\t\tlet wrongEffect = this.wrongAudio;\n\t\t\t\t\t\t\t\t// 第一和第二题的提示音\n\t\t\t\t\t\t\t\tif ([0, 1].includes(context.questionIndex)) {\n\t\t\t\t\t\t\t\t\twrongEffect = this.data[`wrong_audio${context.questionPlayTimes}`]\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// 非第一和第二题,并且做第二遍的提示音\n\t\t\t\t\t\t\t\t\tif (context.questionPlayTimes == 2) {\n\t\t\t\t\t\t\t\t\t\twrongEffect = this.data[`wrong_audio${context.questionPlayTimes}`]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\t\tif (context.questionPlayTimes >= context.maxQuestionTryTimes) {\n\t\t\t\t\t\t\t\t\tconst an = context.questions[context.questionIndex].node;\n\t\t\t\t\t\t\t\t\tan.active = true;\n\n\t\t\t\t\t\t\t\t\tif (an.isSpine) {\n\n\t\t\t\t\t\t\t\t\t\tconst skeleton = an.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\t\tskeleton.setAnimation(0, 'normal', true);\n\t\t\t\t\t\t\t\t\t\t}, 1);\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\t\t\t\tdragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t\t\t\t\tconsole.log('show animation', an.active);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tplayAudioByUrl(wrongEffect, () => {\n\t\t\t\t\t\t\t\t\tif (context.questionPlayTimes >= context.maxQuestionTryTimes) {\n\t\t\t\t\t\t\t\t\t\t// const an = context.questions[context.questionIndex].node;\n\t\t\t\t\t\t\t\t\t\t// an.active = true;\n\t\t\t\t\t\t\t\t\t\t// const dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\t\t\t\t// dragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t\t\t\t\t// console.log('show animation', an.active);\n\t\t\t\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone: {\n\t\t\t\t\t\t\ttarget: 'hint',\n\t\t\t\t\t\t\t// actions: raise('CHECK')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: {\n\t\t\t\t\t\t\ttarget: '#QuestionsArray.next',\n\t\t\t\t\t\t\tactions: raise('CHECK')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t\tconst QuestionsArrayStatus = {\n\t\t\tid: 'QuestionsArray',\n\t\t\tinitial: 'play',\n\t\t\tstates: {\n\t\t\t\tplay: {\n\t\t\t\t\t...QuestionState\n\t\t\t\t},\n\t\t\t\tnext: {\n\t\t\t\t\ton: {\n\t\t\t\t\t\tCHECK: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttarget: '#game.end',\n\t\t\t\t\t\t\t\tcond: (ctx, evt) => {\n\t\t\t\t\t\t\t\t\tctx.questionIndex += 1;\n\t\t\t\t\t\t\t\t\tctx.questionPlayTimes = 0\n\t\t\t\t\t\t\t\t\tconsole.log('#game.end',  ctx.questionIndex >= ctx.questionsCount )\n\t\t\t\t\t\t\t\t\treturn ctx.questionIndex >= ctx.questionsCount\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{target: 'play'}\n\t\t\t\t\t\t]\n\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t\n\t\tconst state = {\n\t\t\tid: 'game',\n\t\t\tinitial: 'begin',\n\t\t\tcontext: {\n\t\t\t\tquestionIndex: 0,\n\t\t\t\tquestionPlayTimes: 0,\n\t\t\t\tmaxQuestionTryTimes: 2,\n\t\t\t\tquestionsCount: this._figurePointRectArray.length,\n\t\t\t\tquestions: this._figurePointRectArray,\n\t\t\t},\n\t\t\tstates: {\n\t\t\t\tbegin: {\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (ctx) => {\n\t\t\t\t\t\t\tconsole.log('game begin 1');\n\t\t\t\t\t\t\tif(window.courseware && window.courseware.openOsmoFingerRead) {\n\t\t\t\t\t\t\t\tthis.isOpenedOsmoFingerRead = true;\n\t\t\t\t\t\t\t\twindow.courseware.openOsmoFingerRead({\n\t\t\t\t\t\t\t\t\t\"page_id\": 27,\n\t\t\t\t\t\t\t\t\t\"book_id\": \"opw1\"\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar dragonDisplay = this.logoCat.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\tconst state = dragonDisplay.playAnimation('begin', 0);\n\t\t\t\t\t\t\treturn new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t\tplayAudioByUrl(this.data.begin_audio, () => {\n\t\t\t\t\t\t\t\t\tconsole.log('game begin audio finish');\n\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone:  'guide',\n\t\t\t\t\t\tonError: 'guide'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\tguide:{\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (ctx) => {\n\t\t\t\t\t\t\treturn new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t\tplayAudioByUrl(this.data.guide_audio, () => {\n\t\t\t\t\t\t\t\t\tconsole.log('game guide audio finish');\n\t\t\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone:  'playing',\n\t\t\t\t\t\tonError: 'playing'\n\t\t\t\t\t},\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\tplaying: {\n\t\t\t\t\tentry: (ctx) => {\n\t\t\t\t\t\tconsole.log('entry play stage');\n\t\t\t\t\t\tvar dragonDisplay = this.logoCat.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\tconst state = dragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\tcc.assetManager.loadRemote(this.data.playing_audio, (err, audioClip) => {\n\t\t\t\t\t\t\tcc.audioEngine.playMusic(audioClip, true, 0.8);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tctx.questions.forEach((block) => {\n\t\t\t\t\t\t\tblock.node.active = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\texit: () => {\n\t\t\t\t\t\tconsole.log('exit play stage');\n\t\t\t\t\t\tcc.audioEngine.stopMusic();\n\t\t\t\t\t},\n\t\t\t\t\ton: {\n\t\t\t\t\t\tNEXT: 'end'\n\t\t\t\t\t},\n\t\t\t\t\t// ...QuestionsStates\n\t\t\t\t\t...QuestionsArrayStatus\n\t\t\t\t},\n\t\t\t\tend: {\n\t\t\t\t\t\tentry: (ctx, event) => {\n\t\t\t\t\t\t\tconsole.log('game end');\n\t\t\t\t\t\t\tvar dragonDisplay = this.logoCat.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\tconst state = dragonDisplay.playAnimation('finish', 0);\n\t\t\t\t\t\t\tif(window.courseware && window.courseware.closeOsmoFingerRead) {\n\t\t\t\t\t\t\t\tthis.isOpenedOsmoFingerRead = false;\n\t\t\t\t\t\t\t\twindow.courseware.closeOsmoFingerRead()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tplayAudioByUrl(this.data.end_audio, () => {\n\t\t\t\t\t\t\t\tconsole.log('game finish');\n\t\t\t\t\t\t\t\tonHomeworkFinish();\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t// return new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t// \tsetTimeout(() => {\n\t\t\t\t\t\t\t// \t\tconsole.log('hint finish');\n\t\t\t\t\t\t\t// \t\tresolve()\n\t\t\t\t\t\t\t// \t}, 2000)\n\t\t\t\t\t\t\t// })\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t}\n\t\t};\n\t\tconst after = {};\n\t\tfor(let i = 0 ;i  < this._hintsNodeList.length; i++) {\n\t\t\tconst t = this._hintsNodeList[i].node;\n\t\t\tconst k = this._hintsNodeList[i].after;\n\t\t\tafter[k]= {\n\t\t\t\tactions: () => {\n\n\t\t\t\t\tif (t.isSpine) {\n\n\t\t\t\t\t\tconst skeleton = t.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\n\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tskeleton.setAnimation(0, 'enlarge', false);\n\t\t\t\t\t\t}, 1);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// skeleton.animation = skeleton.animationNames[0];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\tdragonDisplay.playAnimation('enlarge', 1);\n\t\t\t\t\t\tconsole.log(dragonDisplay._armatureKey, 'enlarge')\n\t\t\t\t\t\tdragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {\n\t\t\t\t\t\t\t// TODO 这里写触发事件\n\t\t\t\t\t\t\t// event.name为事件名称\n\t\t\t\t\t\t\t// event.armature.animation.play('normal', 0);\n\t\t\t\t\t\t\t// console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t}\n\n\n\n\t\t\t\t\t// const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t// dragonDisplay.playAnimation('enlarge', 1);\n\t\t\t\t\t// console.log(dragonDisplay._armatureKey, 'enlarge')\n\t\t\t\t\t// dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {\n\t\t\t\t\t// \t//TODO 这里写触发事件\n\t\t\t\t\t// \t//event.name为事件名称\n\t\t\t\t\t// \tevent.armature.animation.play('normal', 0);\n\t\t\t\t\t// \tconsole.log(event.animationState.name, dragonDisplay._armatureKey, 'end')\n\t\t\t\t\t// }, this);\n\t\t\t\t} \n\t\t\t}\n\t\t}\n\t\tif (this.data.begin_sep_time) {\n\t\t\tconst t = +this.data.begin_sep_time * 1000;\n\t\t\tafter[t] = {\n\t\t\t\tactions: () => {\n\t\t\t\t\tconsole.log('game begin 2');\n\n\t\t\t\t\tfor(let i = 0 ;i  < this._allAnimationNodes.length; i++) {\n\t\t\t\t\t\tconst t = this._allAnimationNodes[i];\n\t\t\t\t\t\tif (t.isSpine) {\n\n\t\t\t\t\t\t\tconst skeleton = t.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\tconsole.log('skeleton: ', skeleton);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tskeleton.setAnimation(0, 'normal', true);\n\t\t\t\t\t\t\t}, 1);\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\tconsole.log('skeleton 22: ', skeleton);\n\n\t\t\t\t\t\t\t// skeleton.animation = skeleton.animationNames[0];\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconst dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\tdragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstate.states.begin.after = after;\n\n\n\n\t\tconst gameMachine = createMachine(state);\n\t\twindow.gameMachine = gameMachine;\n\t\tthis.gameMachineService = interpret(gameMachine).onTransition((state) => {\n\t\t// console.log(1, state.value, state.context);\n\t\t});\n\t\tthis.gameMachineService.start();\n\t\tif (window.gameMachineService) {\n\t\t\twindow.gameMachineService = gameMachineService;\n\t\t}\n\n\n\t},\n\n\t\n\n\n\n\t// 生命周期 start\n\tstart() {\n\t\tlet getData = this.getData.bind(this);\n\t\tif (window && window.courseware) {\n\t\t\tgetData = window.courseware.getData;\n\t\t}\n\n\t\tgetData((data) => {\n\t\t\t// console.log('data:', data);\n\t\t\tthis.data = data || this.getDefaultData();\n\t\t\tthis.data = JSON.parse(JSON.stringify(this.data))\n\t\t\t\n\t\t\tthis.preloadItem()\n\t\t});\n\t\twindow.air = window.air || {}\n\t\tif (window.air) {\n\t\t\twindow.air.osmoFingerReadCallback = (result) => {\n\t\t\t\tif (!this.gameMachineService) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// const st = this.gameMachineService.state.value.constructor.name == 'Object' \n\t\t\t\t// && this.gameMachineService.state.value['playing']\n\t\t\t\t// && this.gameMachineService.state.value['playing'].constructor.name == 'Object'\n\t\t\t\t// && this.gameMachineService.state.value['playing']['play']\n\t\t\t\t// && this.gameMachineService.state.value['playing']['play'] == 'answer'\n\t\t\t\t// if (st) {\n\t\t\t\t// }\n\t\t\t\tconst resultObj = JSON.parse(result);\n\t\t\t\tconsole.log('[Genise JS] '+ JSON.stringify(resultObj.finger_pos_in_page))\n\t\t\t\tconst p = resultObj.finger_pos_in_page;\n\t\t\t\tif (p.x == -1 || p.y == -1) {\n\t\t\t\t\tthis._lastFingerPosition.pos = null;\n\t\t\t\t\tthis._lastFingerPosition.dirty = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._lastFingerPosition = {\n\t\t\t\t\tpos:{\n\t\t\t\t\t\tx: p.x,\n\t\t\t\t\t\ty: p.y\n\t\t\t\t\t},\n\t\t\t\t\tdirty: true\n\t\t\t\t}\n\t\t\t\tthis.debugPointer(p.x, p.y)\n\t\t\t}\n\t\t}\n\t\tthis.isDebug = false;\n\t\t\n\t},\n\tcheckInRegion(r) {\n\t\tconsole.log('r~~~: ', r);\n\t\tif (!this._lastFingerPosition && !this._lastFingerPosition.pos) {\n\t\t\treturn null;\n\t\t}\n\t\tconst p = this._lastFingerPosition ? this._lastFingerPosition.pos || {x:0, y:0} : {x:0, y:0};\n\t\tconst w = p.x > r.x && p.x < (r.x + r.width);\n\t\tconst h = p.y > r.y && p.y < (r.y + r.height);\n\t\treturn w && h;\n\n\t},\n\n\tgetData(func) {\n\t\tif (window && window.courseware) {\n\t\t\twindow.courseware.getData(func, 'scene');\n\t\t\treturn;\n\t\t}\n\n\t\tconst middleLayer = cc.find('middleLayer');\n\t\tif (middleLayer) {\n\t\t\tconst middleLayerComponent = middleLayer.getComponent('middleLayer');\n\t\t\tmiddleLayerComponent.getData(func);\n\t\t\treturn;\n\t\t}\n\n\t\tfunc(this.getDefaultData());\n\t},\n\n\tgetDefaultData() {\n\t\treturn  {\"begin_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"begin_sep_time\":1,\"guide_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"playing_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"right_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"wrong_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"wrong_audio1\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"wrong_audio2\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"end_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"bgItem\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png\",\"rect\":{\"x\":736.95,\"y\":0,\"width\":599.09,\"height\":775}},\"hotZoneItemArr\":[{\"id\":\"1659333645573\",\"index\":0,\"audio_url\":\"http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3\",\"itemType\":\"rect\",\"fontScale\":1.61953125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":1.61953125,\"dragDot\":{\"x\":1036.5,\"y\":387.5},\"gIdx\":\"1\",\"labelText\":\"1\",\"posX\":887.5,\"posY\":165.5,\"skeJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json\",\"name\":\"spineboy-pro.json\"},\"texJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas\",\"name\":\"spineboy-pro.atlas\"},\"texPngData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png\",\"name\":\"spineboy-pro.png\"},\"animType\":\"spine\",\"rect\":{\"x\":48.05,\"y\":65.5,\"width\":205,\"height\":200}},{\"id\":\"1659334098930\",\"index\":1,\"audio_url\":\"http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3\",\"itemType\":\"rect\",\"fontScale\":1.61953125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":1.61953125,\"dragDot\":{\"x\":1036.5,\"y\":387.5},\"gIdx\":\"0\",\"labelText\":\"1\",\"posX\":1212.5,\"posY\":643.5,\"skeJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json\",\"name\":\"alien-pro.json\"},\"texJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas\",\"name\":\"alien-pro.atlas\"},\"texPngData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png\",\"name\":\"alien-pro.png\"},\"animType\":\"spine\",\"rect\":{\"x\":375.56,\"y\":543.5,\"width\":200,\"height\":200}}]}\n\t\t// return defaultData;\n\t},\n\n\tpreloadItem() {\n\t\tthis.addPreloadImage();\n\t\tthis.addPreloadAudio();\n\t\tthis.addPreloadAnima();\n\t\tthis.preload();\n\t},\n\n\n\taddPreloadImage() {\n\n\t\tthis._imageResList.push({ url: this.data.bgItem.url});\n\n\t\tfor (const q of this.data.hotZoneItemArr) {\n\t\t\tif (q.gIdx =='0') {\n\t\t\t\tthis._imageResList.push({ url: q.texPngData.url});\n\t\t\t}\n\n\t\t\tif (q.gIdx =='1') {\n\t\t\t\tthis._imageResList.push({ url: q.texPngData.url });\n\t\t\t}\n\t\t\tif (q.gIdx =='2') {\n\t\t\t\tthis._imageResList.push({ url: q.pic_url});\n\t\t\t}\n\t\t}\n\t},\n\tprepareAudioClip(url, key) {\n\t\tif (url) {\n\t\t\tcc.assetManager.loadRemote(url, (err, audioClip) => {\n\t\t\t\tif (audioClip) {\n\t\t\t\t\tthis[key] = audioClip;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\taddPreloadAudio() {\n\n\t\tthis._audioResList.push({ url: this.data.begin_audio });\n\t\t// this.prepareAudioClip(this.data.begin_audio1, 'begin_audio1')\n\t\t// this._audioResList.push({ url: this.data.begin_audio2 });\n\t\t// this.prepareAudioClip(this.data.begin_audio2, 'begin_audio2')\n\t\tthis._audioResList.push({ url: this.data.guide_audio });\n\t\tthis._audioResList.push({ url: this.data.playing_audio });\n\t\tif (this.data.wrong_audio) {\n\t\t\tthis._audioResList.push({ url: this.data.wrong_audio });\n\t\t\tthis.wrongAudio = this.data.wrong_audio\n\t\t}\n\t\tif (this.data.right_audio) {\n\t\t\tthis._audioResList.push({ url: this.data.right_audio });\n\t\t\tthis.rightAudio = this.data.right_audio\n\t\t}\n\t\tthis._audioResList.push({ url: this.data.wrong_audio1 });\n\t\tthis._audioResList.push({ url: this.data.wrong_audio2 });\n\t\tthis._audioResList.push({ url: this.data.end_audio });\n\n\n\t\tfor (const q of this.data.hotZoneItemArr) {\n\t\t\tif (q.gIdx =='0') {\n\t\t\t\tthis._audioResList.push({ url: q.audio_url });\n\t\t\t}\n\t\t}\n\t},\n\tdebugPointer() {\n\t\tconst boxDebugger = cc.find('Canvas/box-debugger');\n\t\tif (!this.isDebug) {\n\t\t\tboxDebugger.active = false;\n\t\t\treturn;\n\t\t}\n\t\tif (!this.POINTER_NODE) {\n\t\t\tthis.POINTER_NODE = new cc.Node();\n\t\t\tthis.POINTER_NODE.parent = boxDebugger;\n\t\t\tthis.POINTER_NODE.name = 'POINTER_NODE'\n\t\t\tthis.POINTER_NODE.addComponent(cc.Graphics);\n\t\t}\n\t\tconst grap = this.POINTER_NODE.getComponent(cc.Graphics);\n\t\tgrap.clear();\n\t\tconst ground = cc.find('Canvas/frame-border/ground');\n\t\tconst {width: baseW, height: baseH} = ground;\n\t\tconst {x: px, y: py} = this._lastFingerPosition.pos;\n\t\tlet x = baseW * px - baseW / 2;\n\t\tlet y = baseH - (baseH * py) - baseH / 2 - 16;\n\t\tconst pn = new cc.Node();\n\t\t\n\t\tgrap.fillColor=cc.color(255, 0, 0);\n\t\tgrap.circle(x, y, 32);\n\t\tgrap.fill();\n\t\tgrap.stroke();\n\t},\n\tdebugGraphics() {\n\t\tconst boxDebugger = cc.find('Canvas/box-debugger');\n\t\tif (!this.isDebug) {\n\t\t\tboxDebugger.active = false;\n\t\t\treturn;\n\t\t}\n\t\tboxDebugger.active = true;\n\t\tconsole.log('show debug graphics');\n\t\tconst ground = cc.find('Canvas/frame-border/ground');\n\t\tconst canvas = cc.find('Canvas');\n\t\tconst {width: baseW, height: baseH} = ground;\n\t\tconst {width: bgW, height: bgH} = this.data.bgItem.rect\n\t\tconst scaleX = bgW / baseW;\n\t\tconst scaleY = bgH / baseH;\n\t\tlet added  =false\n\t\tthis.data.hotZoneItemArr.forEach(area => {\n\t\t\t\n\t\t\tif (added) {\n\t\t\t\t// return\n\t\t\t}\n\t\t\tif (area.gIdx != '0') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tadded = true;\n\t\t\tconst dn = new cc.Node();\n\t\t\tconst lblNode = new cc.Node();\n\t\t\tlblNode.parent = dn\n\t\t\tconst lbl = lblNode.addComponent(cc.Label);\n\t\t\tlblNode.color = cc.color(0,0,0)\n\t\t\tlbl.string = area.skeJsonData.name.substring(0, area.skeJsonData.name.length - 9)\n\t\t\tdn.name = lbl.string;\n\t\t\tdn.parent = boxDebugger;\n\t\t\tdn.width = baseW;\n\t\t\tdn.height = baseH;\n\t\t\t\n\t\t\tconst grap = dn.addComponent(cc.Graphics);\n\t\t\tconst r = RandomInt(1,255)\n\t\t\tconst g = RandomInt(1,255)\n\t\t\tconst b = RandomInt(1,255)\n\t\t\tgrap.fillColor=cc.color(r, g, b, 127);\n\t\t\tconst {x: rx, y: ry, width: rw, height: rh} =  area.rect;\n\t\t\tlet w = (rw / bgW) * baseW;\n\t\t\tlet h = (rh / bgH) * baseH;\n\t\t\tlet x = (rx / bgW) * baseW - baseW / 2;\n\t\t\tlet y = baseH - ((ry / bgH) * baseH) - h - baseH / 2;\n\t\t\t// w *= scaleX\n\t\t\t// h *= scaleY\n\t\t\t// x *= scaleX\n\t\t\t// y *= scaleY\n            // const p = boxDebugger.convertToNodeSpaceAR(cc.v2(x,y));\n\t\t\t// x = p.x;\n\t\t\t// y = p.y;\n\t\t\tlblNode.x = x;\n\t\t\tlblNode.y = y + h;\n\t\t\t// dn.scaleX = scaleX;\n\t\t\t// dn.scaleY = scaleY;\n\t\t\t// dn.scale = area.mapScale; // minScale; // this._mapScaleMax * area.mapScale; // ;\n\t\t\tconsole.log('[debug]', area.skeJsonData.name, x, y, w, h);\n\t\t\tgrap.fillRect(x, y, w, h);\n\t\t\tgrap.stroke();\n\t\t\t\n\t\t});\n\n\t},\n\taddPreloadAnima() {\n\n\t},\n\n\tpreload() {\n\n\t\tconst preloadArr = this._imageResList.concat(this._audioResList).concat(this._animaResList);\n\t\t// console.log(preloadArr);\n\t\tcc.assetManager.loadAny(preloadArr, null, (f, t, item) => {\n\t\t\t// console.log(f, t, item)\n\t\t}, (err, data) => {\n\t\t\t// console.log(err, data);\n\t\t\tconst ground = cc.find(`Canvas/frame-border/ground`);\n\t\t\tconst groundBg = cc.find(`Canvas/frame-border/ground/bg`);\n\t\t\tgroundBg.active = false;\n\t\t\tconst baseRect = this.data.bgItem.rect;\n\t\t\tgetSpriteFrimeByUrl(this.data.bgItem.url, (sf) => {\n\t\t\t\tconst gs = groundBg.getComponent(cc.Sprite);\n\t\t\t\tgs.spriteFrame = sf;\n\t\t\t\tgroundBg.active = true;\n\n\t\t\t\tlet dbCount = 0;\n\t\t\t\tlet finishDbCount = 0\n\t\t\t\tfor(const block of this.data.hotZoneItemArr) {\n\t\t\t\t\tif (block.gIdx == '0' || block.gIdx == '1') {\n\t\t\t\t\t\tdbCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const block of this.data.hotZoneItemArr) {\n\n\t\t\t\t\t\n\t\t\t\t\tif (block.gIdx == '2') {\n\t\t\t\t\t\tconst s1 = ((ground.width  / block.imgSizeW) + (ground.height  / block.imgSizeH)) / 2\n\t\t\t\t\t\tconst node = new cc.Node();\n\t\t\t\t\t\tnode.parent = ground;\n\t\t\t\t\t\tconst spr = node.addComponent(cc.Sprite);\n\t\t\t\t\t\tgetSpriteFrimeByUrl(block.pic_url, (sf) => {\n\t\t\t\t\t\tspr.spriteFrame = sf;\n\t\t\t\t\t\tnode.scale = s1;\n\t\t\t\t\t\t})\n\n\t\t\t\t\t}\n\t\t\t\t\tif (block.gIdx == '0' || block.gIdx == '1') {\n\n\t\t\t\t\t\tconst n = new cc.Node();\n\t\t\t\t\t\tn.scale = 0.25;\n\t\t\t\t\t\tn.parent = ground;\n\t\t\t\t\t\tn.active = false;\n\n\t\t\t\t\t\tif (block.animType == 'spine') {\n\t\t\t\n\t\t\t\t\t\t\tconst skeleton = n.addComponent(sp.Skeleton);\n\t\t\t\t\t\t\tn.isSpine = true;\n\n\t\t\t\t\t\t\tloadSpine(skeleton, block.texPngData.name, {\n\t\t\t\t\t\t\t\ttex: block.texPngData.url, \n\t\t\t\t\t\t\t\tatlas: block.texJsonData.url,\n\t\t\t\t\t\t\t\tske: block.skeJsonData.url,\n\t\t\t\t\t\t\t}).then(({width, height}) => {\n\t\t\t\t\t\t\t\tn.width = width;\n\t\t\t\t\t\t\t\tn.height = height;\t\n\t\t\t\t\t\t\t\tn.active = true;\n\t\t\t\t\t\t\t\t// db.playAnimation('null', 0);\n\t\t\t\t\t\t\t\t// skeleton.setToSetupPose();\n\t\t\t\t\t\t\t\tskeleton.setAnimation(0, 'enlarge', true);\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tthis._allAnimationNodes.push(n);\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}).catch(() => {\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\n\t\t\t\t\t\t\tconst db = n.addComponent(dragonBones.ArmatureDisplay);\n\n\t\t\t\t\t\t\tloadDragonBones(db, {\n\t\t\t\t\t\t\t\ttex: block.texPngData.url, \n\t\t\t\t\t\t\t\tatlas: block.texJsonData.url,\n\t\t\t\t\t\t\t\tske: block.skeJsonData.url,\n\t\t\t\t\t\t\t}).then(({width, height}) => {\n\t\t\t\t\t\t\t\tn.width = width;\n\t\t\t\t\t\t\t\tn.height = height;\t\n\t\t\t\t\t\t\t\tn.active = true;\n\t\t\t\t\t\t\t\tdb.playAnimation('null', 0);\n\t\t\t\t\t\t\t\tthis._allAnimationNodes.push(n);\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}).catch(() => {\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\tif (block.gIdx == '0') {\n\t\t\t\t\t\t\tconst rectInfo = {\n\t\t\t\t\t\t\t\tnode: n,\n\t\t\t\t\t\t\t\taudio_url: block.audio_url ,\n\t\t\t\t\t\t\t\trect: {\n\t\t\t\t\t\t\t\t\tx: block.rect.x / baseRect.width,\n\t\t\t\t\t\t\t\t\ty: block.rect.y / baseRect.height,\n\t\t\t\t\t\t\t\t\twidth: block.rect.width / baseRect.width,\n\t\t\t\t\t\t\t\t\theight: block.rect.height / baseRect.height,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tthis._figurePointRectArray.push(rectInfo);\n\n\t\t\t\t\t\t\t// this.addRectNodeListener(block);\n\t\t\n\t\t\t\t\t\t\tif (block.labelText) {\n\t\t\t\t\t\t\t\tconst k = +block.labelText * 1000;\n\t\t\t\t\t\t\t\tif(!isNaN(k)) {\n\t\t\t\t\t\t\t\t\tthis._hintsNodeList.push({\n\t\t\t\t\t\t\t\t\t\tnode: n,\n\t\t\t\t\t\t\t\t\t\tafter: k\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t// console.log(this.data);\n\t\t\tconsole.log('resource perload finish');\n\n// <<<<<<< HEAD\n// =======\n// \t\t\tif (window && window[\"air\"]) {\n// \t\t\t\t// cc.find('Canvas').opacity = 0;\n// \t\t\t\twindow.air.onCourseInScreen = (next) => {\n// \t\t\t\t\t// cc.find('Canvas').opacity = 255;\n// \t\t\t\t\tthis.loadEnd();\n// \t\t\t\t\tnext();\n// \t\t\t\t}\n// \t\t\t\twindow.air.hideAirClassLoading();\n// \t\t\t} else {\n// \t\t\t\tthis.loadEnd();\n// \t\t\t}\n// >>>>>>> 2d461e1910571bcfc6ad4dc93c2cedafc20923ea\n\n\t\t\tcc.debug.setDisplayStats(false);\n\t\t});\n\t},\n\n\n\tloadEnd() {\n\t\tif (window && window[\"air\"] && window[\"air\"].hideAirClassLoading) {\n\t\t\twindow[\"air\"].hideAirClassLoading();\n\t\t}\n\t\tthis.initData();\n\t\t// this.initAudio();\n\t\t// this.initView();\n\t\tthis.initBg();\n\t\t// this.initListener();\n\t\tthis.debugGraphics();\n\t\tthis.createStateMachine();\n\t},\n\n\t_cantouch: null,\n\tinitData() {\n\t\t// 所有全局变量 默认都是null \n\t\tthis._cantouch = true;\n\t},\n\n\t// audioBtn: null,\n\t// initAudio() {\n\t// \tconst audioNode = cc.find('Canvas/res/audio');\n\n\t// \tconst getAudioByResName = (resName) => {\n\t// \t\treturn audioNode.getChildByName(resName).getComponent(cc.AudioSource);\n\t// \t}\n\n\t// \tthis.audioBtn = getAudioByResName('btn');\n\n\t// },\n\n\n\t// initView() {\n\n\t// \t// this.initBg();\n\t// \t// this.initPic();\n\t// \t// this.initBtn();\n\t// \tthis.initIcon();\n\t// },\n\n\taddRectNodeListener(data) {\n\n\n\t\tconst bg = cc.find(`Canvas/frame-border/ground/bg`);\n\n\t\tconst rate = (bg.scale * bg.width) / this.data.bgItem.rect.width;\n\n\t\tconst rectNode = new cc.Node();\n\t\trectNode.name = 'rect' + data.index;\n\t\tbg.addChild(rectNode);\n\n\n\t\tconst ctx = rectNode.addComponent(cc.Graphics);\n\t\t// 红色矩形\n\t\tctx.lineWidth = 4;\n\t\tctx.strokeColor = cc.Color.BLACK;\n\t\tctx.fillColor = cc.Color.WHITE.setA(100);\n\n\t\tconst scale = rate / bg.scaleY;\n\n\t\trectNode.width = data.rect.width * scale;\n\t\trectNode.height = data.rect.height * scale;\n\t\trectNode.x = -bg.width / 2 + data.rect.x * scale;\n\t\trectNode.y = bg.height / 2 - data.rect.height * scale - data.rect.y * scale;\n\n\t\trectNode.anchorX = rectNode.anchorY = 0;\n\n\n\t\t// if (pageData.bgItem.isShowDebugLine) {\n\t\t\tctx.rect(0, 0, rectNode.width, rectNode.height);\n\t\t// }\n\t\tctx.stroke();\n\t\tctx.fill();\n\n\t},\n\n\tinitBg() {\n\t\tconst bgNode = cc.find('Canvas/bg');\n\t\tbgNode.scale = this._mapScaleMax;\n\t\tconsole.log('this._mapScaleMax', this._mapScaleMax);\n\t},\n\n\t\n\t\n\n\t/*initBtn() {\n\n\t\tthis.curPage = 0;\n\t\tconst bottomPart = cc.find('Canvas/bottomPart');\n\t\tbottomPart.zIndex = 5; // 提高层级\n\n\t\tbottomPart.x = bottomPart.parent.width / 2;\n\t\tbottomPart.y = -bottomPart.parent.height / 2;\n\n\t\tconst leftBtnNode = bottomPart.getChildByName('btn_left');\n\t\t//节点中添加了button组件 则可以添加click事件监听\n\t\tleftBtnNode.on('click', () => {\n\t\t\tif (!this._cantouch) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.curPage == 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.curPage = 0\n\t\t\tthis.leftMove();\n\n\t\t\t// 游戏结束时需要调用这个方法通知系统作业完成\n\t\t\tonHomeworkFinish();\n\n\t\t\tcc.audioEngine.play(this.audioBtn.clip, false, 0.8)\n\t\t})\n\n\t\tconst rightBtnNode = bottomPart.getChildByName('btn_right');\n\t\t//节点中添加了button组件 则可以添加click事件监听\n\t\trightBtnNode.on('click', () => {\n\t\t\tif (!this._cantouch) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.curPage == 1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.curPage = 1\n\t\t\tthis.rightMove();\n\n\t\t\tcc.audioEngine.play(this.audioBtn.clip, false, 0.5)\n\t\t})\n\t},*/\n\n\n\n\n\t// update (dt) {},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t_timeoutIds: null,\n\t_intervalIds: null,\n\t// 生命周期\n\tonDestroy() {\n\t\tconsole.log('op15 onDestroy');\n\t\tthis._timeoutIds.forEach(id => {\n\t\t\tclearTimeout(id);\n\t\t});\n\t\tthis._intervalIds.forEach(id => {\n\t\t\tclearInterval(id);\n\t\t});\n\t\tthis.gameMachineService.stopChild();\n\t\tthis.gameMachineService.stop();\n\t\tif(window.courseware && window.courseware.closeOsmoFingerRead) {\n\t\t\tif (this.isOpenedOsmoFingerRead) {\n\t\t\t\twindow.courseware.closeOsmoFingerRead()\n\t\t\t}\n\t\t}\n\t},\n\n\n\n\n\n});\n"]}
\ No newline at end of file
+{"version":3,"sources":["assets/OP15/scene/OP15.js"],"names":["pure","actions","send","raise","sendParent","cc","Class","Component","properties","rightAudio","type","AudioClip","wrongAudio","logoCat","Node","playAni","idx","name","options","times","cb","callback","node","_figurePointRectArray","dragonDisplay","getComponent","dragonBones","ArmatureDisplay","state","playAnimation","onLoad","_timeoutIds","_intervalIds","initSceneData","initSize","window","ccc","_imageResList","_audioResList","_animaResList","_lastFingerPosition","_hintsNodeList","_allAnimationNodes","pos","dirty","_designSize","_frameSize","_mapScaleMin","_mapScaleMax","_cocosScale","screen_size","view","getFrameSize","width","height","design_size","Canvas","instance","designResolution","f","fitHeight","fitWidth","frameSize","getDesignResolutionSize","sx","winSize","sy","Math","min","max","createStateMachine","check","target","cond","ctx","evt","console","log","questionIndex","questionsCount","QuestionState","id","initial","states","hint","invoke","src","event","questionPlayTimes","Promise","resolve","reject","questions","audio_url","onDone","onError","answer","after","context","onReceive","setInterval","region","result","checkInRegion","rect","push","clearInterval","on","RIGHT","WRONG","right","an","active","isSpine","skeleton","sp","Skeleton","setToSetupPose","setTimeout","setAnimation","ddLogoCat","once","EventObject","COMPLETE","wrong","maxQuestionTryTimes","wrongEffect","includes","data","QuestionsArrayStatus","play","next","CHECK","length","begin","courseware","openOsmoFingerRead","isOpenedOsmoFingerRead","begin_audio","guide","guide_audio","playing","entry","assetManager","loadRemote","playing_audio","err","audioClip","audioEngine","playMusic","forEach","block","exit","stopMusic","NEXT","end","closeOsmoFingerRead","end_audio","i","t","k","_armatureKey","addEventListener","begin_sep_time","gameMachine","gameMachineService","onTransition","start","getData","bind","getDefaultData","JSON","parse","stringify","preloadItem","air","osmoFingerReadCallback","resultObj","finger_pos_in_page","p","x","y","debugPointer","isDebug","r","w","h","func","middleLayer","find","middleLayerComponent","addPreloadImage","addPreloadAudio","addPreloadAnima","preload","url","bgItem","hotZoneItemArr","q","gIdx","texPngData","pic_url","prepareAudioClip","key","wrong_audio","right_audio","wrong_audio1","wrong_audio2","boxDebugger","POINTER_NODE","parent","addComponent","Graphics","grap","clear","ground","baseW","baseH","px","py","pn","fillColor","color","circle","fill","stroke","debugGraphics","canvas","bgW","bgH","scaleX","scaleY","added","area","dn","lblNode","lbl","Label","string","skeJsonData","substring","g","b","rx","ry","rw","rh","fillRect","preloadArr","concat","loadAny","item","groundBg","baseRect","sf","gs","Sprite","spriteFrame","dbCount","finishDbCount","s1","imgSizeW","imgSizeH","spr","scale","n","animType","tex","atlas","texJsonData","ske","then","loadEnd","db","rectInfo","labelText","isNaN","debug","setDisplayStats","hideAirClassLoading","initData","initBg","_cantouch","addRectNodeListener","bg","rate","rectNode","index","addChild","lineWidth","strokeColor","Color","BLACK","WHITE","setA","anchorX","anchorY","Button","_x","_y","_w","_h","bgNode","onDestroy","clearTimeout","stopChild","stop"],"mappings":"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","sourceRoot":"/","sourcesContent":["import { onHomeworkFinish, RandomInt, playAudioByUrl, loadDragonBones, getSpriteFrimeByUrl, loadSpine } from \"../script/util\";\nimport { defaultData } from \"../script/defaultData\";\nimport { assign, createMachine, interpret, actions, forwardTo, matchesState  } from \"../script/xstate\";\nconst { pure , send, raise, sendParent  } = actions;\n\n\ncc.Class({\n\n\textends: cc.Component,\n\n\tproperties: {\n\t\t/*ant: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tapple: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tbird: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tcar: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tcat: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tcow: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tduck: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tegg: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tfarmer: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tfish: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tgirl: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\then: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\thouse: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},*/\n\t\trightAudio: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.AudioClip,\n\t\t},\n\t\twrongAudio: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.AudioClip,\n\t\t},\n\t\tlogoCat: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node\n\t\t}\n\n\t},\n\n\tplayAni(idx, name, options) {\n\t\tconst times = (options && options.times) || 1;\n\t\tconst cb = (options && options.callback) || null;\n\t\t// const cat = cc.find(`Canvas/frame-border/ground/${node}`);\n\t\tconst node = this._figurePointRectArray[idx].node\n\t\tvar dragonDisplay = node.getComponent(dragonBones.ArmatureDisplay);\n\n\t\tconst state = dragonDisplay.playAnimation(name, times);\n\t\t// dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {\n\t\t// \t//TODO 这里写触发事件\n\t\t// \t//event.name为事件名称\n\t\t// \tconsole.log(event.name)\n\t\t// }, this);\n\t\t// animationDisplay.addEventListener(dragonBones.EventObject.COMPLETE, completeCallback);\n\t\treturn state;\n\t},\n\t// 生命周期 onLoad\n\tonLoad() {\n\t\tthis._timeoutIds = [];\n\t\tthis._intervalIds = [];\n\t\tthis.initSceneData();\n\t\tthis.initSize();\n\t\twindow.ccc = this;\n\t},\n\n\t_imageResList: null,\n\t_audioResList: null,\n\t_animaResList: null,\n\n\t_lastFingerPosition: null,\n\n\t_hintsNodeList : null,\n\t_figurePointRectArray: null,\n\n\t_allAnimationNodes: null,\n\n\tinitSceneData() {\n\t\tthis._imageResList = [];\n\t\tthis._audioResList = [];\n\t\tthis._animaResList = [];\n\n\t\tthis._allAnimationNodes = [];\n\t\tthis._hintsNodeList = [];\n\t\tthis._lastFingerPosition= {\n\t\t\tpos: null,\n\t\t\tdirty: false\n\t\t};\n\t\tthis._figurePointRectArray = [];\n\t},\n\n\t_designSize: null,  // 设计分辨率\n\t_frameSize: null,  // 屏幕分辨率\n\t_mapScaleMin: null,  // 场景中常用缩放(取大值)\n\t_mapScaleMax: null,  // 场景中常用缩放(取小值)\n\t_cocosScale: null,  // cocos 自缩放 (较少用到)\n\t\n\tinitSize() {\n\t\t// 注意cc.winSize只有在适配后(修改fitHeight/fitWidth后)才能获取到正确的值,因此使用cc.getFrameSize()来获取初始的屏幕大小\n\t\tlet screen_size = cc.view.getFrameSize().width / cc.view.getFrameSize().height\n\t\tlet design_size = cc.Canvas.instance.designResolution.width / cc.Canvas.instance.designResolution.height\n\t\tlet f = screen_size >= design_size\n\t\tcc.Canvas.instance.fitHeight = f\n\t\tcc.Canvas.instance.fitWidth = !f\n\n\t\tconst frameSize = cc.view.getFrameSize();\n\t\tthis._frameSize = frameSize;\n\n\t\tthis._designSize = cc.view.getDesignResolutionSize();\n\n\t\tlet sx = cc.winSize.width / frameSize.width;\n\t\tlet sy = cc.winSize.height / frameSize.height;\n\t\tthis._cocosScale = Math.min(sx, sy);\n\n\t\tsx = frameSize.width / this._designSize.width;\n\t\tsy = frameSize.height / this._designSize.height;\n\t\tthis._mapScaleMin = Math.min(sx, sy) * this._cocosScale;\n\t\tthis._mapScaleMax = Math.max(sx, sy) * this._cocosScale;\n\t},\n\tcreateStateMachine(){\n\t\tconst check =  [\n\t\t\t\t\t\t\t{ target: '#game.end', cond: (ctx, evt) => {\n\t\t\t\t\t\t\t\tconsole.log('[answer NEXT] check if end', ctx.questionIndex >= ctx.questionsCount - 1);\n\t\t\t\t\t\t\t\treturn ctx.questionIndex >= ctx.questionsCount -1\n\n\t\t\t\t\t\t\t} },\n        \t\t\t\t\t{ target: 'hint' } // reenter 'hint' state\n\t\t\t\t\t\t]\n\t\tconst QuestionState = {\n\t\t\tid: 'question',\n\t\t\tinitial: 'hint',\n\t\t\tstates: {\n\t\t\t\thint: {\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (ctx, event) => {\n\t\t\t\t\t\t\tconsole.log(`[hint] play question ${ctx.questionIndex}: ${ctx.questionPlayTimes } audio`);\n\t\t\t\t\t\t\tctx.questionPlayTimes += 1;\n\t\t\t\t\t\t\treturn new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tplayAudioByUrl(ctx.questions[ctx.questionIndex].audio_url, () => {\n\t\t\t\t\t\t\t\t\tconsole.log('hint finish');\n\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone: 'answer',\n\t\t\t\t\t\tonError: 'answer'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tanswer: {\n\t\t\t\t\tafter: {\n\t\t\t\t\t\t8000: [\n        \t\t\t\t\t{ \n\t\t\t\t\t\t\t\ttarget: 'wrong',\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t} // reenter 'hint' state\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\t\n\t\t\t\t\t\tsrc: (context, event) => (callback, onReceive) => {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconsole.log('[answer] thinking and playing');\n\t\t\t\t\t\t\t// check every second\n\t\t\t\t\t\t\tconst id = setInterval(() => {\n\t\t\t\t\t\t\t\tif (!this._lastFingerPosition.dirty) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst region = context.questions[context.questionIndex];\n\t\t\t\t\t\t\t\tconst result = this.checkInRegion(region.rect);\n\t\t\t\t\t\t\t\tif (result === null) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconsole.log('[Genise JS] checkInRegion' + result)\n\t\t\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\t\t\tcallback('RIGHT')\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcallback('WRONG')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, 100);\n\t\t\t\t\t\t\tthis._intervalIds.push(id);\n\t\t\t\t\t\n\t\t\t\t\t\t\t// Perform cleanup\n\t\t\t\t\t\t\treturn () => clearInterval(id);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\ton: {\n\t\t\t\t\t\tRIGHT: {\n\t\t\t\t\t\t\ttarget: 'right',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tWRONG: {\n\t\t\t\t\t\t\ttarget: 'wrong',\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\tright: {\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (context, event) => {\n\t\t\t\t\t\t\tthis._lastFingerPosition.pos = null;\n\t\t\t\t\t\t\tthis._lastFingerPosition.dirty = false;\n\t\t\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\tconsole.log('answer right');\n\t\t\t\t\t\t\t\t// this.playAni(context.questionIndex, 'normal')\n\t\t\t\t\t\t\t\tconst an = context.questions[context.questionIndex].node;\n\t\t\t\t\t\t\t\tconsole.log('in right ' + (typeof an))\n\t\t\t\t\t\t\t\tan.active = true;\n\n\t\t\t\t\t\t\t\tif (an.isSpine) {\n\n\t\t\t\t\t\t\t\t\tconst skeleton = an.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\tskeleton.setAnimation(0, 'normal', true);\n\t\t\t\t\t\t\t\t\t}, 1);\n\t\t\t\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\t\t\tdragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst ddLogoCat = this.logoCat.getComponent(dragonBones.ArmatureDisplay)\n\t\t\t\t\t\t\t\tddLogoCat.playAnimation('right', 1)\n\t\t\t\t\t\t\t\tddLogoCat.once(dragonBones.EventObject.COMPLETE, function() {\n\t\t\t\t\t\t\t\t\tthis.logoCat.getComponent(dragonBones.ArmatureDisplay).playAnimation('normal', 0)\n\t\t\t\t\t\t\t\t}, this)\n\n\t\t\t\t\t\t\t\tplayAudioByUrl(this.rightAudio, () => {\n\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone: {\n\t\t\t\t\t\t\ttarget: '#QuestionsArray.next',\n\t\t\t\t\t\t\tactions: raise('CHECK')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: {\n\t\t\t\t\t\t\ttarget: '#QuestionsArray.next',\n\t\t\t\t\t\t\tactions: raise('CHECK')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\twrong:{\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (context, event) => {\n\t\t\t\t\t\t\tthis._lastFingerPosition.pos = null;\n\t\t\t\t\t\t\tthis._lastFingerPosition.dirty = false;\n\t\t\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\tconsole.log('answer wrong', context.questionIndex, context.questionPlayTimes , context.maxQuestionTryTimes);\n\t\t\t\t\t\t\t\tconst ddLogoCat = this.logoCat.getComponent(dragonBones.ArmatureDisplay)\n\t\t\t\t\t\t\t\tddLogoCat.playAnimation('wrong', 1)\n\t\t\t\t\t\t\t\tddLogoCat.once(dragonBones.EventObject.COMPLETE, function() {\n\t\t\t\t\t\t\t\t\tthis.logoCat.getComponent(dragonBones.ArmatureDisplay).playAnimation('normal', 0)\n\t\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\t\tlet wrongEffect = this.wrongAudio;\n\t\t\t\t\t\t\t\t// 第一和第二题的提示音\n\t\t\t\t\t\t\t\tif ([0, 1].includes(context.questionIndex)) {\n\t\t\t\t\t\t\t\t\twrongEffect = this.data[`wrong_audio${context.questionPlayTimes}`]\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// 非第一和第二题,并且做第二遍的提示音\n\t\t\t\t\t\t\t\t\tif (context.questionPlayTimes == 2) {\n\t\t\t\t\t\t\t\t\t\twrongEffect = this.data[`wrong_audio${context.questionPlayTimes}`]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\t\tif (context.questionPlayTimes >= context.maxQuestionTryTimes) {\n\t\t\t\t\t\t\t\t\tconst an = context.questions[context.questionIndex].node;\n\t\t\t\t\t\t\t\t\tan.active = true;\n\n\t\t\t\t\t\t\t\t\tif (an.isSpine) {\n\n\t\t\t\t\t\t\t\t\t\tconst skeleton = an.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\t\tskeleton.setAnimation(0, 'normal', true);\n\t\t\t\t\t\t\t\t\t\t}, 1);\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\t\t\t\tdragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t\t\t\t\tconsole.log('show animation', an.active);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tplayAudioByUrl(wrongEffect, () => {\n\t\t\t\t\t\t\t\t\tif (context.questionPlayTimes >= context.maxQuestionTryTimes) {\n\t\t\t\t\t\t\t\t\t\t// const an = context.questions[context.questionIndex].node;\n\t\t\t\t\t\t\t\t\t\t// an.active = true;\n\t\t\t\t\t\t\t\t\t\t// const dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\t\t\t\t// dragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t\t\t\t\t// console.log('show animation', an.active);\n\t\t\t\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone: {\n\t\t\t\t\t\t\ttarget: 'hint',\n\t\t\t\t\t\t\t// actions: raise('CHECK')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: {\n\t\t\t\t\t\t\ttarget: '#QuestionsArray.next',\n\t\t\t\t\t\t\tactions: raise('CHECK')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t\tconst QuestionsArrayStatus = {\n\t\t\tid: 'QuestionsArray',\n\t\t\tinitial: 'play',\n\t\t\tstates: {\n\t\t\t\tplay: {\n\t\t\t\t\t...QuestionState\n\t\t\t\t},\n\t\t\t\tnext: {\n\t\t\t\t\ton: {\n\t\t\t\t\t\tCHECK: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttarget: '#game.end',\n\t\t\t\t\t\t\t\tcond: (ctx, evt) => {\n\t\t\t\t\t\t\t\t\tctx.questionIndex += 1;\n\t\t\t\t\t\t\t\t\tctx.questionPlayTimes = 0\n\t\t\t\t\t\t\t\t\tconsole.log('#game.end',  ctx.questionIndex >= ctx.questionsCount )\n\t\t\t\t\t\t\t\t\treturn ctx.questionIndex >= ctx.questionsCount\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{target: 'play'}\n\t\t\t\t\t\t]\n\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t\n\t\tconst state = {\n\t\t\tid: 'game',\n\t\t\tinitial: 'begin',\n\t\t\tcontext: {\n\t\t\t\tquestionIndex: 0,\n\t\t\t\tquestionPlayTimes: 0,\n\t\t\t\tmaxQuestionTryTimes: 2,\n\t\t\t\tquestionsCount: this._figurePointRectArray.length,\n\t\t\t\tquestions: this._figurePointRectArray,\n\t\t\t},\n\t\t\tstates: {\n\t\t\t\tbegin: {\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (ctx) => {\n\t\t\t\t\t\t\tconsole.log('game begin 1');\n\t\t\t\t\t\t\tif(window.courseware && window.courseware.openOsmoFingerRead) {\n\t\t\t\t\t\t\t\tthis.isOpenedOsmoFingerRead = true;\n\t\t\t\t\t\t\t\twindow.courseware.openOsmoFingerRead({\n\t\t\t\t\t\t\t\t\t\"page_id\": 27,\n\t\t\t\t\t\t\t\t\t\"book_id\": \"opw1\"\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar dragonDisplay = this.logoCat.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\tconst state = dragonDisplay.playAnimation('begin', 0);\n\t\t\t\t\t\t\treturn new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t\tplayAudioByUrl(this.data.begin_audio, () => {\n\t\t\t\t\t\t\t\t\tconsole.log('game begin audio finish');\n\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone:  'guide',\n\t\t\t\t\t\tonError: 'guide'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\tguide:{\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (ctx) => {\n\t\t\t\t\t\t\treturn new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t\tplayAudioByUrl(this.data.guide_audio, () => {\n\t\t\t\t\t\t\t\t\tconsole.log('game guide audio finish');\n\t\t\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone:  'playing',\n\t\t\t\t\t\tonError: 'playing'\n\t\t\t\t\t},\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\tplaying: {\n\t\t\t\t\tentry: (ctx) => {\n\t\t\t\t\t\tconsole.log('entry play stage');\n\t\t\t\t\t\tvar dragonDisplay = this.logoCat.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\tconst state = dragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\tcc.assetManager.loadRemote(this.data.playing_audio, (err, audioClip) => {\n\t\t\t\t\t\t\tcc.audioEngine.playMusic(audioClip, true, 0.8);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tctx.questions.forEach((block) => {\n\t\t\t\t\t\t\tblock.node.active = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\texit: () => {\n\t\t\t\t\t\tconsole.log('exit play stage');\n\t\t\t\t\t\tcc.audioEngine.stopMusic();\n\t\t\t\t\t},\n\t\t\t\t\ton: {\n\t\t\t\t\t\tNEXT: 'end'\n\t\t\t\t\t},\n\t\t\t\t\t// ...QuestionsStates\n\t\t\t\t\t...QuestionsArrayStatus\n\t\t\t\t},\n\t\t\t\tend: {\n\t\t\t\t\t\tentry: (ctx, event) => {\n\t\t\t\t\t\t\tconsole.log('game end');\n\t\t\t\t\t\t\tvar dragonDisplay = this.logoCat.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\tconst state = dragonDisplay.playAnimation('finish', 0);\n\t\t\t\t\t\t\tif(window.courseware && window.courseware.closeOsmoFingerRead) {\n\t\t\t\t\t\t\t\tthis.isOpenedOsmoFingerRead = false;\n\t\t\t\t\t\t\t\twindow.courseware.closeOsmoFingerRead()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tplayAudioByUrl(this.data.end_audio, () => {\n\t\t\t\t\t\t\t\tconsole.log('game finish');\n\t\t\t\t\t\t\t\tonHomeworkFinish();\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t// return new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t// \tsetTimeout(() => {\n\t\t\t\t\t\t\t// \t\tconsole.log('hint finish');\n\t\t\t\t\t\t\t// \t\tresolve()\n\t\t\t\t\t\t\t// \t}, 2000)\n\t\t\t\t\t\t\t// })\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t}\n\t\t};\n\t\tconst after = {};\n\t\tfor(let i = 0 ;i  < this._hintsNodeList.length; i++) {\n\t\t\tconst t = this._hintsNodeList[i].node;\n\t\t\tconst k = this._hintsNodeList[i].after;\n\t\t\tafter[k]= {\n\t\t\t\tactions: () => {\n\n\t\t\t\t\tif (t.isSpine) {\n\n\t\t\t\t\t\tconst skeleton = t.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\n\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tskeleton.setAnimation(0, 'enlarge', false);\n\t\t\t\t\t\t}, 1);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// skeleton.animation = skeleton.animationNames[0];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\tdragonDisplay.playAnimation('enlarge', 1);\n\t\t\t\t\t\tconsole.log(dragonDisplay._armatureKey, 'enlarge')\n\t\t\t\t\t\tdragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {\n\t\t\t\t\t\t\t// TODO 这里写触发事件\n\t\t\t\t\t\t\t// event.name为事件名称\n\t\t\t\t\t\t\t// event.armature.animation.play('normal', 0);\n\t\t\t\t\t\t\t// console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t}\n\n\n\n\t\t\t\t\t// const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t// dragonDisplay.playAnimation('enlarge', 1);\n\t\t\t\t\t// console.log(dragonDisplay._armatureKey, 'enlarge')\n\t\t\t\t\t// dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {\n\t\t\t\t\t// \t//TODO 这里写触发事件\n\t\t\t\t\t// \t//event.name为事件名称\n\t\t\t\t\t// \tevent.armature.animation.play('normal', 0);\n\t\t\t\t\t// \tconsole.log(event.animationState.name, dragonDisplay._armatureKey, 'end')\n\t\t\t\t\t// }, this);\n\t\t\t\t} \n\t\t\t}\n\t\t}\n\t\tif (this.data.begin_sep_time) {\n\t\t\tconst t = +this.data.begin_sep_time * 1000;\n\t\t\tafter[t] = {\n\t\t\t\tactions: () => {\n\t\t\t\t\tconsole.log('game begin 2');\n\n\t\t\t\t\tfor(let i = 0 ;i  < this._allAnimationNodes.length; i++) {\n\t\t\t\t\t\tconst t = this._allAnimationNodes[i];\n\t\t\t\t\t\tif (t.isSpine) {\n\n\t\t\t\t\t\t\tconst skeleton = t.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\tconsole.log('skeleton: ', skeleton);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tskeleton.setAnimation(0, 'normal', true);\n\t\t\t\t\t\t\t}, 1);\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\tconsole.log('skeleton 22: ', skeleton);\n\n\t\t\t\t\t\t\t// skeleton.animation = skeleton.animationNames[0];\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconst dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\tdragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstate.states.begin.after = after;\n\n\n\n\t\tconst gameMachine = createMachine(state);\n\t\twindow.gameMachine = gameMachine;\n\t\tthis.gameMachineService = interpret(gameMachine).onTransition((state) => {\n\t\t// console.log(1, state.value, state.context);\n\t\t});\n\t\tthis.gameMachineService.start();\n\t\tif (window.gameMachineService) {\n\t\t\twindow.gameMachineService = gameMachineService;\n\t\t}\n\n\n\t},\n\n\t\n\n\n\n\t// 生命周期 start\n\tstart() {\n\t\tlet getData = this.getData.bind(this);\n\t\tif (window && window.courseware) {\n\t\t\tgetData = window.courseware.getData;\n\t\t}\n\n\t\tgetData((data) => {\n\t\t\t// console.log('data:', data);\n\t\t\tthis.data = data || this.getDefaultData();\n\t\t\tthis.data = JSON.parse(JSON.stringify(this.data))\n\t\t\t\n\t\t\tthis.preloadItem()\n\t\t});\n\t\twindow.air = window.air || {}\n\t\tif (window.air) {\n\t\t\twindow.air.osmoFingerReadCallback = (result) => {\n\t\t\t\tif (!this.gameMachineService) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// const st = this.gameMachineService.state.value.constructor.name == 'Object' \n\t\t\t\t// && this.gameMachineService.state.value['playing']\n\t\t\t\t// && this.gameMachineService.state.value['playing'].constructor.name == 'Object'\n\t\t\t\t// && this.gameMachineService.state.value['playing']['play']\n\t\t\t\t// && this.gameMachineService.state.value['playing']['play'] == 'answer'\n\t\t\t\t// if (st) {\n\t\t\t\t// }\n\t\t\t\tconst resultObj = JSON.parse(result);\n\t\t\t\tconsole.log('[Genise JS] '+ JSON.stringify(resultObj.finger_pos_in_page))\n\t\t\t\tconst p = resultObj.finger_pos_in_page;\n\t\t\t\tif (p.x == -1 || p.y == -1) {\n\t\t\t\t\tthis._lastFingerPosition.pos = null;\n\t\t\t\t\tthis._lastFingerPosition.dirty = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._lastFingerPosition = {\n\t\t\t\t\tpos:{\n\t\t\t\t\t\tx: p.x,\n\t\t\t\t\t\ty: p.y\n\t\t\t\t\t},\n\t\t\t\t\tdirty: true\n\t\t\t\t}\n\t\t\t\tthis.debugPointer(p.x, p.y)\n\t\t\t}\n\t\t}\n\t\tthis.isDebug = false;\n\t\t\n\t},\n\tcheckInRegion(r) {\n\t\tif (!this._lastFingerPosition && !this._lastFingerPosition.pos) {\n\t\t\treturn null;\n\t\t}\n\t\tconst p = this._lastFingerPosition ? this._lastFingerPosition.pos || {x:0, y:0} : {x:0, y:0};\n\n\t\tconsole.log('~p: ', p);\n\t\tconsole.log('~r: ', r);\n\n\t\tconst w = p.x > r.x && p.x < (r.x + r.width);\n\t\tconst h = p.y > r.y && p.y < (r.y + r.height);\n\t\treturn w && h;\n\n\t},\n\n\tgetData(func) {\n\t\tif (window && window.courseware) {\n\t\t\twindow.courseware.getData(func, 'scene');\n\t\t\treturn;\n\t\t}\n\n\t\tconst middleLayer = cc.find('middleLayer');\n\t\tif (middleLayer) {\n\t\t\tconst middleLayerComponent = middleLayer.getComponent('middleLayer');\n\t\t\tmiddleLayerComponent.getData(func);\n\t\t\treturn;\n\t\t}\n\n\t\tfunc(this.getDefaultData());\n\t},\n\n\tgetDefaultData() {\n\t\treturn {\"begin_audio\":\"https://teach.cdn.ireadabc.com/9be46c9adb540ed8a60763f1e657ccb7.mp3\",\"begin_sep_time\":66,\"guide_audio\":\"https://teach.cdn.ireadabc.com/9523c8ed45faee686363dd157b0d7426.mp3\",\"playing_audio\":\"https://teach.cdn.ireadabc.com/d6a953052a6f80549730cb4307c55719.mp3\",\"right_audio\":\"https://teach.cdn.ireadabc.com/43791fc418e666df5e9ec1b7bf936409.mp3\",\"wrong_audio\":\"https://teach.cdn.ireadabc.com/7dd85f025a132c2eef8daee38d900287.mp3\",\"wrong_audio1\":\"https://teach.cdn.ireadabc.com/a76afb06af0799bf538e38f9f80a2261.mp3\",\"wrong_audio2\":\"https://teach.cdn.ireadabc.com/daee88b6f2eadd78b60436eedffcae08.mp3\",\"end_audio\":\"https://teach.cdn.ireadabc.com/9c1e87b3c184b06e14e44bb058b9804e.mp3\",\"bgItem\":{\"url\":\"https://teach.cdn.ireadabc.com/16b6dacd8e6c1ce6da16f500a66b366b.jpg\",\"rect\":{\"x\":319.68,\"y\":0,\"width\":257.64,\"height\":342}},\"hotZoneItemArr\":[{\"id\":\"1650544807877\",\"index\":0,\"itemType\":\"pic\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":176.65207877461702},\"gIdx\":\"1\",\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/66c7c0847c33f7f95cb0035fe14c4405.json\",\"name\":\"monkey_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/98a8272cd2d97047b090ff10e948b978.json\",\"name\":\"monkey_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/c35ced408ad68a52c4ec5375373d3627.png\",\"name\":\"monkey_tex.png\"},\"rect\":{\"x\":128.83,\"y\":171,\"width\":0,\"height\":0}},{\"id\":\"1650546079000\",\"index\":1,\"audio_url\":\"https://teach.cdn.ireadabc.com/f9edc84a669688c5abddd55e2aab015d.mp3\",\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"0\",\"labelText\":\"21.3\",\"posX\":692.4127500193598,\"posY\":218.14695959185556,\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/e3c67a25dd3bb34fe113e126e6e1cc81.json\",\"name\":\"ox_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/81d487bf31d3a4d0f25f44c184ba9233.json\",\"name\":\"ox_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/e199392b52a735f6e37a6815ec3bb10e.png\",\"name\":\"ox_tex.png\"},\"rect\":{\"x\":159.34,\"y\":138.66,\"width\":38.83,\"height\":38.83}},{\"id\":\"1650546232189\",\"index\":2,\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"1\",\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/0a3ea93c62ff4087859ed587020c53b5.json\",\"name\":\"car_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/6000e4fbbb95f545afa5456c64d8c7d1.json\",\"name\":\"car_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/75e9972c15d2a67deedf60d448fd4e69.png\",\"name\":\"car_tex.png\"},\"rect\":{\"x\":36.4,\"y\":78.56,\"width\":184.87,\"height\":184.87}},{\"id\":\"1650546321127\",\"index\":3,\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"1\",\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/d4c1e1abcf3d8f5415747fd2599b8a8c.json\",\"name\":\"Chair_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/1d7254eb7fa3008e8178347bb944cdcb.json\",\"name\":\"Chair_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/48e85e8ff384eed72dfe865fc981e18c.png\",\"name\":\"Chair_tex.png\"},\"rect\":{\"x\":36.4,\"y\":78.56,\"width\":184.87,\"height\":184.87}},{\"id\":\"1650546335240\",\"index\":4,\"audio_url\":\"https://teach.cdn.ireadabc.com/6182d46bad09fccb8934217d33557204.mp3\",\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"0\",\"labelText\":\"53\",\"posX\":452.5,\"posY\":129,\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/b462d80c21aa75995dd99f0f43ccf1e6.json\",\"name\":\"quilt_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/866c9e2987870947fc63bce108ef157a.json\",\"name\":\"quilt_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/d952c37f40c3cf07e024edfd4416423e.png\",\"name\":\"quilt_tex.png\"},\"rect\":{\"x\":71.99,\"y\":100.75,\"width\":50.83,\"height\":36.97}},{\"id\":\"1650546644333\",\"index\":5,\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"1\",\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/6b8a1a7b0fd23686ea60465279cd4da0.json\",\"name\":\"robot_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/31a74ed95fe48adab00702675811c3a8.json\",\"name\":\"robot_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/e57052537d89356b0a79d8cb77980219.png\",\"name\":\"robot_tex.png\"},\"rect\":{\"x\":36.4,\"y\":78.56,\"width\":184.87,\"height\":184.87}},{\"id\":\"1650546658697\",\"index\":6,\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"1\",\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/bf3616060460439eeb3fd5227370e15a.json\",\"name\":\"panda_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/2dafeb25c973c910035ff7ed1a6a6334.json\",\"name\":\"panda_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/75d90b05345fa470285ac488cb205cfd.png\",\"name\":\"panda_tex.png\"},\"rect\":{\"x\":36.4,\"y\":78.56,\"width\":184.87,\"height\":184.87}},{\"id\":\"1650546672448\",\"index\":7,\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"1\",\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/5feff811b0117dd8e67973072e60d310.json\",\"name\":\"queen_1_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/bb5856b92b09c5fe7a1da00bb68134ca.json\",\"name\":\"queen_1_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/f4e5a138b086ef3dcfa57432543b66e9.png\",\"name\":\"queen_1_tex.png\"},\"animType\":\"dragonBone\",\"rect\":{\"x\":36.4,\"y\":78.56,\"width\":184.87,\"height\":184.87}},{\"id\":\"1650546687069\",\"index\":8,\"audio_url\":\"https://teach.cdn.ireadabc.com/301858df7b07e661426a006acb26059c.mp3\",\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"0\",\"labelText\":\"42.5\",\"posX\":512.3883524629834,\"posY\":259.83617125849,\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/f3a8efcd1850ee8a6cee89a18e86dc4a.json\",\"name\":\"milk_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/73b05f19d419bd3ac17c2b92dab88423.json\",\"name\":\"milk_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/e38375da46f85a23202d5cbc812d62e4.png\",\"name\":\"milk_tex.png\"},\"rect\":{\"x\":37.72,\"y\":168.1,\"width\":21.17,\"height\":40.34}},{\"id\":\"1650547060490\",\"index\":9,\"audio_url\":\"https://teach.cdn.ireadabc.com/05e5b29aeffa4ef94bcc5b23167aec90.mp3\",\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"0\",\"labelText\":\"47.7\",\"posX\":483.22135734006736,\"posY\":245.38039407076505,\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/99a6e6d9361eca7e51ed34ca2e0fd017.json\",\"name\":\"bird_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/6a379ddbe6df1806368c43c8ee82332d.json\",\"name\":\"bird_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/cf04c63104d89511902578944061f980.png\",\"name\":\"bird_tex.png\"},\"rect\":{\"x\":17.91,\"y\":140.83,\"width\":18.52,\"height\":73.95}},{\"id\":\"1650547373869\",\"index\":10,\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"1\",\"labelText\":\"60\",\"posX\":420.5,\"posY\":295,\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/7ebc28f3f339b16ca48d20f2a3eb44c1.json\",\"name\":\"alligator_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/b04e8206fd217bd22dcdac1008393317.json\",\"name\":\"alligator_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/b3990d94612bd3d6e25cf200f85e4334.png\",\"name\":\"alligator_tex.png\"},\"rect\":{\"x\":16.06,\"y\":229.24,\"width\":103.52,\"height\":86.89}},{\"id\":\"1650547482398\",\"index\":11,\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"1\",\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/a19f2ed7c297c70c639e54e969d64593.json\",\"name\":\"rabbit_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/4b4f8189cf79fadd7e6533ad84db96be.json\",\"name\":\"rabbit_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/8f953c861eac94e4e22a8e4ec3eb56b5.png\",\"name\":\"rabbit_tex.png\"},\"rect\":{\"x\":36.4,\"y\":78.56,\"width\":184.87,\"height\":184.87}},{\"id\":\"1650547496232\",\"index\":12,\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"1\",\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/89e0fc6085c294866142803b4ff267ba.json\",\"name\":\"King_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/d6cfd2d9cd2cd9aff09ab7f03e287421.json\",\"name\":\"King_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/8c02c3561a2eea0423cb1102200e76f9.png\",\"name\":\"King_tex.png\"},\"rect\":{\"x\":36.4,\"y\":78.56,\"width\":184.87,\"height\":184.87}},{\"id\":\"1650547510648\",\"index\":13,\"audio_url\":\"https://teach.cdn.ireadabc.com/717ee9713b18d32d38ee089c0abc85ea.mp3\",\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"0\",\"labelText\":\"10.2\",\"posX\":641.6680134951944,\"posY\":288.93672702541255,\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/3b7113ebdedcae54be6d0b9633875b88.json\",\"name\":\"net_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/fc810762f1f2025585e722e43e94137b.json\",\"name\":\"net_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/5c90820da4f559280fee4579e8db2dbc.png\",\"name\":\"net_tex.png\"},\"rect\":{\"x\":123.03,\"y\":183.02,\"width\":37.9,\"height\":52.68}},{\"id\":\"1650547555018\",\"index\":14,\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"1\",\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/0a5c8df5a23aca7a7540b87340c7608f.json\",\"name\":\"ostrich_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/2478573c91d1a83fa038e7f6a9db8a85.json\",\"name\":\"ostrich_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/4619ace67e5770e1fd7fc3ff76e7263e.png\",\"name\":\"ostrich_tex.png\"},\"rect\":{\"x\":36.4,\"y\":78.56,\"width\":184.87,\"height\":184.87}},{\"id\":\"1650547573305\",\"index\":15,\"audio_url\":\"https://teach.cdn.ireadabc.com/b7bc161c3a3ee143a53058691abf4fa9.mp3\",\"itemType\":\"rect\",\"fontScale\":0.70078125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":0.70078125,\"dragDot\":{\"x\":448.5,\"y\":170.54984583761566},\"gIdx\":\"0\",\"labelText\":\"15.9\",\"posX\":670.8119839772754,\"posY\":137.87940870201697,\"skeJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/91e8ca03d1df89e4ec2404421d4c692f.json\",\"name\":\"durazno_ske.json\"},\"texJsonData\":{\"url\":\"https://teach.cdn.ireadabc.com/32d259b0194370625f8fe94b1ddc0a85.json\",\"name\":\"durazno_tex.json\"},\"texPngData\":{\"url\":\"https://teach.cdn.ireadabc.com/8eef56b20e221a36fce1d672199859ff.png\",\"name\":\"durazno_tex.png\"},\"rect\":{\"x\":146.92,\"y\":83.73,\"width\":32.34,\"height\":32.34}}]}\n\t\t// return  {\"begin_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"begin_sep_time\":1,\"guide_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"playing_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"right_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"wrong_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"wrong_audio1\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"wrong_audio2\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"end_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"bgItem\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png\",\"rect\":{\"x\":736.95,\"y\":0,\"width\":599.09,\"height\":775}},\"hotZoneItemArr\":[{\"id\":\"1659333645573\",\"index\":0,\"audio_url\":\"http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3\",\"itemType\":\"rect\",\"fontScale\":1.61953125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":1.61953125,\"dragDot\":{\"x\":1036.5,\"y\":387.5},\"gIdx\":\"1\",\"labelText\":\"1\",\"posX\":887.5,\"posY\":165.5,\"skeJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json\",\"name\":\"spineboy-pro.json\"},\"texJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas\",\"name\":\"spineboy-pro.atlas\"},\"texPngData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png\",\"name\":\"spineboy-pro.png\"},\"animType\":\"spine\",\"rect\":{\"x\":48.05,\"y\":65.5,\"width\":205,\"height\":200}},{\"id\":\"1659334098930\",\"index\":1,\"audio_url\":\"http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3\",\"itemType\":\"rect\",\"fontScale\":1.61953125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":1.61953125,\"dragDot\":{\"x\":1036.5,\"y\":387.5},\"gIdx\":\"0\",\"labelText\":\"1\",\"posX\":1212.5,\"posY\":643.5,\"skeJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json\",\"name\":\"alien-pro.json\"},\"texJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas\",\"name\":\"alien-pro.atlas\"},\"texPngData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png\",\"name\":\"alien-pro.png\"},\"animType\":\"spine\",\"rect\":{\"x\":375.56,\"y\":543.5,\"width\":200,\"height\":200}}]}\n\t\t// return defaultData;\n\t},\n\n\tpreloadItem() {\n\t\tthis.addPreloadImage();\n\t\tthis.addPreloadAudio();\n\t\tthis.addPreloadAnima();\n\t\tthis.preload();\n\t},\n\n\n\taddPreloadImage() {\n\n\t\tthis._imageResList.push({ url: this.data.bgItem.url});\n\n\t\tfor (const q of this.data.hotZoneItemArr) {\n\t\t\tif (q.gIdx =='0') {\n\t\t\t\tthis._imageResList.push({ url: q.texPngData.url});\n\t\t\t}\n\n\t\t\tif (q.gIdx =='1') {\n\t\t\t\tthis._imageResList.push({ url: q.texPngData.url });\n\t\t\t}\n\t\t\tif (q.gIdx =='2') {\n\t\t\t\tthis._imageResList.push({ url: q.pic_url});\n\t\t\t}\n\t\t}\n\t},\n\tprepareAudioClip(url, key) {\n\t\tif (url) {\n\t\t\tcc.assetManager.loadRemote(url, (err, audioClip) => {\n\t\t\t\tif (audioClip) {\n\t\t\t\t\tthis[key] = audioClip;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\taddPreloadAudio() {\n\n\t\tthis._audioResList.push({ url: this.data.begin_audio });\n\t\t// this.prepareAudioClip(this.data.begin_audio1, 'begin_audio1')\n\t\t// this._audioResList.push({ url: this.data.begin_audio2 });\n\t\t// this.prepareAudioClip(this.data.begin_audio2, 'begin_audio2')\n\t\tthis._audioResList.push({ url: this.data.guide_audio });\n\t\tthis._audioResList.push({ url: this.data.playing_audio });\n\t\tif (this.data.wrong_audio) {\n\t\t\tthis._audioResList.push({ url: this.data.wrong_audio });\n\t\t\tthis.wrongAudio = this.data.wrong_audio\n\t\t}\n\t\tif (this.data.right_audio) {\n\t\t\tthis._audioResList.push({ url: this.data.right_audio });\n\t\t\tthis.rightAudio = this.data.right_audio\n\t\t}\n\t\tthis._audioResList.push({ url: this.data.wrong_audio1 });\n\t\tthis._audioResList.push({ url: this.data.wrong_audio2 });\n\t\tthis._audioResList.push({ url: this.data.end_audio });\n\n\n\t\tfor (const q of this.data.hotZoneItemArr) {\n\t\t\tif (q.gIdx =='0') {\n\t\t\t\tthis._audioResList.push({ url: q.audio_url });\n\t\t\t}\n\t\t}\n\t},\n\tdebugPointer() {\n\t\tconst boxDebugger = cc.find('Canvas/box-debugger');\n\t\tif (!this.isDebug) {\n\t\t\tboxDebugger.active = false;\n\t\t\treturn;\n\t\t}\n\t\tif (!this.POINTER_NODE) {\n\t\t\tthis.POINTER_NODE = new cc.Node();\n\t\t\tthis.POINTER_NODE.parent = boxDebugger;\n\t\t\tthis.POINTER_NODE.name = 'POINTER_NODE'\n\t\t\tthis.POINTER_NODE.addComponent(cc.Graphics);\n\t\t}\n\t\tconst grap = this.POINTER_NODE.getComponent(cc.Graphics);\n\t\tgrap.clear();\n\t\tconst ground = cc.find('Canvas/frame-border/ground');\n\t\tconst {width: baseW, height: baseH} = ground;\n\t\tconst {x: px, y: py} = this._lastFingerPosition.pos;\n\t\tlet x = baseW * px - baseW / 2;\n\t\tlet y = baseH - (baseH * py) - baseH / 2 - 16;\n\t\tconst pn = new cc.Node();\n\t\t\n\t\tgrap.fillColor=cc.color(255, 0, 0);\n\t\tgrap.circle(x, y, 32);\n\t\tgrap.fill();\n\t\tgrap.stroke();\n\t},\n\tdebugGraphics() {\n\t\tconst boxDebugger = cc.find('Canvas/box-debugger');\n\t\tif (!this.isDebug) {\n\t\t\tboxDebugger.active = false;\n\t\t\treturn;\n\t\t}\n\t\tboxDebugger.active = true;\n\t\tconsole.log('show debug graphics');\n\t\tconst ground = cc.find('Canvas/frame-border/ground');\n\t\tconst canvas = cc.find('Canvas');\n\t\tconst {width: baseW, height: baseH} = ground;\n\t\tconst {width: bgW, height: bgH} = this.data.bgItem.rect\n\t\tconst scaleX = bgW / baseW;\n\t\tconst scaleY = bgH / baseH;\n\t\tlet added  =false\n\t\tthis.data.hotZoneItemArr.forEach(area => {\n\t\t\t\n\t\t\tif (added) {\n\t\t\t\t// return\n\t\t\t}\n\t\t\tif (area.gIdx != '0') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tadded = true;\n\t\t\tconst dn = new cc.Node();\n\t\t\tconst lblNode = new cc.Node();\n\t\t\tlblNode.parent = dn\n\t\t\tconst lbl = lblNode.addComponent(cc.Label);\n\t\t\tlblNode.color = cc.color(0,0,0)\n\t\t\tlbl.string = area.skeJsonData.name.substring(0, area.skeJsonData.name.length - 9)\n\t\t\tdn.name = lbl.string;\n\t\t\tdn.parent = boxDebugger;\n\t\t\tdn.width = baseW;\n\t\t\tdn.height = baseH;\n\t\t\t\n\t\t\tconst grap = dn.addComponent(cc.Graphics);\n\t\t\tconst r = RandomInt(1,255)\n\t\t\tconst g = RandomInt(1,255)\n\t\t\tconst b = RandomInt(1,255)\n\t\t\tgrap.fillColor=cc.color(r, g, b, 127);\n\t\t\tconst {x: rx, y: ry, width: rw, height: rh} =  area.rect;\n\t\t\tlet w = (rw / bgW) * baseW;\n\t\t\tlet h = (rh / bgH) * baseH;\n\t\t\tlet x = (rx / bgW) * baseW - baseW / 2;\n\t\t\tlet y = baseH - ((ry / bgH) * baseH) - h - baseH / 2;\n\t\t\t// w *= scaleX\n\t\t\t// h *= scaleY\n\t\t\t// x *= scaleX\n\t\t\t// y *= scaleY\n            // const p = boxDebugger.convertToNodeSpaceAR(cc.v2(x,y));\n\t\t\t// x = p.x;\n\t\t\t// y = p.y;\n\t\t\tlblNode.x = x;\n\t\t\tlblNode.y = y + h;\n\t\t\t// dn.scaleX = scaleX;\n\t\t\t// dn.scaleY = scaleY;\n\t\t\t// dn.scale = area.mapScale; // minScale; // this._mapScaleMax * area.mapScale; // ;\n\t\t\tconsole.log('[debug]', area.skeJsonData.name, x, y, w, h);\n\t\t\tgrap.fillRect(x, y, w, h);\n\t\t\tgrap.stroke();\n\t\t\t\n\t\t});\n\n\t},\n\taddPreloadAnima() {\n\n\t},\n\n\tpreload() {\n\n\t\tconst preloadArr = this._imageResList.concat(this._audioResList).concat(this._animaResList);\n\t\t// console.log(preloadArr);\n\t\tcc.assetManager.loadAny(preloadArr, null, (f, t, item) => {\n\t\t\t// console.log(f, t, item)\n\t\t}, (err, data) => {\n\t\t\t// console.log(err, data);\n\t\t\tconst ground = cc.find(`Canvas/frame-border/ground`);\n\t\t\tconst groundBg = cc.find(`Canvas/frame-border/ground/bg`);\n\t\t\tgroundBg.active = false;\n\t\t\tconst baseRect = this.data.bgItem.rect;\n\t\t\tgetSpriteFrimeByUrl(this.data.bgItem.url, (sf) => {\n\t\t\t\tconst gs = groundBg.getComponent(cc.Sprite);\n\t\t\t\tgs.spriteFrame = sf;\n\t\t\t\tgroundBg.active = true;\n\n\t\t\t\tlet dbCount = 0;\n\t\t\t\tlet finishDbCount = 0\n\t\t\t\tfor(const block of this.data.hotZoneItemArr) {\n\t\t\t\t\tif (block.gIdx == '0' || block.gIdx == '1') {\n\t\t\t\t\t\tdbCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const block of this.data.hotZoneItemArr) {\n\n\t\t\t\t\t\n\t\t\t\t\tif (block.gIdx == '2') {\n\t\t\t\t\t\tconst s1 = ((ground.width  / block.imgSizeW) + (ground.height  / block.imgSizeH)) / 2\n\t\t\t\t\t\tconst node = new cc.Node();\n\t\t\t\t\t\tnode.parent = ground;\n\t\t\t\t\t\tconst spr = node.addComponent(cc.Sprite);\n\t\t\t\t\t\tgetSpriteFrimeByUrl(block.pic_url, (sf) => {\n\t\t\t\t\t\tspr.spriteFrame = sf;\n\t\t\t\t\t\tnode.scale = s1;\n\t\t\t\t\t\t})\n\n\t\t\t\t\t}\n\t\t\t\t\tif (block.gIdx == '0' || block.gIdx == '1') {\n\n\t\t\t\t\t\tconst n = new cc.Node();\n\t\t\t\t\t\t// n.scale = 0.25;\n\t\t\t\t\t\tn.scale = ground.width / groundBg.width;\n\n\t\t\t\t\t\tn.parent = ground;\n\t\t\t\t\t\tn.active = false;\n\n\t\t\t\t\t\tif (block.animType == 'spine') {\n\t\t\t\n\t\t\t\t\t\t\tconst skeleton = n.addComponent(sp.Skeleton);\n\t\t\t\t\t\t\tn.isSpine = true;\n\n\t\t\t\t\t\t\tloadSpine(skeleton, block.texPngData.name, {\n\t\t\t\t\t\t\t\ttex: block.texPngData.url, \n\t\t\t\t\t\t\t\tatlas: block.texJsonData.url,\n\t\t\t\t\t\t\t\tske: block.skeJsonData.url,\n\t\t\t\t\t\t\t}).then(({width, height}) => {\n\t\t\t\t\t\t\t\tn.width = width;\n\t\t\t\t\t\t\t\tn.height = height;\t\n\t\t\t\t\t\t\t\tn.active = true;\n\t\t\t\t\t\t\t\t// db.playAnimation('null', 0);\n\t\t\t\t\t\t\t\t// skeleton.setToSetupPose();\n\t\t\t\t\t\t\t\t// skeleton.setAnimation(0, 'enlarge', true);\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tthis._allAnimationNodes.push(n);\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}).catch(() => {\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\n\t\t\t\t\t\t\tconst db = n.addComponent(dragonBones.ArmatureDisplay);\n\n\t\t\t\t\t\t\tloadDragonBones(db, {\n\t\t\t\t\t\t\t\ttex: block.texPngData.url, \n\t\t\t\t\t\t\t\tatlas: block.texJsonData.url,\n\t\t\t\t\t\t\t\tske: block.skeJsonData.url,\n\t\t\t\t\t\t\t}).then(({width, height}) => {\n\t\t\t\t\t\t\t\tn.width = width;\n\t\t\t\t\t\t\t\tn.height = height;\t\n\t\t\t\t\t\t\t\tn.active = true;\n\t\t\t\t\t\t\t\tdb.playAnimation('null', 0);\n\t\t\t\t\t\t\t\tthis._allAnimationNodes.push(n);\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}).catch(() => {\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\tif (block.gIdx == '0') {\n\t\t\t\t\t\t\tconst rectInfo = {\n\t\t\t\t\t\t\t\tnode: n,\n\t\t\t\t\t\t\t\taudio_url: block.audio_url ,\n\t\t\t\t\t\t\t\trect: {\n\t\t\t\t\t\t\t\t\tx: block.rect.x / baseRect.width,\n\t\t\t\t\t\t\t\t\ty: block.rect.y / baseRect.height,\n\t\t\t\t\t\t\t\t\twidth: block.rect.width / baseRect.width,\n\t\t\t\t\t\t\t\t\theight: block.rect.height / baseRect.height,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tthis._figurePointRectArray.push(rectInfo);\n\n\t\t\t\t\t\t\t// this.addRectNodeListener(block);\n\t\t\n\t\t\t\t\t\t\tif (block.labelText) {\n\t\t\t\t\t\t\t\tconst k = +block.labelText * 1000;\n\t\t\t\t\t\t\t\tif(!isNaN(k)) {\n\t\t\t\t\t\t\t\t\tthis._hintsNodeList.push({\n\t\t\t\t\t\t\t\t\t\tnode: n,\n\t\t\t\t\t\t\t\t\t\tafter: k\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t// console.log(this.data);\n\t\t\tconsole.log('resource perload finish');\n\n// <<<<<<< HEAD\n// =======\n// \t\t\tif (window && window[\"air\"]) {\n// \t\t\t\t// cc.find('Canvas').opacity = 0;\n// \t\t\t\twindow.air.onCourseInScreen = (next) => {\n// \t\t\t\t\t// cc.find('Canvas').opacity = 255;\n// \t\t\t\t\tthis.loadEnd();\n// \t\t\t\t\tnext();\n// \t\t\t\t}\n// \t\t\t\twindow.air.hideAirClassLoading();\n// \t\t\t} else {\n// \t\t\t\tthis.loadEnd();\n// \t\t\t}\n// >>>>>>> 2d461e1910571bcfc6ad4dc93c2cedafc20923ea\n\n\t\t\tcc.debug.setDisplayStats(false);\n\t\t});\n\t},\n\n\n\tloadEnd() {\n\t\tif (window && window[\"air\"] && window[\"air\"].hideAirClassLoading) {\n\t\t\twindow[\"air\"].hideAirClassLoading();\n\t\t}\n\t\tthis.initData();\n\t\t// this.initAudio();\n\t\t// this.initView();\n\t\tthis.initBg();\n\t\t// this.initListener();\n\t\tthis.debugGraphics();\n\t\tthis.createStateMachine();\n\t},\n\n\t_cantouch: null,\n\tinitData() {\n\t\t// 所有全局变量 默认都是null \n\t\tthis._cantouch = true;\n\t},\n\n\t// audioBtn: null,\n\t// initAudio() {\n\t// \tconst audioNode = cc.find('Canvas/res/audio');\n\n\t// \tconst getAudioByResName = (resName) => {\n\t// \t\treturn audioNode.getChildByName(resName).getComponent(cc.AudioSource);\n\t// \t}\n\n\t// \tthis.audioBtn = getAudioByResName('btn');\n\n\t// },\n\n\n\t// initView() {\n\n\t// \t// this.initBg();\n\t// \t// this.initPic();\n\t// \t// this.initBtn();\n\t// \tthis.initIcon();\n\t// },\n\n\taddRectNodeListener(data) {\n\n\n\t\tconst bg = cc.find(`Canvas/frame-border/ground/bg`).parent;\n\n\t\tconst rate = (bg.scale * bg.width) / this.data.bgItem.rect.width;\n\n\t\tconst rectNode = new cc.Node();\n\t\trectNode.name = 'rect' + data.index;\n\t\tbg.addChild(rectNode, 20);\n\n\n\t\tconst ctx = rectNode.addComponent(cc.Graphics);\n\t\t// 红色矩形\n\t\tctx.lineWidth = 4;\n\t\tctx.strokeColor = cc.Color.BLACK;\n\t\tctx.fillColor = cc.Color.WHITE.setA(100);\n\n\t\tconst scale = rate / bg.scaleY;\n\n\t\tconsole.log('scale~ : ', scale)\n\n\t\trectNode.width = data.rect.width * scale;\n\t\trectNode.height = data.rect.height * scale;\n\t\trectNode.x = -bg.width / 2 + data.rect.x * scale + bg.x;\n\t\trectNode.y = bg.height / 2 - data.rect.height * scale - data.rect.y * scale + bg.y;\n\n\t\trectNode.anchorX = rectNode.anchorY = 0;\n\n\t\tconsole.log('data: ', data);\n\t\tconsole.log('rectNode: ', rectNode);\n\n\n\t\t// if (pageData.bgItem.isShowDebugLine) {\n\t\t\tctx.rect(0, 0, rectNode.width, rectNode.height);\n\t\t\t// ctx.fillRect(0, 0, 200, 200);\n\t\t// }\n\t\tctx.stroke();\n\t\tctx.fill();\n\n\t\trectNode.addComponent(cc.Button);\n\t\trectNode.on(\"click\", () => {\n\t\t\tconsole.log(\" in rectNode click\");\n\n\n\t\t\tconst _x = rectNode.x / bg.width;\n\t\t\tconst _y = rectNode.y / bg.height;\n\t\t\tconst _w = rectNode.width / bg.width;\n\t\t\tconst _h = rectNode.height / bg.height;\n\n\t\t\tconst pos = {\n\t\t\t\tx: _x + _w / 2 + 0.5,\n\t\t\t\ty: -(_y + _h / 2 - 0.5)\n\t\t\t}\n\t\t\tthis._lastFingerPosition = {\n\t\t\t\tpos: pos,\n\t\t\t\tdirty: true\n\t\t\t};\n\n\t\t})\n\n\t},\n\n\tinitBg() {\n\t\tconst bgNode = cc.find('Canvas/bg');\n\t\tbgNode.scale = this._mapScaleMax;\n\t\tconsole.log('this._mapScaleMax', this._mapScaleMax);\n\t},\n\n\t\n\t\n\n\t/*initBtn() {\n\n\t\tthis.curPage = 0;\n\t\tconst bottomPart = cc.find('Canvas/bottomPart');\n\t\tbottomPart.zIndex = 5; // 提高层级\n\n\t\tbottomPart.x = bottomPart.parent.width / 2;\n\t\tbottomPart.y = -bottomPart.parent.height / 2;\n\n\t\tconst leftBtnNode = bottomPart.getChildByName('btn_left');\n\t\t//节点中添加了button组件 则可以添加click事件监听\n\t\tleftBtnNode.on('click', () => {\n\t\t\tif (!this._cantouch) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.curPage == 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.curPage = 0\n\t\t\tthis.leftMove();\n\n\t\t\t// 游戏结束时需要调用这个方法通知系统作业完成\n\t\t\tonHomeworkFinish();\n\n\t\t\tcc.audioEngine.play(this.audioBtn.clip, false, 0.8)\n\t\t})\n\n\t\tconst rightBtnNode = bottomPart.getChildByName('btn_right');\n\t\t//节点中添加了button组件 则可以添加click事件监听\n\t\trightBtnNode.on('click', () => {\n\t\t\tif (!this._cantouch) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.curPage == 1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.curPage = 1\n\t\t\tthis.rightMove();\n\n\t\t\tcc.audioEngine.play(this.audioBtn.clip, false, 0.5)\n\t\t})\n\t},*/\n\n\n\n\n\t// update (dt) {},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t_timeoutIds: null,\n\t_intervalIds: null,\n\t// 生命周期\n\tonDestroy() {\n\t\tconsole.log('op15 onDestroy');\n\t\tthis._timeoutIds.forEach(id => {\n\t\t\tclearTimeout(id);\n\t\t});\n\t\tthis._intervalIds.forEach(id => {\n\t\t\tclearInterval(id);\n\t\t});\n\t\tthis.gameMachineService.stopChild();\n\t\tthis.gameMachineService.stop();\n\t\tif(window.courseware && window.courseware.closeOsmoFingerRead) {\n\t\t\tif (this.isOpenedOsmoFingerRead) {\n\t\t\t\twindow.courseware.closeOsmoFingerRead()\n\t\t\t}\n\t\t}\n\t},\n\n\n\n\n\n});\n"]}
\ No newline at end of file
diff --git a/library/uuid-to-mtime.json b/library/uuid-to-mtime.json
index 36b2d0c..6ec00c6 100644
--- a/library/uuid-to-mtime.json
+++ b/library/uuid-to-mtime.json
@@ -1,502 +1,502 @@
 {
   "9836134e-b892-4283-b6b2-78b5acf3ed45": {
     "asset": 1617772640000,
-    "meta": 1659424298775,
+    "meta": 1660530040432,
     "relativePath": "effects"
   },
   "430eccbf-bf2c-4e6e-8c0c-884bbb487f32": {
     "asset": 1617772640000,
-    "meta": 1659424298807,
+    "meta": 1660530040463,
     "relativePath": "effects/__builtin-editor-gizmo-line.effect"
   },
   "6c5cf6e1-b044-4eac-9431-835644d57381": {
     "asset": 1617772640000,
-    "meta": 1659424298818,
+    "meta": 1660530040473,
     "relativePath": "effects/__builtin-editor-gizmo-unlit.effect"
   },
   "115286d1-2e10-49ee-aab4-341583f607e8": {
     "asset": 1617772640000,
-    "meta": 1659424298851,
+    "meta": 1660530040504,
     "relativePath": "effects/__builtin-editor-gizmo.effect"
   },
   "abc2cb62-7852-4525-a90d-d474487b88f2": {
     "asset": 1617772640000,
-    "meta": 1659424298945,
+    "meta": 1660530040591,
     "relativePath": "effects/builtin-phong.effect"
   },
   "e2f00085-c597-422d-9759-52c360279106": {
     "asset": 1617772640000,
-    "meta": 1659424298992,
+    "meta": 1660530040637,
     "relativePath": "effects/builtin-toon.effect"
   },
   "f8e6b000-5643-4b86-9080-aa680ce1f599": {
     "asset": 1617772640000,
-    "meta": 1659424298997,
+    "meta": 1660530040638,
     "relativePath": "image"
   },
   "71561142-4c83-4933-afca-cb7a17f67053": {
     "asset": 1617772640000,
-    "meta": 1659424299010,
+    "meta": 1660530040652,
     "relativePath": "image/default_btn_disabled.png"
   },
   "e851e89b-faa2-4484-bea6-5c01dd9f06e2": {
     "asset": 1617772640000,
-    "meta": 1659424299012,
+    "meta": 1660530040653,
     "relativePath": "image/default_btn_normal.png"
   },
   "b43ff3c2-02bb-4874-81f7-f2dea6970f18": {
     "asset": 1617772640000,
-    "meta": 1659424299021,
+    "meta": 1660530040662,
     "relativePath": "image/default_btn_pressed.png"
   },
   "edd215b9-2796-4a05-aaf5-81f96c9281ce": {
     "asset": 1617772640000,
-    "meta": 1659424299020,
+    "meta": 1660530040663,
     "relativePath": "image/default_editbox_bg.png"
   },
   "d81ec8ad-247c-4e62-aa3c-d35c4193c7af": {
     "asset": 1617772640000,
-    "meta": 1659424299029,
+    "meta": 1660530040671,
     "relativePath": "image/default_panel.png"
   },
   "99170b0b-d210-46f1-b213-7d9e3f23098a": {
     "asset": 1617772640000,
-    "meta": 1659424299030,
+    "meta": 1660530040672,
     "relativePath": "image/default_progressbar_bg.png"
   },
   "cfef78f1-c8df-49b7-8ed0-4c953ace2621": {
     "asset": 1617772640000,
-    "meta": 1659424299038,
+    "meta": 1660530040679,
     "relativePath": "image/default_progressbar.png"
   },
   "567dcd80-8bf4-4535-8a5a-313f1caf078a": {
     "asset": 1617772640000,
-    "meta": 1659424299040,
+    "meta": 1660530040680,
     "relativePath": "image/default_radio_button_off.png"
   },
   "4bab67cb-18e6-4099-b840-355f0473f890": {
     "asset": 1617772640000,
-    "meta": 1659424299049,
+    "meta": 1660530040687,
     "relativePath": "image/default_scrollbar_bg.png"
   },
   "9d60001f-b5f4-4726-a629-2659e3ded0b8": {
     "asset": 1617772640000,
-    "meta": 1659424299048,
+    "meta": 1660530040688,
     "relativePath": "image/default_radio_button_on.png"
   },
   "617323dd-11f4-4dd3-8eec-0caf6b3b45b9": {
     "asset": 1617772640000,
-    "meta": 1659424299057,
+    "meta": 1660530040695,
     "relativePath": "image/default_scrollbar_vertical_bg.png"
   },
   "d6d3ca85-4681-47c1-b5dd-d036a9d39ea2": {
     "asset": 1617772640000,
-    "meta": 1659424299059,
+    "meta": 1660530040696,
     "relativePath": "image/default_scrollbar_vertical.png"
   },
   "0275e94c-56a7-410f-bd1a-fc7483f7d14a": {
     "asset": 1617772640000,
-    "meta": 1659424299065,
+    "meta": 1660530040703,
     "relativePath": "image/default_sprite_splash.png"
   },
   "0291c134-b3da-4098-b7b5-e397edbe947f": {
     "asset": 1617772640000,
-    "meta": 1659424299066,
+    "meta": 1660530040704,
     "relativePath": "image/default_scrollbar.png"
   },
   "6e056173-d285-473c-b206-40a7fff5386e": {
     "asset": 1617772640000,
-    "meta": 1659424299074,
+    "meta": 1660530040715,
     "relativePath": "image/default_sprite.png"
   },
   "73a0903d-d80e-4e3c-aa67-f999543c08f5": {
     "asset": 1617772640000,
-    "meta": 1659424299076,
+    "meta": 1660530040716,
     "relativePath": "image/default_toggle_checkmark.png"
   },
   "d29077ba-1627-4a72-9579-7b56a235340c": {
     "asset": 1617772640000,
-    "meta": 1659424299084,
+    "meta": 1660530040726,
     "relativePath": "image/default_toggle_normal.png"
   },
   "c25b9d50-c8fc-4d27-beeb-6e7c1f2e5c0f": {
     "asset": 1617772640000,
-    "meta": 1659424299083,
+    "meta": 1660530040727,
     "relativePath": "image/default_toggle_disabled.png"
   },
   "b181c1e4-0a72-4a91-bfb0-ae6f36ca60bd": {
     "asset": 1617772640000,
-    "meta": 1659424299092,
+    "meta": 1660530040736,
     "relativePath": "image/default_toggle_pressed.png"
   },
   "5c3eedba-6c41-4c0c-9ba7-d91f813cbd1c": {
     "asset": 1617772640000,
-    "meta": 1659424299093,
+    "meta": 1660530040737,
     "relativePath": "materials"
   },
   "c4480a0a-6ac5-443f-8b40-361a14257fc8": {
     "asset": 1617772640000,
-    "meta": 1659424299474,
+    "meta": 1660530041074,
     "relativePath": "materials/builtin-phong.mtl"
   },
   "fc09f9bd-2cce-4605-b630-8145ef809ed6": {
     "asset": 1617772640000,
-    "meta": 1659424299096,
+    "meta": 1660530040740,
     "relativePath": "misc"
   },
   "2be36297-9abb-4fee-8049-9ed5e271da8a": {
     "asset": 1617772640000,
-    "meta": 1659424299101,
+    "meta": 1660530040745,
     "relativePath": "misc/default_video.mp4"
   },
   "db019bf7-f71c-4111-98cf-918ea180cb48": {
     "asset": 1617772640000,
-    "meta": 1659424299102,
+    "meta": 1660530040746,
     "relativePath": "model"
   },
   "e39e96e6-6f6e-413f-bcf1-ac7679bb648a": {
     "asset": 1617772640000,
-    "meta": 1659424299103,
+    "meta": 1660530040747,
     "relativePath": "model/prefab"
   },
   "600301aa-3357-4a10-b086-84f011fa32ba": {
     "asset": 1617772640000,
-    "meta": 1659424299106,
+    "meta": 1660530040753,
     "relativePath": "image/default-particle.png"
   },
   "a87cc147-01b2-43f8-8e42-a7ca90b0c757": {
     "asset": 1617772640000,
-    "meta": 1659424299105,
+    "meta": 1660530040750,
     "relativePath": "model/prefab/box.prefab"
   },
   "b5fc2cf2-7942-483d-be1f-bbeadc4714ad": {
     "asset": 1617772640000,
-    "meta": 1659424299110,
+    "meta": 1660530040755,
     "relativePath": "model/prefab/cone.prefab"
   },
   "fe1417b6-fe6b-46a4-ae7c-9fd331f33a2a": {
     "asset": 1617772640000,
-    "meta": 1659424299109,
+    "meta": 1660530040752,
     "relativePath": "model/prefab/capsule.prefab"
   },
   "1c5e4038-953a-44c2-b620-0bbfc6170477": {
     "asset": 1617772640000,
-    "meta": 1659424299113,
+    "meta": 1660530040757,
     "relativePath": "model/prefab/cylinder.prefab"
   },
   "3f376125-a699-40ca-ad05-04d662eaa1f2": {
     "asset": 1617772640000,
-    "meta": 1659424299112,
+    "meta": 1660530040761,
     "relativePath": "model/prefab/plane.prefab"
   },
   "6c9ef10d-b479-420b-bfe6-39cdda6a8ae0": {
     "asset": 1617772640000,
-    "meta": 1659424299115,
+    "meta": 1660530040759,
     "relativePath": "model/prefab/quad.prefab"
   },
   "2d9a4b85-b0ab-4c46-84c5-18f393ab2058": {
     "asset": 1617772640000,
-    "meta": 1659424299116,
+    "meta": 1660530040762,
     "relativePath": "model/prefab/sphere.prefab"
   },
   "de510076-056b-484f-b94c-83bef217d0e1": {
     "asset": 1617772640000,
-    "meta": 1659424299129,
+    "meta": 1660530040776,
     "relativePath": "model/prefab/torus.prefab"
   },
   "f6e6dd15-71d1-4ffe-ace7-24fd39942c05": {
     "asset": 1617772640000,
-    "meta": 1659424299130,
+    "meta": 1660530040777,
     "relativePath": "obsolete"
   },
   "8a96b965-2dc0-4e03-aa90-3b79cb93b5b4": {
     "asset": 1617772640000,
-    "meta": 1659424299142,
+    "meta": 1660530040789,
     "relativePath": "obsolete/atom.png"
   },
   "f743d2b6-b7ea-4c14-a55b-547ed4d0a045": {
     "asset": 1617772640000,
-    "meta": 1659424299143,
+    "meta": 1660530040790,
     "relativePath": "particle"
   },
   "b8223619-7e38-47c4-841f-9160c232495a": {
     "asset": 1617772640000,
-    "meta": 1659424299489,
+    "meta": 1660530041087,
     "relativePath": "obsolete/atom.plist"
   },
   "d0a82d39-bede-46c4-b698-c81ff0dedfff": {
     "asset": 1617772640000,
-    "meta": 1659424299151,
+    "meta": 1660530040797,
     "relativePath": "particle/atom.png"
   },
   "ae6c6c98-11e4-452f-8758-75f5c6a56e83": {
     "asset": 1617772640000,
-    "meta": 1659424299152,
+    "meta": 1660530040798,
     "relativePath": "prefab"
   },
   "897ef7a1-4860-4f64-968d-f5924b18668a": {
     "asset": 1617772640000,
-    "meta": 1659424299154,
+    "meta": 1660530040800,
     "relativePath": "prefab/2d-camera.prefab"
   },
   "b2687ac4-099e-403c-a192-ff477686f4f5": {
     "asset": 1617772640000,
-    "meta": 1659424299491,
+    "meta": 1660530041089,
     "relativePath": "particle/atom.plist"
   },
   "70d7cdb0-04cd-41bb-9480-c06a4785f386": {
     "asset": 1617772640000,
-    "meta": 1659424299156,
+    "meta": 1660530040802,
     "relativePath": "prefab/3d-camera.prefab"
   },
   "70bbeb73-6dc2-4ee4-8faf-76b3a0e34ec4": {
     "asset": 1617772640000,
-    "meta": 1659424299158,
+    "meta": 1660530040805,
     "relativePath": "prefab/3d-particle.prefab"
   },
   "ed88f13d-fcad-4848-aa35-65a2cb973584": {
     "asset": 1617772640000,
-    "meta": 1659424299161,
+    "meta": 1660530040812,
     "relativePath": "prefab/3d-stage.prefab"
   },
   "972b9a4d-47ee-4c74-b5c3-61d8a69bc29f": {
     "asset": 1617772640000,
-    "meta": 1659424299164,
+    "meta": 1660530040814,
     "relativePath": "prefab/button.prefab"
   },
   "2c937608-2562-40ea-b264-7395df6f0cea": {
     "asset": 1617772640000,
-    "meta": 1659424299166,
+    "meta": 1660530040817,
     "relativePath": "prefab/canvas.prefab"
   },
   "61aeb05b-3b32-452b-8eed-2b76deeed554": {
     "asset": 1617772640000,
-    "meta": 1659424299168,
+    "meta": 1660530040819,
     "relativePath": "prefab/editbox.prefab"
   },
   "27756ebb-3d33-44b0-9b96-e858fadd4dd4": {
     "asset": 1617772640000,
-    "meta": 1659424299169,
+    "meta": 1660530040820,
     "relativePath": "prefab/label.prefab"
   },
   "785a442c-3ceb-45be-a46e-7317f625f3b9": {
     "asset": 1617772640000,
-    "meta": 1659424299171,
+    "meta": 1660530040822,
     "relativePath": "prefab/layout.prefab"
   },
   "a3ee0214-b432-4865-9666-4a3211814282": {
     "asset": 1617772640000,
-    "meta": 1659424299172,
+    "meta": 1660530040823,
     "relativePath": "prefab/light"
   },
   "61906da3-7003-4bda-9abc-5769c76faee4": {
     "asset": 1617772640000,
-    "meta": 1659424299173,
+    "meta": 1660530040825,
     "relativePath": "prefab/light/ambient.prefab"
   },
   "ddb99b39-7004-47cd-9705-751905c43c46": {
     "asset": 1617772640000,
-    "meta": 1659424299175,
+    "meta": 1660530040826,
     "relativePath": "prefab/light/directional.prefab"
   },
   "0cf30284-9073-46bc-9eba-e62b69dbbff3": {
     "asset": 1617772640000,
-    "meta": 1659424299176,
+    "meta": 1660530040828,
     "relativePath": "prefab/light/point.prefab"
   },
   "f5331fd2-bf42-4ee3-a3fd-3e1657600eff": {
     "asset": 1617772640000,
-    "meta": 1659424299178,
+    "meta": 1660530040829,
     "relativePath": "prefab/light/spot.prefab"
   },
   "ca8401fe-ad6e-41a8-bd46-8e3e4e9945be": {
     "asset": 1617772640000,
-    "meta": 1659424299180,
+    "meta": 1660530040831,
     "relativePath": "prefab/pageview.prefab"
   },
   "cd33edea-55f5-46c2-958d-357a01384a36": {
     "asset": 1617772640000,
-    "meta": 1659424299181,
+    "meta": 1660530040833,
     "relativePath": "prefab/particlesystem.prefab"
   },
   "5965ffac-69da-4b55-bcde-9225d0613c28": {
     "asset": 1617772640000,
-    "meta": 1659424299184,
+    "meta": 1660530040835,
     "relativePath": "prefab/progressBar.prefab"
   },
   "4a37dd57-78cd-4cec-aad4-f11a73d12b63": {
     "asset": 1617772640000,
-    "meta": 1659424299185,
+    "meta": 1660530040837,
     "relativePath": "prefab/richtext.prefab"
   },
   "32044bd2-481f-4cf1-a656-e2b2fb1594eb": {
     "asset": 1617772640000,
-    "meta": 1659424299188,
+    "meta": 1660530040839,
     "relativePath": "prefab/scrollview.prefab"
   },
   "0004d1cf-a0ad-47d8-ab17-34d3db9d35a3": {
     "asset": 1617772640000,
-    "meta": 1659424299190,
+    "meta": 1660530040841,
     "relativePath": "prefab/slider.prefab"
   },
   "1f55e3be-b89b-4b79-88de-47fd31018044": {
     "asset": 1617772640000,
-    "meta": 1659424299192,
+    "meta": 1660530040843,
     "relativePath": "prefab/sprite_splash.prefab"
   },
   "96083d03-c332-4a3f-9386-d03e2d19e8ee": {
     "asset": 1617772640000,
-    "meta": 1659424299194,
+    "meta": 1660530040844,
     "relativePath": "prefab/sprite.prefab"
   },
   "7de03a80-4457-438d-95a7-3e7cdffd6086": {
     "asset": 1617772640000,
-    "meta": 1659424299196,
+    "meta": 1660530040846,
     "relativePath": "prefab/tiledmap.prefab"
   },
   "0e42ba95-1fa1-46aa-b2cf-143cd1bcee2c": {
     "asset": 1617772640000,
-    "meta": 1659424299198,
+    "meta": 1660530040848,
     "relativePath": "prefab/tiledtile.prefab"
   },
   "0d784963-d024-4ea6-a7db-03be0ad63010": {
     "asset": 1617772640000,
-    "meta": 1659424299200,
+    "meta": 1660530040850,
     "relativePath": "prefab/toggle.prefab"
   },
   "bf0a434c-84dd-4a8e-a08a-7a36f180cc75": {
     "asset": 1617772640000,
-    "meta": 1659424299203,
+    "meta": 1660530040853,
     "relativePath": "prefab/toggleContainer.prefab"
   },
   "d1b8be49-b0a0-435c-83b7-552bed4bbe35": {
     "asset": 1617772640000,
-    "meta": 1659424299212,
+    "meta": 1660530040866,
     "relativePath": "prefab/toggleGroup.prefab"
   },
   "232d2782-c4bd-4bb4-9e01-909f03d6d3b9": {
     "asset": 1617772640000,
-    "meta": 1659424299221,
+    "meta": 1660530040869,
     "relativePath": "prefab/videoplayer.prefab"
   },
   "8c5001fd-07ee-4a4b-a8a0-63e15195e94d": {
     "asset": 1617772640000,
-    "meta": 1659424299224,
+    "meta": 1660530040872,
     "relativePath": "prefab/webview.prefab"
   },
   "d8afc78c-4eac-4a9f-83dd-67bc70344d33": {
     "asset": 1617772640000,
-    "meta": 1659424299225,
+    "meta": 1660530040872,
     "relativePath": "resources"
   },
   "294c1663-4adf-4a1e-a795-53808011a38a": {
     "asset": 1617772640000,
-    "meta": 1659424299226,
+    "meta": 1660530040873,
     "relativePath": "resources/effects"
   },
   "30682f87-9f0d-4f17-8a44-72863791461b": {
     "asset": 1617772640000,
-    "meta": 1659424299235,
+    "meta": 1660530040881,
     "relativePath": "resources/effects/builtin-2d-graphics.effect"
   },
   "144c3297-af63-49e8-b8ef-1cfa29b3be28": {
     "asset": 1617772640000,
-    "meta": 1659424299244,
+    "meta": 1660530040888,
     "relativePath": "resources/effects/builtin-2d-gray-sprite.effect"
   },
   "f18742d7-56d2-4eb5-ae49-2d9d710b37c8": {
     "asset": 1617772640000,
-    "meta": 1659424299257,
+    "meta": 1660530040905,
     "relativePath": "resources/effects/builtin-2d-label.effect"
   },
   "0e93aeaa-0b53-4e40-b8e0-6268b4e07bd7": {
     "asset": 1617772640000,
-    "meta": 1659424299266,
+    "meta": 1660530040916,
     "relativePath": "resources/effects/builtin-2d-spine.effect"
   },
   "2874f8dd-416c-4440-81b7-555975426e93": {
     "asset": 1617772640000,
-    "meta": 1659424299275,
+    "meta": 1660530040923,
     "relativePath": "resources/effects/builtin-2d-sprite.effect"
   },
   "829a282c-b049-4019-bd38-5ace8d8a6417": {
     "asset": 1617772640000,
-    "meta": 1659424299355,
+    "meta": 1660530041007,
     "relativePath": "resources/effects/builtin-3d-particle.effect"
   },
   "2a7c0036-e0b3-4fe1-8998-89a54b8a2bec": {
     "asset": 1617772640000,
-    "meta": 1659424299376,
+    "meta": 1660530041024,
     "relativePath": "resources/effects/builtin-3d-trail.effect"
   },
   "c0040c95-c57f-49cd-9cbc-12316b73d0d4": {
     "asset": 1617772640000,
-    "meta": 1659424299382,
+    "meta": 1660530041031,
     "relativePath": "resources/effects/builtin-clear-stencil.effect"
   },
   "6d91e591-4ce0-465c-809f-610ec95019c6": {
     "asset": 1617772640000,
-    "meta": 1659424299413,
+    "meta": 1660530041045,
     "relativePath": "resources/effects/builtin-unlit.effect"
   },
   "bbee2217-c261-49bd-a8ce-708d6bcc3500": {
     "asset": 1617772640000,
-    "meta": 1659424299417,
+    "meta": 1660530041046,
     "relativePath": "resources/materials"
   },
   "6f801092-0c37-4f30-89ef-c8d960825b36": {
     "asset": 1617772640000,
-    "meta": 1659424299505,
+    "meta": 1660530041102,
     "relativePath": "resources/materials/builtin-2d-base.mtl"
   },
   "a153945d-2511-4c14-be7b-05d242f47d57": {
     "asset": 1617772640000,
-    "meta": 1659424299506,
+    "meta": 1660530041117,
     "relativePath": "resources/materials/builtin-2d-graphics.mtl"
   },
   "3a7bb79f-32fd-422e-ada2-96f518fed422": {
     "asset": 1617772640000,
-    "meta": 1659424299524,
+    "meta": 1660530041119,
     "relativePath": "resources/materials/builtin-2d-gray-sprite.mtl"
   },
   "e02d87d4-e599-4d16-8001-e14891ac6506": {
     "asset": 1617772640000,
-    "meta": 1659424299524,
+    "meta": 1660530041122,
     "relativePath": "resources/materials/builtin-2d-label.mtl"
   },
   "7afd064b-113f-480e-b793-8817d19f63c3": {
     "asset": 1617772640000,
-    "meta": 1659424299525,
+    "meta": 1660530041123,
     "relativePath": "resources/materials/builtin-2d-spine.mtl"
   },
   "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432": {
     "asset": 1617772640000,
-    "meta": 1659424299526,
+    "meta": 1660530041124,
     "relativePath": "resources/materials/builtin-2d-sprite.mtl"
   },
   "432fa09c-cf03-4cff-a186-982604408a07": {
     "asset": 1617772640000,
-    "meta": 1659424299530,
+    "meta": 1660530041125,
     "relativePath": "resources/materials/builtin-3d-particle.mtl"
   },
   "466d4f9b-e5f4-4ea8-85d5-3c6e9a65658a": {
     "asset": 1617772640000,
-    "meta": 1659424299534,
+    "meta": 1660530041125,
     "relativePath": "resources/materials/builtin-3d-trail.mtl"
   },
   "cf7e0bb8-a81c-44a9-ad79-d28d43991032": {
     "asset": 1617772640000,
-    "meta": 1659424299532,
+    "meta": 1660530041126,
     "relativePath": "resources/materials/builtin-clear-stencil.mtl"
   },
   "2a296057-247c-4a1c-bbeb-0548b6c98650": {
     "asset": 1617772640000,
-    "meta": 1659424299537,
+    "meta": 1660530041127,
     "relativePath": "resources/materials/builtin-unlit.mtl"
   },
   "954fec8b-cd16-4bb9-a3b7-7719660e7558": {
     "asset": 1617772640000,
-    "meta": 1659424301959,
+    "meta": 1660530043432,
     "relativePath": "model/primitives.fbx"
   },
   "c35bb2f6-f24a-4850-ae44-643f2fdc7541": {
@@ -710,13 +710,13 @@
     "relativePath": "OP15/script/util.js"
   },
   "316d56e4-880f-4338-9e6b-7db9e72ad09b": {
-    "asset": 1659342383855,
-    "meta": 1659342383867,
+    "asset": 1660530182535,
+    "meta": 1660530182540,
     "relativePath": "OP15/scene/OP15.fire"
   },
   "ddbf4888-2678-4720-899f-a7e48a445d42": {
-    "asset": 1659424287498,
-    "meta": 1659424302550,
+    "asset": 1660530179166,
+    "meta": 1660530180565,
     "relativePath": "OP15/scene/OP15.js"
   }
 }
\ No newline at end of file
diff --git a/temp/quick-scripts/dst/__file_stats__.json b/temp/quick-scripts/dst/__file_stats__.json
index 75cb228..3c0632f 100644
--- a/temp/quick-scripts/dst/__file_stats__.json
+++ b/temp/quick-scripts/dst/__file_stats__.json
@@ -1 +1 @@
-{"version":"1.0.8","stats":{"/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/__qc_index__.js":"2022-08-02T07:11:42.746Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/util.js":"2022-08-02T07:11:42.719Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/state.js":"2022-08-02T07:11:42.717Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/defaultData.js":"2022-08-02T07:11:42.722Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/scene/OP15.js":"2022-08-02T07:11:42.726Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/xstate.js":"2022-08-02T07:11:42.724Z"}}
+{"version":"1.0.8","stats":{"/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/__qc_index__.js":"2022-08-15T02:20:44.207Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/state.js":"2022-08-15T02:20:44.179Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/xstate.js":"2022-08-15T02:20:44.186Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/scene/OP15.js":"2022-08-15T02:20:44.188Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/util.js":"2022-08-15T02:20:44.180Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/defaultData.js":"2022-08-15T02:20:44.182Z"}}
diff --git a/temp/quick-scripts/dst/__qc_bundle__.js b/temp/quick-scripts/dst/__qc_bundle__.js
index c798f13..d082b66 100644
--- a/temp/quick-scripts/dst/__qc_bundle__.js
+++ b/temp/quick-scripts/dst/__qc_bundle__.js
@@ -31,7 +31,7 @@ require('./assets/OP15/script/xstate');
                 (function() {
                     var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                     var __module = nodeEnv ? module : {exports:{}};
-                    var __filename = 'preview-scripts/assets/OP15/script/util.js';
+                    var __filename = 'preview-scripts/assets/OP15/script/state.js';
                     var __require = nodeEnv ? function (request) {
                         return cc.require(request);
                     } : function (request) {
@@ -39,3269 +39,3245 @@ require('./assets/OP15/script/xstate');
                     };
                     function __define (exports, require, module) {
                         if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
-cc._RF.push(module, 'ade7a9A1W1Ah7vGKIj+9VNT', 'util');
-// OP15/script/util.js
+cc._RF.push(module, '6acefvFAO9O7qvqEFnz5PJj', 'state');
+// OP15/script/state.js
 
 "use strict";
 
 exports.__esModule = true;
-exports.getPosByAngle = getPosByAngle;
-exports.getAngleByPos = getAngleByPos;
-exports.exchangeNodePos = exchangeNodePos;
-exports.RandomInt = RandomInt;
-exports.randomSortByArr = randomSortByArr;
-exports.setSprNodeMaxLen = setSprNodeMaxLen;
-exports.localPosTolocalPos = localPosTolocalPos;
-exports.worldPosToLocalPos = worldPosToLocalPos;
-exports.getScaleRateBy2Node = getScaleRateBy2Node;
-exports.getDistance = getDistance;
-exports.playAudioByUrl = playAudioByUrl;
-exports.btnClickAnima = btnClickAnima;
-exports.getSpriteFrimeByUrl = getSpriteFrimeByUrl;
-exports.getSprNode = getSprNode;
-exports.getSprNodeByUrl = getSprNodeByUrl;
-exports.playAudio = playAudio;
-exports.asyncDelay = asyncDelay;
-exports.showFireworks = showFireworks;
-exports.asyncTweenTo = asyncTweenTo;
-exports.asyncTweenBy = asyncTweenBy;
-exports.showTrebleFirework = showTrebleFirework;
-exports.onHomeworkFinish = onHomeworkFinish;
-exports.loadDragonBones = loadDragonBones;
-exports.loadSpine = loadSpine;
-exports.FireworkSettings = void 0;
-
-function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
-
-function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
-
-function getPosByAngle(angle, len) {
-  var radian = angle * Math.PI / 180;
-  var x = Math.sin(radian) * len;
-  var y = Math.cos(radian) * len;
-  return {
-    x: x,
-    y: y
-  };
-}
-
-function getAngleByPos(px, py, mx, my) {
-  var x = Math.abs(px - mx);
-  var y = Math.abs(py - my);
-  var z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
-  var cos = y / z;
-  var radina = Math.acos(cos); // 用反三角函数求弧度
-
-  var angle = Math.floor(180 / (Math.PI / radina) * 100) / 100; // 将弧度转换成角度
-
-  if (mx > px && my > py) {
-    // 鼠标在第四象限
-    angle = 180 - angle;
-  }
+exports.assign = o;
+exports.createMachine = s;
+exports.interpret = v;
+exports.InterpreterStatus = void 0;
 
-  if (mx === px && my > py) {
-    // 鼠标在y轴负方向上
-    angle = 180;
-  }
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
 
-  if (mx > px && my === py) {
-    // 鼠标在x轴正方向上
-    angle = 90;
-  }
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
 
-  if (mx < px && my > py) {
-    // 鼠标在第三象限
-    angle = 180 + angle;
-  }
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+function t(t, n) {
+  var e = "function" == typeof Symbol && t[Symbol.iterator];
+  if (!e) return t;
+  var r,
+      o,
+      i = e.call(t),
+      a = [];
 
-  if (mx < px && my === py) {
-    // 鼠标在x轴负方向
-    angle = 270;
+  try {
+    for (; (void 0 === n || n-- > 0) && !(r = i.next()).done;) {
+      a.push(r.value);
+    }
+  } catch (t) {
+    o = {
+      error: t
+    };
+  } finally {
+    try {
+      r && !r.done && (e = i["return"]) && e.call(i);
+    } finally {
+      if (o) throw o.error;
+    }
   }
 
-  if (mx < px && my < py) {
-    // 鼠标在第二象限
-    angle = 360 - angle;
-  } // console.log('angle: ', angle);
-
-
-  return angle;
-}
-
-function exchangeNodePos(baseNode, targetNode) {
-  return baseNode.convertToNodeSpaceAR(targetNode._parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y)));
+  return a;
 }
 
-function RandomInt(a, b) {
-  if (b === void 0) {
-    b = 0;
-  }
+var n;
+exports.InterpreterStatus = n;
+!function (t) {
+  t[t.NotStarted = 0] = "NotStarted", t[t.Running = 1] = "Running", t[t.Stopped = 2] = "Stopped";
+}(n || (exports.InterpreterStatus = n = {}));
+var e = {
+  type: "xstate.init"
+};
 
-  var max = Math.max(a, b);
-  var min = Math.min(a, b);
-  return Math.floor(Math.random() * (max - min) + min);
+function r(t) {
+  return void 0 === t ? [] : [].concat(t);
 }
 
-function randomSortByArr(arr) {
-  var newArr = [];
-  var tmpArr = arr.concat();
-
-  while (tmpArr.length > 0) {
-    var randomIndex = Math.floor(tmpArr.length * Math.random());
-    newArr.push(tmpArr[randomIndex]);
-    tmpArr.splice(randomIndex, 1);
-  }
-
-  return newArr;
+function o(t) {
+  return {
+    type: "xstate.assign",
+    assignment: t
+  };
 }
 
-function setSprNodeMaxLen(sprNode, maxW, maxH) {
-  var sx = maxW / sprNode.width;
-  var sy = maxH / sprNode.height;
-  var s = Math.min(sx, sy);
-  sprNode.scale = Math.round(s * 1000) / 1000;
+function i(t, n) {
+  return "string" == typeof (t = "string" == typeof t && n && n[t] ? n[t] : t) ? {
+    type: t
+  } : "function" == typeof t ? {
+    type: t.name,
+    exec: t
+  } : t;
 }
 
-function localPosTolocalPos(baseNode, targetNode) {
-  var worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y));
-  var localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));
-  return localPos;
+function a(t) {
+  return function (n) {
+    return t === n;
+  };
 }
 
-function worldPosToLocalPos(worldPos, baseNode) {
-  var localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));
-  return localPos;
+function u(t) {
+  return "string" == typeof t ? {
+    type: t
+  } : t;
 }
 
-function getScaleRateBy2Node(baseNode, targetNode, maxFlag) {
-  if (maxFlag === void 0) {
-    maxFlag = true;
-  }
+function c(t, n) {
+  return {
+    value: t,
+    context: n,
+    actions: [],
+    changed: !1,
+    matches: a(t)
+  };
+}
 
-  var worldRect1 = targetNode.getBoundingBoxToWorld();
-  var worldRect2 = baseNode.getBoundingBoxToWorld();
-  var sx = worldRect1.width / worldRect2.width;
-  var sy = worldRect1.height / worldRect2.height;
+function f(t, n, e) {
+  var r = n,
+      o = !1;
+  return [t.filter(function (t) {
+    if ("xstate.assign" === t.type) {
+      o = !0;
+      var n = Object.assign({}, r);
+      return "function" == typeof t.assignment ? n = t.assignment(r, e) : Object.keys(t.assignment).forEach(function (o) {
+        n[o] = "function" == typeof t.assignment[o] ? t.assignment[o](r, e) : t.assignment[o];
+      }), r = n, !1;
+    }
 
-  if (maxFlag) {
-    return Math.max(sx, sy);
-  } else {
-    return Math.min(sx, sy);
-  }
+    return !0;
+  }), r, o];
 }
 
-function getDistance(start, end) {
-  var pos = cc.v2(start.x - end.x, start.y - end.y);
-  var dis = Math.sqrt(pos.x * pos.x + pos.y * pos.y);
-  return dis;
-}
+function s(n, o) {
+  void 0 === o && (o = {});
+  var s = t(f(r(n.states[n.initial].entry).map(function (t) {
+    return i(t, o.actions);
+  }), n.context, e), 2),
+      l = s[0],
+      v = s[1],
+      y = {
+    config: n,
+    _options: o,
+    initialState: {
+      value: n.initial,
+      actions: l,
+      context: v,
+      matches: a(n.initial)
+    },
+    transition: function transition(e, o) {
+      var s,
+          l,
+          v = "string" == typeof e ? {
+        value: e,
+        context: n.context
+      } : e,
+          p = v.value,
+          g = v.context,
+          d = u(o),
+          x = n.states[p];
 
-function playAudioByUrl(audio_url, cb) {
-  if (cb === void 0) {
-    cb = null;
-  }
+      if (x.on) {
+        var m = r(x.on[d.type]);
 
-  if (audio_url) {
-    if (audio_url instanceof cc.AudioClip && audio_url.constructor.name == 'cc_AudioClip') {
-      var audioId = cc.audioEngine.play(audio_url, false, 0.8);
+        try {
+          for (var h = function (t) {
+            var n = "function" == typeof Symbol && Symbol.iterator,
+                e = n && t[n],
+                r = 0;
+            if (e) return e.call(t);
+            if (t && "number" == typeof t.length) return {
+              next: function next() {
+                return t && r >= t.length && (t = void 0), {
+                  value: t && t[r++],
+                  done: !t
+                };
+              }
+            };
+            throw new TypeError(n ? "Object is not iterable." : "Symbol.iterator is not defined.");
+          }(m), b = h.next(); !b.done; b = h.next()) {
+            var S = b.value;
+            if (void 0 === S) return c(p, g);
 
-      if (cb) {
-        cc.audioEngine.setFinishCallback(audioId, function () {
-          cb();
-        });
-      }
-    } else {
-      cc.assetManager.loadRemote(audio_url, function (err, audioClip) {
-        var audioId = cc.audioEngine.play(audioClip, false, 0.8);
+            var w = "string" == typeof S ? {
+              target: S
+            } : S,
+                j = w.target,
+                E = w.actions,
+                R = void 0 === E ? [] : E,
+                N = w.cond,
+                O = void 0 === N ? function () {
+              return !0;
+            } : N,
+                _ = void 0 === j,
+                k = null != j ? j : p,
+                T = n.states[k];
 
-        if (cb) {
-          cc.audioEngine.setFinishCallback(audioId, function () {
-            cb();
-          });
+            if (O(g, d)) {
+              var q = t(f((_ ? r(R) : [].concat(x.exit, R, T.entry).filter(function (t) {
+                return t;
+              })).map(function (t) {
+                return i(t, y._options.actions);
+              }), g, d), 3),
+                  z = q[0],
+                  A = q[1],
+                  B = q[2],
+                  C = null != j ? j : p;
+              return {
+                value: C,
+                context: A,
+                actions: z,
+                changed: j !== p || z.length > 0 || B,
+                matches: a(C)
+              };
+            }
+          }
+        } catch (t) {
+          s = {
+            error: t
+          };
+        } finally {
+          try {
+            b && !b.done && (l = h["return"]) && l.call(h);
+          } finally {
+            if (s) throw s.error;
+          }
         }
-      });
+      }
+
+      return c(p, g);
     }
-  }
+  };
+  return y;
 }
 
-function btnClickAnima(btn, time, rate) {
-  if (time === void 0) {
-    time = 0.15;
-  }
+var l = function l(t, n) {
+  return t.actions.forEach(function (e) {
+    var r = e.exec;
+    return r && r(t.context, n);
+  });
+};
 
-  if (rate === void 0) {
-    rate = 1.05;
-  }
+function v(t) {
+  var r = t.initialState,
+      o = n.NotStarted,
+      i = new Set(),
+      c = {
+    _machine: t,
+    send: function send(e) {
+      o === n.Running && (r = t.transition(r, e), l(r, u(e)), i.forEach(function (t) {
+        return t(r);
+      }));
+    },
+    subscribe: function subscribe(t) {
+      return i.add(t), t(r), {
+        unsubscribe: function unsubscribe() {
+          return i["delete"](t);
+        }
+      };
+    },
+    start: function start(i) {
+      if (i) {
+        var u = "object" == typeof i ? i : {
+          context: t.config.context,
+          value: i
+        };
+        r = {
+          value: u.value,
+          actions: [],
+          context: u.context,
+          matches: a(u.value)
+        };
+      }
 
-  btn.tmpScale = btn.scale;
-  btn.on(cc.Node.EventType.TOUCH_START, function () {
-    cc.tween(btn).to(time / 2, {
-      scale: btn.scale * rate
-    }).start();
-  });
-  btn.on(cc.Node.EventType.TOUCH_CANCEL, function () {
-    cc.tween(btn).to(time / 2, {
-      scale: btn.tmpScale
-    }).start();
-  });
-  btn.on(cc.Node.EventType.TOUCH_END, function () {
-    cc.tween(btn).to(time / 2, {
-      scale: btn.tmpScale
-    }).start();
-  });
-}
+      return o = n.Running, l(r, e), c;
+    },
+    stop: function stop() {
+      return o = n.Stopped, i.clear(), c;
+    },
 
-function getSpriteFrimeByUrl(url, cb) {
-  cc.loader.load({
-    url: url
-  }, function (err, img) {
-    var spriteFrame = new cc.SpriteFrame(img);
+    get state() {
+      return r;
+    },
 
-    if (cb) {
-      cb(spriteFrame);
+    get status() {
+      return o;
     }
-  });
-}
 
-function getSprNode(resName) {
-  var sf = cc.find('Canvas/res/img/' + resName).getComponent(cc.Sprite).spriteFrame;
-  var node = new cc.Node();
-  node.addComponent(cc.Sprite).spriteFrame = sf;
-  return node;
+  };
+  return c;
 }
 
-function getSprNodeByUrl(url, cb) {
-  var node = new cc.Node();
-  var spr = node.addComponent(cc.Sprite);
-  getSpriteFrimeByUrl(url, function (sf) {
-    spr.spriteFrame = sf;
+cc._RF.pop();
+                    }
+                    if (nodeEnv) {
+                        __define(__module.exports, __require, __module);
+                    }
+                    else {
+                        __quick_compile_project__.registerModuleFunc(__filename, function () {
+                            __define(__module.exports, __require, __module);
+                        });
+                    }
+                })();
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9PUDE1L3NjcmlwdC9zdGF0ZS5qcyJdLCJuYW1lcyI6WyJ0IiwibiIsImUiLCJTeW1ib2wiLCJpdGVyYXRvciIsInIiLCJvIiwiaSIsImNhbGwiLCJhIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJlcnJvciIsIk5vdFN0YXJ0ZWQiLCJSdW5uaW5nIiwiU3RvcHBlZCIsInR5cGUiLCJjb25jYXQiLCJhc3NpZ25tZW50IiwibmFtZSIsImV4ZWMiLCJ1IiwiYyIsImNvbnRleHQiLCJhY3Rpb25zIiwiY2hhbmdlZCIsIm1hdGNoZXMiLCJmIiwiZmlsdGVyIiwiT2JqZWN0IiwiYXNzaWduIiwia2V5cyIsImZvckVhY2giLCJzIiwic3RhdGVzIiwiaW5pdGlhbCIsImVudHJ5IiwibWFwIiwibCIsInYiLCJ5IiwiY29uZmlnIiwiX29wdGlvbnMiLCJpbml0aWFsU3RhdGUiLCJ0cmFuc2l0aW9uIiwicCIsImciLCJkIiwieCIsIm9uIiwibSIsImgiLCJsZW5ndGgiLCJUeXBlRXJyb3IiLCJiIiwiUyIsInciLCJ0YXJnZXQiLCJqIiwiRSIsIlIiLCJOIiwiY29uZCIsIk8iLCJfIiwiayIsIlQiLCJxIiwiZXhpdCIsInoiLCJBIiwiQiIsIkMiLCJTZXQiLCJfbWFjaGluZSIsInNlbmQiLCJzdWJzY3JpYmUiLCJhZGQiLCJ1bnN1YnNjcmliZSIsInN0YXJ0Iiwic3RvcCIsImNsZWFyIiwic3RhdGUiLCJzdGF0dXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLENBQVQsQ0FBV0EsQ0FBWCxFQUFhQyxDQUFiLEVBQWU7QUFBQyxNQUFJQyxDQUFDLEdBQUMsY0FBWSxPQUFPQyxNQUFuQixJQUEyQkgsQ0FBQyxDQUFDRyxNQUFNLENBQUNDLFFBQVIsQ0FBbEM7QUFBb0QsTUFBRyxDQUFD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LFNBQTNCO0FBQThERixRQUFBQSxDQUFDLEdBQUM7QUFBQ1EsVUFBQUEsS0FBSyxFQUFDVSxDQUFDLENBQUNWLEtBQVQ7QUFBZWEsVUFBQUEsT0FBTyxFQUFDLEVBQXZCO0FBQTBCRCxVQUFBQSxPQUFPLEVBQUNGLENBQUMsQ0FBQ0UsT0FBcEM7QUFBNENHLFVBQUFBLE9BQU8sRUFBQ25CLENBQUMsQ0FBQ2MsQ0FBQyxDQUFDVixLQUFIO0FBQXJELFNBQUY7QUFBa0U7O0FBQUEsYUFBT1AsQ0FBQyxHQUFDTCxDQUFDLENBQUNlLE9BQUosRUFBWXdCLENBQUMsQ0FBQ25DLENBQUQsRUFBR0gsQ0FBSCxDQUFiLEVBQW1Cc0IsQ0FBMUI7QUFBNEIsS0FBaFk7QUFBaVkwRCxJQUFBQSxJQUFJLEVBQUMsZ0JBQVU7QUFBQyxhQUFPNUUsQ0FBQyxHQUFDTCxDQUFDLENBQUNnQixPQUFKLEVBQVlWLENBQUMsQ0FBQzRFLEtBQUYsRUFBWixFQUFzQjNELENBQTdCO0FBQStCLEtBQWhiOztBQUFpYixRQUFJNEQsS0FBSixHQUFXO0FBQUMsYUFBTy9FLENBQVA7QUFBUyxLQUF0Yzs7QUFBdWMsUUFBSWdGLE1BQUosR0FBWTtBQUFDLGFBQU8vRSxDQUFQO0FBQVM7O0FBQTdkLEdBQWhEO0FBQStnQixTQUFPa0IsQ0FBUDtBQUFTIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxuXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbmZ1bmN0aW9uIHQodCxuKXt2YXIgZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighZSlyZXR1cm4gdDt2YXIgcixvLGk9ZS5jYWxsKHQpLGE9W107dHJ5e2Zvcig7KHZvaWQgMD09PW58fG4tLSA+MCkmJiEocj1pLm5leHQoKSkuZG9uZTspYS5wdXNoKHIudmFsdWUpfWNhdGNoKHQpe289e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3ImJiFyLmRvbmUmJihlPWkucmV0dXJuKSYmZS5jYWxsKGkpfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1yZXR1cm4gYX12YXIgbjshZnVuY3Rpb24odCl7dFt0Lk5vdFN0YXJ0ZWQ9MF09XCJOb3RTdGFydGVkXCIsdFt0LlJ1bm5pbmc9MV09XCJSdW5uaW5nXCIsdFt0LlN0b3BwZWQ9Ml09XCJTdG9wcGVkXCJ9KG58fChuPXt9KSk7dmFyIGU9e3R5cGU6XCJ4c3RhdGUuaW5pdFwifTtmdW5jdGlvbiByKHQpe3JldHVybiB2b2lkIDA9PT10P1tdOltdLmNvbmNhdCh0KX1mdW5jdGlvbiBvKHQpe3JldHVybnt0eXBlOlwieHN0YXRlLmFzc2lnblwiLGFzc2lnbm1lbnQ6dH19ZnVuY3Rpb24gaSh0LG4pe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZih0PVwic3RyaW5nXCI9PXR5cGVvZiB0JiZuJiZuW3RdP25bdF06dCk/e3R5cGU6dH06XCJmdW5jdGlvblwiPT10eXBlb2YgdD97dHlwZTp0Lm5hbWUsZXhlYzp0fTp0fWZ1bmN0aW9uIGEodCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0PT09bn19ZnVuY3Rpb24gdSh0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD97dHlwZTp0fTp0fWZ1bmN0aW9uIGModCxuKXtyZXR1cm57dmFsdWU6dCxjb250ZXh0Om4sYWN0aW9uczpbXSxjaGFuZ2VkOiExLG1hdGNoZXM6YSh0KX19ZnVuY3Rpb24gZih0LG4sZSl7dmFyIHI9bixvPSExO3JldHVyblt0LmZpbHRlcigoZnVuY3Rpb24odCl7aWYoXCJ4c3RhdGUuYXNzaWduXCI9PT10LnR5cGUpe289ITA7dmFyIG49T2JqZWN0LmFzc2lnbih7fSxyKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmFzc2lnbm1lbnQ/bj10LmFzc2lnbm1lbnQocixlKTpPYmplY3Qua2V5cyh0LmFzc2lnbm1lbnQpLmZvckVhY2goKGZ1bmN0aW9uKG8pe25bb109XCJmdW5jdGlvblwiPT10eXBlb2YgdC5hc3NpZ25tZW50W29dP3QuYXNzaWdubWVudFtvXShyLGUpOnQuYXNzaWdubWVudFtvXX0pKSxyPW4sITF9cmV0dXJuITB9KSkscixvXX1mdW5jdGlvbiBzKG4sbyl7dm9pZCAwPT09byYmKG89e30pO3ZhciBzPXQoZihyKG4uc3RhdGVzW24uaW5pdGlhbF0uZW50cnkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGkodCxvLmFjdGlvbnMpfSkpLG4uY29udGV4dCxlKSwyKSxsPXNbMF0sdj1zWzFdLHk9e2NvbmZpZzpuLF9vcHRpb25zOm8saW5pdGlhbFN0YXRlOnt2YWx1ZTpuLmluaXRpYWwsYWN0aW9uczpsLGNvbnRleHQ6dixtYXRjaGVzOmEobi5pbml0aWFsKX0sdHJhbnNpdGlvbjpmdW5jdGlvbihlLG8pe3ZhciBzLGwsdj1cInN0cmluZ1wiPT10eXBlb2YgZT97dmFsdWU6ZSxjb250ZXh0Om4uY29udGV4dH06ZSxwPXYudmFsdWUsZz12LmNvbnRleHQsZD11KG8pLHg9bi5zdGF0ZXNbcF07aWYoeC5vbil7dmFyIG09cih4Lm9uW2QudHlwZV0pO3RyeXtmb3IodmFyIGg9ZnVuY3Rpb24odCl7dmFyIG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsZT1uJiZ0W25dLHI9MDtpZihlKXJldHVybiBlLmNhbGwodCk7aWYodCYmXCJudW1iZXJcIj09dHlwZW9mIHQubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHQmJnI+PXQubGVuZ3RoJiYodD12b2lkIDApLHt2YWx1ZTp0JiZ0W3IrK10sZG9uZTohdH19fTt0aHJvdyBuZXcgVHlwZUVycm9yKG4/XCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiOlwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKX0obSksYj1oLm5leHQoKTshYi5kb25lO2I9aC5uZXh0KCkpe3ZhciBTPWIudmFsdWU7aWYodm9pZCAwPT09UylyZXR1cm4gYyhwLGcpO3ZhciB3PVwic3RyaW5nXCI9PXR5cGVvZiBTP3t0YXJnZXQ6U306UyxqPXcudGFyZ2V0LEU9dy5hY3Rpb25zLFI9dm9pZCAwPT09RT9bXTpFLE49dy5jb25kLE89dm9pZCAwPT09Tj9mdW5jdGlvbigpe3JldHVybiEwfTpOLF89dm9pZCAwPT09aixrPW51bGwhPWo/ajpwLFQ9bi5zdGF0ZXNba107aWYoTyhnLGQpKXt2YXIgcT10KGYoKF8/cihSKTpbXS5jb25jYXQoeC5leGl0LFIsVC5lbnRyeSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gaSh0LHkuX29wdGlvbnMuYWN0aW9ucyl9KSksZyxkKSwzKSx6PXFbMF0sQT1xWzFdLEI9cVsyXSxDPW51bGwhPWo/ajpwO3JldHVybnt2YWx1ZTpDLGNvbnRleHQ6QSxhY3Rpb25zOnosY2hhbmdlZDpqIT09cHx8ei5sZW5ndGg+MHx8QixtYXRjaGVzOmEoQyl9fX19Y2F0Y2godCl7cz17ZXJyb3I6dH19ZmluYWxseXt0cnl7YiYmIWIuZG9uZSYmKGw9aC5yZXR1cm4pJiZsLmNhbGwoaCl9ZmluYWxseXtpZihzKXRocm93IHMuZXJyb3J9fX1yZXR1cm4gYyhwLGcpfX07cmV0dXJuIHl9dmFyIGw9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5hY3Rpb25zLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPWUuZXhlYztyZXR1cm4gciYmcih0LmNvbnRleHQsbil9KSl9O2Z1bmN0aW9uIHYodCl7dmFyIHI9dC5pbml0aWFsU3RhdGUsbz1uLk5vdFN0YXJ0ZWQsaT1uZXcgU2V0LGM9e19tYWNoaW5lOnQsc2VuZDpmdW5jdGlvbihlKXtvPT09bi5SdW5uaW5nJiYocj10LnRyYW5zaXRpb24ocixlKSxsKHIsdShlKSksaS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdChyKX0pKSl9LHN1YnNjcmliZTpmdW5jdGlvbih0KXtyZXR1cm4gaS5hZGQodCksdChyKSx7dW5zdWJzY3JpYmU6ZnVuY3Rpb24oKXtyZXR1cm4gaS5kZWxldGUodCl9fX0sc3RhcnQ6ZnVuY3Rpb24oaSl7aWYoaSl7dmFyIHU9XCJvYmplY3RcIj09dHlwZW9mIGk/aTp7Y29udGV4dDp0LmNvbmZpZy5jb250ZXh0LHZhbHVlOml9O3I9e3ZhbHVlOnUudmFsdWUsYWN0aW9uczpbXSxjb250ZXh0OnUuY29udGV4dCxtYXRjaGVzOmEodS52YWx1ZSl9fXJldHVybiBvPW4uUnVubmluZyxsKHIsZSksY30sc3RvcDpmdW5jdGlvbigpe3JldHVybiBvPW4uU3RvcHBlZCxpLmNsZWFyKCksY30sZ2V0IHN0YXRlKCl7cmV0dXJuIHJ9LGdldCBzdGF0dXMoKXtyZXR1cm4gb319O3JldHVybiBjfWV4cG9ydHtuIGFzIEludGVycHJldGVyU3RhdHVzLG8gYXMgYXNzaWduLHMgYXMgY3JlYXRlTWFjaGluZSx2IGFzIGludGVycHJldH07XG4iXX0=
+//------QC-SOURCE-SPLIT------
 
-    if (cb) {
-      cb(spr);
-    }
-  });
-}
+                (function() {
+                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
+                    var __module = nodeEnv ? module : {exports:{}};
+                    var __filename = 'preview-scripts/assets/OP15/script/xstate.js';
+                    var __require = nodeEnv ? function (request) {
+                        return cc.require(request);
+                    } : function (request) {
+                        return __quick_compile_project__.require(request, __filename);
+                    };
+                    function __define (exports, require, module) {
+                        if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}(function (global){
+"use strict";
+cc._RF.push(module, 'ccc6ebxJZFI24GNYY/uty5V', 'xstate');
+// OP15/script/xstate.js
 
-function playAudio(audioClip, cb) {
-  if (cb === void 0) {
-    cb = null;
-  }
+"use strict";
 
-  if (audioClip) {
-    var audioId = cc.audioEngine.playEffect(audioClip, false, 0.8);
+!function (t, e) {
+  "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e((t = "undefined" != typeof globalThis ? globalThis : t || self).XState = {});
+}(void 0, function (t) {
+  "use strict";
+  /*! *****************************************************************************
+      Copyright (c) Microsoft Corporation.
+  
+      Permission to use, copy, modify, and/or distribute this software for any
+      purpose with or without fee is hereby granted.
+  
+      THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+      REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+      AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+      INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+      LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+      OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+      PERFORMANCE OF THIS SOFTWARE.
+      ***************************************************************************** */
 
-    if (cb) {
-      cc.audioEngine.setFinishCallback(audioId, function () {
-        cb();
-      });
-    }
-  }
-}
+  var _e = function e() {
+    return (_e = Object.assign || function (t) {
+      for (var e, n = 1, r = arguments.length; n < r; n++) {
+        for (var i in e = arguments[n]) {
+          Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
+        }
+      }
 
-function asyncDelay(_x) {
-  return _asyncDelay.apply(this, arguments);
-}
+      return t;
+    }).apply(this, arguments);
+  };
 
-function _asyncDelay() {
-  _asyncDelay = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(time) {
-    return regeneratorRuntime.wrap(function _callee$(_context) {
-      while (1) {
-        switch (_context.prev = _context.next) {
-          case 0:
-            return _context.abrupt("return", new Promise(function (resolve, reject) {
-              try {
-                setTimeout(function () {
-                  resolve();
-                }, time * 1000);
-              } catch (e) {
-                reject(e);
-              }
-            }));
-
-          case 1:
-          case "end":
-            return _context.stop();
-        }
-      }
-    }, _callee);
-  }));
-  return _asyncDelay.apply(this, arguments);
-}
+  function n(t, e) {
+    var n = {};
 
-var FireworkSettings = /*#__PURE__*/function () {
-  // 父节点
-  // 火花节点的array
-  // 发射点
-  // 发射方向
-  // 扩散范围
-  // 发射数量
-  // 缩放范围
-  function FireworkSettings(baseNode, nodeList, pos, side, range, number, scalseRange) {
-    if (pos === void 0) {
-      pos = cc.v2(0, 0);
+    for (var r in t) {
+      Object.prototype.hasOwnProperty.call(t, r) && e.indexOf(r) < 0 && (n[r] = t[r]);
     }
 
-    if (side === void 0) {
-      side = cc.v2(0, 100);
-    }
+    if (null != t && "function" == typeof Object.getOwnPropertySymbols) {
+      var i = 0;
 
-    if (range === void 0) {
-      range = 50;
+      for (r = Object.getOwnPropertySymbols(t); i < r.length; i++) {
+        e.indexOf(r[i]) < 0 && Object.prototype.propertyIsEnumerable.call(t, r[i]) && (n[r[i]] = t[r[i]]);
+      }
     }
 
-    if (number === void 0) {
-      number = 100;
-    }
+    return n;
+  }
 
-    if (scalseRange === void 0) {
-      scalseRange = 0;
+  function r(t) {
+    var e = "function" == typeof Symbol && Symbol.iterator,
+        n = e && t[e],
+        r = 0;
+    if (n) return n.call(t);
+    if (t && "number" == typeof t.length) return {
+      next: function next() {
+        return t && r >= t.length && (t = void 0), {
+          value: t && t[r++],
+          done: !t
+        };
+      }
+    };
+    throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.");
+  }
+
+  function i(t, e) {
+    var n = "function" == typeof Symbol && t[Symbol.iterator];
+    if (!n) return t;
+    var r,
+        i,
+        o = n.call(t),
+        a = [];
+
+    try {
+      for (; (void 0 === e || e-- > 0) && !(r = o.next()).done;) {
+        a.push(r.value);
+      }
+    } catch (t) {
+      i = {
+        error: t
+      };
+    } finally {
+      try {
+        r && !r.done && (n = o["return"]) && n.call(o);
+      } finally {
+        if (i) throw i.error;
+      }
     }
 
-    this.baseNode = void 0;
-    this.nodeList = void 0;
-    this.pos = void 0;
-    this.side = void 0;
-    this.range = void 0;
-    this.number = void 0;
-    this.scalseRange = void 0;
-    this.baseNode = baseNode;
-    this.nodeList = nodeList;
-    this.pos = pos;
-    this.side = side;
-    this.range = range;
-    this.number = number;
-    this.scalseRange = scalseRange;
+    return a;
   }
 
-  FireworkSettings.copy = function copy(firework) {
-    return new FireworkSettings(firework.baseNode, firework.nodeList, firework.pos, firework.side, firework.range, firework.number);
-  };
+  function o(t, e, n) {
+    if (n || 2 === arguments.length) for (var r, i = 0, o = e.length; i < o; i++) {
+      !r && i in e || (r || (r = Array.prototype.slice.call(e, 0, i)), r[i] = e[i]);
+    }
+    return t.concat(r || Array.prototype.slice.call(e));
+  }
 
-  return FireworkSettings;
-}();
+  var a = {};
 
-exports.FireworkSettings = FireworkSettings;
+  function s(t) {
+    return Object.keys(t);
+  }
 
-function showFireworks(_x2) {
-  return _showFireworks.apply(this, arguments);
-}
+  function c(t, e, n) {
+    void 0 === n && (n = ".");
+    var r = f(t, n),
+        i = f(e, n);
+    return A(i) ? !!A(r) && i === r : A(r) ? r in i : s(r).every(function (t) {
+      return t in i && c(r[t], i[t]);
+    });
+  }
 
-function _showFireworks() {
-  _showFireworks = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(fireworkSettings) {
-    var baseNode, nodeList, pos, side, range, number, scalseRange;
-    return regeneratorRuntime.wrap(function _callee3$(_context3) {
-      while (1) {
-        switch (_context3.prev = _context3.next) {
-          case 0:
-            baseNode = fireworkSettings.baseNode, nodeList = fireworkSettings.nodeList, pos = fireworkSettings.pos, side = fireworkSettings.side, range = fireworkSettings.range, number = fireworkSettings.number, scalseRange = fireworkSettings.scalseRange;
-            new Array(number).fill(' ').forEach( /*#__PURE__*/function () {
-              var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, i) {
-                var rabbonNode, node, rate, angle;
-                return regeneratorRuntime.wrap(function _callee2$(_context2) {
-                  while (1) {
-                    switch (_context2.prev = _context2.next) {
-                      case 0:
-                        rabbonNode = new cc.Node();
-                        rabbonNode.parent = baseNode;
-                        rabbonNode.x = pos.x;
-                        rabbonNode.y = pos.y;
-                        rabbonNode.angle = 60 * Math.random() - 30;
-                        node = cc.instantiate(nodeList[RandomInt(nodeList.length)]);
-                        node.parent = rabbonNode;
-                        node.active = true;
-                        node.x = 0;
-                        node.y = 0;
-                        node.angle = 0;
-                        node.scale = (Math.random() - 0.5) * scalseRange + 1;
-                        rate = Math.random();
-                        angle = Math.PI * (Math.random() * 2 - 1);
-                        _context2.next = 16;
-                        return asyncTweenBy(rabbonNode, 0.3, {
-                          x: side.x * rate + Math.cos(angle) * range * rate,
-                          y: side.y * rate + Math.sin(angle) * range * rate
-                        }, {
-                          easing: 'quadIn'
-                        });
+  function u(t) {
+    try {
+      return A(t) || "number" == typeof t ? "".concat(t) : t.type;
+    } catch (t) {
+      throw new Error("Events must be strings or objects with a string event.type property.");
+    }
+  }
 
-                      case 16:
-                        cc.tween(rabbonNode).by(8, {
-                          y: -2000
-                        }).start();
-                        cc.tween(rabbonNode).to(5, {
-                          scale: (Math.random() - 0.5) * scalseRange + 1
-                        }).start();
-                        rabbonFall(rabbonNode);
-                        _context2.next = 21;
-                        return asyncDelay(Math.random());
+  function h(t, e) {
+    try {
+      return T(t) ? t : t.toString().split(e);
+    } catch (e) {
+      throw new Error("'".concat(t, "' is not a valid state path."));
+    }
+  }
 
-                      case 21:
-                        cc.tween(node).by(0.15, {
-                          x: -10,
-                          angle: -10
-                        }).by(0.3, {
-                          x: 20,
-                          angle: 20
-                        }).by(0.15, {
-                          x: -10,
-                          angle: -10
-                        }).union().repeatForever().start();
-                        cc.tween(rabbonNode).delay(5).to(0.3, {
-                          opacity: 0
-                        }).call(function () {
-                          node.stopAllActions();
-                          node.active = false;
-                          node.parent = null;
-                          node = null;
-                        }).start();
+  function f(t, e) {
+    return "object" == typeof (n = t) && "value" in n && "context" in n && "event" in n && "_event" in n ? t.value : T(t) ? l(t) : "string" != typeof t ? t : l(h(t, e));
+    var n;
+  }
 
-                      case 23:
-                      case "end":
-                        return _context2.stop();
-                    }
-                  }
-                }, _callee2);
-              }));
+  function l(t) {
+    if (1 === t.length) return t[0];
 
-              return function (_x12, _x13) {
-                return _ref3.apply(this, arguments);
-              };
-            }());
+    for (var e = {}, n = e, r = 0; r < t.length - 1; r++) {
+      r === t.length - 2 ? n[t[r]] = t[r + 1] : (n[t[r]] = {}, n = n[t[r]]);
+    }
 
-          case 2:
-          case "end":
-            return _context3.stop();
-        }
-      }
-    }, _callee3);
-  }));
-  return _showFireworks.apply(this, arguments);
-}
+    return e;
+  }
 
-function rabbonFall(_x3) {
-  return _rabbonFall.apply(this, arguments);
-}
+  function d(t, e) {
+    for (var n = {}, r = s(t), i = 0; i < r.length; i++) {
+      var o = r[i];
+      n[o] = e(t[o], o, t, i);
+    }
 
-function _rabbonFall() {
-  _rabbonFall = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(node) {
-    var time, offsetX;
-    return regeneratorRuntime.wrap(function _callee4$(_context4) {
-      while (1) {
-        switch (_context4.prev = _context4.next) {
-          case 0:
-            time = 1 + Math.random();
-            offsetX = RandomInt(-200, 200) * time;
-            _context4.next = 4;
-            return asyncTweenBy(node, time, {
-              x: offsetX,
-              angle: offsetX * 60 / 200
-            });
+    return n;
+  }
 
-          case 4:
-            rabbonFall(node);
+  function p(t, e, n) {
+    var i,
+        o,
+        a = {};
 
-          case 5:
-          case "end":
-            return _context4.stop();
-        }
+    try {
+      for (var c = r(s(t)), u = c.next(); !u.done; u = c.next()) {
+        var h = u.value,
+            f = t[h];
+        n(f) && (a[h] = e(f, h, t));
       }
-    }, _callee4);
-  }));
-  return _rabbonFall.apply(this, arguments);
-}
-
-function asyncTweenTo(_x4, _x5, _x6, _x7) {
-  return _asyncTweenTo.apply(this, arguments);
-}
+    } catch (t) {
+      i = {
+        error: t
+      };
+    } finally {
+      try {
+        u && !u.done && (o = c["return"]) && o.call(c);
+      } finally {
+        if (i) throw i.error;
+      }
+    }
 
-function _asyncTweenTo() {
-  _asyncTweenTo = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(node, duration, obj, ease) {
-    return regeneratorRuntime.wrap(function _callee5$(_context5) {
-      while (1) {
-        switch (_context5.prev = _context5.next) {
-          case 0:
-            if (ease === void 0) {
-              ease = undefined;
-            }
+    return a;
+  }
 
-            return _context5.abrupt("return", new Promise(function (resolve, reject) {
-              try {
-                cc.tween(node).to(duration, obj, ease).call(function () {
-                  resolve();
-                }).start();
-              } catch (e) {
-                reject(e);
-              }
-            }));
+  var v = function v(t) {
+    return function (e) {
+      var n,
+          i,
+          o = e;
 
-          case 2:
-          case "end":
-            return _context5.stop();
+      try {
+        for (var a = r(t), s = a.next(); !s.done; s = a.next()) {
+          o = o[s.value];
+        }
+      } catch (t) {
+        n = {
+          error: t
+        };
+      } finally {
+        try {
+          s && !s.done && (i = a["return"]) && i.call(a);
+        } finally {
+          if (n) throw n.error;
         }
       }
-    }, _callee5);
-  }));
-  return _asyncTweenTo.apply(this, arguments);
-}
-
-function asyncTweenBy(_x8, _x9, _x10, _x11) {
-  return _asyncTweenBy.apply(this, arguments);
-}
 
-function _asyncTweenBy() {
-  _asyncTweenBy = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(node, duration, obj, ease) {
-    return regeneratorRuntime.wrap(function _callee6$(_context6) {
-      while (1) {
-        switch (_context6.prev = _context6.next) {
-          case 0:
-            if (ease === void 0) {
-              ease = undefined;
-            }
+      return o;
+    };
+  };
 
-            return _context6.abrupt("return", new Promise(function (resolve, reject) {
-              try {
-                cc.tween(node).by(duration, obj, ease).call(function () {
-                  resolve();
-                }).start();
-              } catch (e) {
-                reject(e);
-              }
-            }));
+  function y(t) {
+    return t ? A(t) ? [[t]] : g(s(t).map(function (e) {
+      var n = t[e];
+      return "string" == typeof n || n && Object.keys(n).length ? y(t[e]).map(function (t) {
+        return [e].concat(t);
+      }) : [[e]];
+    })) : [[]];
+  }
 
-          case 2:
-          case "end":
-            return _context6.stop();
-        }
-      }
-    }, _callee6);
-  }));
-  return _asyncTweenBy.apply(this, arguments);
-}
+  function g(t) {
+    var e;
+    return (e = []).concat.apply(e, o([], i(t), !1));
+  }
 
-function showTrebleFirework(baseNode, rabbonList) {
-  var middle = new FireworkSettings(baseNode, rabbonList);
-  middle.pos = cc.v2(0, -400);
-  middle.side = cc.v2(0, 1000);
-  middle.range = 200;
-  middle.number = 100;
-  middle.scalseRange = 0.4;
-  var left = FireworkSettings.copy(middle);
-  left.pos = cc.v2(-600, -400);
-  left.side = cc.v2(200, 1000);
-  var right = FireworkSettings.copy(middle);
-  right.pos = cc.v2(600, -400);
-  right.side = cc.v2(-200, 1000);
-  showFireworks(middle);
-  showFireworks(left);
-  showFireworks(right);
-}
+  function m(t) {
+    return T(t) ? t : [t];
+  }
 
-function onHomeworkFinish() {
-  var middleLayer = cc.find('middleLayer');
+  function S(t) {
+    return void 0 === t ? [] : m(t);
+  }
 
-  if (middleLayer) {
-    var middleLayerComponent = middleLayer.getComponent('middleLayer');
+  function x(t, e, n) {
+    var i, o;
+    if (N(t)) return t(e, n.data);
+    var a = {};
 
-    if (middleLayerComponent.role == 'student') {
-      middleLayerComponent.onHomeworkFinish(function () {});
+    try {
+      for (var s = r(Object.keys(t)), c = s.next(); !c.done; c = s.next()) {
+        var u = c.value,
+            h = t[u];
+        N(h) ? a[u] = h(e, n.data) : a[u] = h;
+      }
+    } catch (t) {
+      i = {
+        error: t
+      };
+    } finally {
+      try {
+        c && !c.done && (o = s["return"]) && o.call(s);
+      } finally {
+        if (i) throw i.error;
+      }
     }
-  } else {
-    console.log('onHomeworkFinish');
+
+    return a;
   }
-}
 
-function loadDragonBones(dragonDisplay, _ref) {
-  var tex = _ref.tex,
-      atlas = _ref.atlas,
-      ske = _ref.ske;
-  return new Promise(function (resolve, reject) {
-    cc.loader.load({
-      url: tex,
-      type: 'png'
-    }, function (error, texture) {
-      if (error) {
-        reject();
-        return;
+  function w(t) {
+    return t instanceof Promise || !(null === t || !N(t) && "object" != typeof t || !N(t.then));
+  }
+
+  function b(t, e) {
+    var n,
+        o,
+        a = i([[], []], 2),
+        s = a[0],
+        c = a[1];
+
+    try {
+      for (var u = r(t), h = u.next(); !h.done; h = u.next()) {
+        var f = h.value;
+        e(f) ? s.push(f) : c.push(f);
+      }
+    } catch (t) {
+      n = {
+        error: t
+      };
+    } finally {
+      try {
+        h && !h.done && (o = u["return"]) && o.call(u);
+      } finally {
+        if (n) throw n.error;
       }
+    }
 
-      cc.loader.load({
-        url: atlas,
-        type: 'txt'
-      }, function (error, atlasJson) {
-        if (error) {
-          reject();
-          return;
-        }
+    return [s, c];
+  }
 
-        cc.loader.load({
-          url: ske,
-          type: 'txt'
-        }, function (error, dragonBonesJson) {
-          if (error) {
-            reject();
-            return;
-          }
+  function _(t, e) {
+    return d(t.states, function (t, n) {
+      if (t) {
+        var r = (A(e) ? void 0 : e[n]) || (t ? t.current : void 0);
+        if (r) return {
+          current: r,
+          states: _(t, r)
+        };
+      }
+    });
+  }
 
-          var atlasObj = new dragonBones.DragonBonesAtlasAsset();
-          atlasObj.uuid = atlas;
-          atlasObj.atlasJson = atlasJson;
-          atlasObj.texture = texture;
-          var asset = new dragonBones.DragonBonesAsset();
-          asset.uuid = ske;
-          asset.dragonBonesJson = dragonBonesJson;
-          var armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';
-          dragonDisplay.armatureName = armatureName;
-          dragonDisplay.dragonAtlasAsset = atlasObj;
-          dragonDisplay.dragonAsset = asset;
-          resolve(asset._dragonBonesJsonData.armature[0].aabb);
-        });
-      });
-    });
-  });
-}
+  function E(t, e, n, i) {
+    return t ? n.reduce(function (t, n) {
+      var o,
+          a,
+          c = n.assignment,
+          u = {
+        state: i,
+        action: n,
+        _event: e
+      },
+          h = {};
+      if (N(c)) h = c(t, e.data, u);else try {
+        for (var f = r(s(c)), l = f.next(); !l.done; l = f.next()) {
+          var d = l.value,
+              p = c[d];
+          h[d] = N(p) ? p(t, e.data, u) : p;
+        }
+      } catch (t) {
+        o = {
+          error: t
+        };
+      } finally {
+        try {
+          l && !l.done && (a = f["return"]) && a.call(f);
+        } finally {
+          if (o) throw o.error;
+        }
+      }
+      return Object.assign({}, t, h);
+    }, t) : t;
+  }
 
-function loadSpine(skeleton, picName, _ref2) {
-  var tex = _ref2.tex,
-      atlas = _ref2.atlas,
-      ske = _ref2.ske;
-  return new Promise(function (resolve, reject) {
-    // cc.loader.load({ url: tex, type: 'png' }, (error, texture) => {
-    cc.assetManager.loadRemote(tex, function (error, texture) {
-      if (error) {
-        reject();
-        return;
-      } // cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
+  function T(t) {
+    return Array.isArray(t);
+  }
 
+  function N(t) {
+    return "function" == typeof t;
+  }
 
-      cc.assetManager.loadAny({
-        url: atlas
-      }, function (error, atlasJson) {
-        if (error) {
-          reject();
-          return;
-        } // cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {
+  function A(t) {
+    return "string" == typeof t;
+  }
 
+  function O(t, e) {
+    if (t) return A(t) ? {
+      type: "xstate.guard",
+      name: t,
+      predicate: e ? e[t] : void 0
+    } : N(t) ? {
+      type: "xstate.guard",
+      name: t.name,
+      predicate: t
+    } : t;
+  }
 
-        cc.assetManager.loadAny({
-          url: ske
-        }, function (error, dragonBonesJson) {
-          if (error) {
-            reject();
-            return;
-          }
+  var P = function () {
+    return "function" == typeof Symbol && Symbol.observable || "@@observable";
+  }();
 
-          var asset = new sp.SkeletonData();
-          asset._uuid = ske;
-          asset.skeletonJson = JSON.stringify(dragonBonesJson);
-          asset.atlasText = atlasJson;
-          asset.textures = [texture];
-          asset.textureNames = [picName];
-          console.log('picName: ', picName);
-          skeleton.skeletonData = asset;
-          var jsonObj = dragonBonesJson; //JSON.parse( assets[1]);
+  function k(t) {
+    try {
+      return "__xstatenode" in t;
+    } catch (t) {
+      return !1;
+    }
+  }
 
-          var animationNameObj = jsonObj.animations;
-          var animationNames = [];
+  var I,
+      j,
+      C = function () {
+    var t = 0;
+    return function () {
+      return (++t).toString(16);
+    };
+  }();
 
-          for (var name in animationNameObj) {
-            console.log('name~~:  ', name);
-            animationNames.push(name);
-          }
+  function V(t, n) {
+    return A(t) || "number" == typeof t ? _e({
+      type: t
+    }, n) : t;
+  }
 
-          console.log("skeleton.animation: ", skeleton.animation);
-          skeleton.animationNames = animationNames;
-          skeleton.loop = false;
-          console.log("jsonObj['skeleton'] : ", jsonObj['skeleton']);
-          resolve(jsonObj['skeleton']); // const atlasObj = new dragonBones.DragonBonesAtlasAsset()
-          // atlasObj.uuid = atlas
-          // atlasObj.atlasJson = atlasJson
-          // atlasObj.texture = texture
-          // const asset = new dragonBones.DragonBonesAsset()
-          // asset.uuid = ske
-          // asset.dragonBonesJson = dragonBonesJson;
-          // const armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';
-          // dragonDisplay.armatureName = armatureName;
-          // dragonDisplay.dragonAtlasAsset = atlasObj
-          // dragonDisplay.dragonAsset = asset;
-          // resolve(asset._dragonBonesJsonData.armature[0].aabb);
-        });
+  function L(t, n) {
+    if (!A(t) && "$$type" in t && "scxml" === t.$$type) return t;
+    var r = V(t);
+    return _e({
+      name: r.type,
+      data: r,
+      $$type: "scxml",
+      type: "external"
+    }, n);
+  }
+
+  function D(t, n) {
+    return m(n).map(function (n) {
+      return void 0 === n || "string" == typeof n || k(n) ? {
+        target: n,
+        event: t
+      } : _e(_e({}, n), {
+        event: t
       });
     });
-  });
-}
+  }
 
-cc._RF.pop();
-                    }
-                    if (nodeEnv) {
-                        __define(__module.exports, __require, __module);
-                    }
-                    else {
-                        __quick_compile_project__.registerModuleFunc(__filename, function () {
-                            __define(__module.exports, __require, __module);
-                        });
-                    }
-                })();
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9PUDE1L3NjcmlwdC91dGlsLmpzIl0sIm5hbWVzIjpbImdldFBvc0J5QW5nbGUiLCJhbmdsZSIsImxlbiIsInJhZGlhbiIsIk1hdGgiLCJQSSIsIngiLCJzaW4iLCJ5IiwiY29zIiwiZ2V0QW5nbGVCeVBvcyIsInB4IiwicHkiLCJteCIsIm15IiwiYWJzIiwieiIsInNxcnQiLCJwb3ciLCJyYWRpbmEiLCJhY29zIiwiZmxvb3IiLCJleGNoYW5nZU5vZGVQb3MiLCJiYXNlTm9kZSIsInRhcmdldE5vZGUiLCJjb252ZXJ0VG9Ob2RlU3BhY2VBUiIsIl9wYXJlbnQiLCJjb252ZXJ0VG9Xb3JsZFNwYWNlQVIiLCJjYyIsInYyIiwiUmFuZG9tSW50IiwiYSIsImIiLCJtYXgiLCJtaW4iLCJyYW5kb20iLCJyYW5kb21Tb3J0QnlBcnIiLCJhcnIiLCJuZXdBcnIiLCJ0bXBBcnIiLCJjb25jYXQiLCJsZW5ndGgiLCJyYW5kb21JbmRleCIsInB1c2giLCJzcGxpY2UiLCJzZXRTcHJOb2RlTWF4TGVuIiwic3ByTm9kZSIsIm1heFciLCJtYXhIIiwic3giLCJ3aWR0aCIsInN5IiwiaGVpZ2h0IiwicyIsInNjYWxlIiwicm91bmQiLCJsb2NhbFBvc1RvbG9jYWxQb3MiLCJ3b3JsZFBvcyIsInBhcmVudCIsImxvY2FsUG9zIiwid29ybGRQb3NUb0xvY2FsUG9zIiwiZ2V0U2NhbGVSYXRlQnkyTm9kZSIsIm1heEZsYWciLCJ3b3JsZFJlY3QxIiwiZ2V0Qm91bmRpbmdCb3hUb1dvcmxkIiwid29ybGRSZWN0MiIsImdldERpc3RhbmNlIiwic3RhcnQiLCJlbmQiLCJwb3MiLCJkaXMiLCJwbGF5QXVkaW9CeVVybCIsImF1ZGlvX3VybCIsImNiIiwiQXVkaW9DbGlwIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiYXVkaW9JZCIsImF1ZGlvRW5naW5lIiwicGxheSIsInNldEZpbmlzaENhbGxiYWNrIiwiYXNzZXRNYW5hZ2VyIiwibG9hZFJlbW90ZSIsImVyciIsImF1ZGlvQ2xpcCIsImJ0bkNsaWNrQW5pbWEiLCJidG4iLCJ0aW1lIiwicmF0ZSIsInRtcFNjYWxlIiwib24iLCJOb2RlIiwiRXZlbnRUeXBlIiwiVE9VQ0hfU1RBUlQiLCJ0d2VlbiIsInRvIiwiVE9VQ0hfQ0FOQ0VMIiwiVE9VQ0hfRU5EIiwiZ2V0U3ByaXRlRnJpbWVCeVVybCIsInVybCIsImxvYWRlciIsImxvYWQiLCJpbWciLCJzcHJpdGVGcmFtZSIsIlNwcml0ZUZyYW1lIiwiZ2V0U3ByTm9kZSIsInJlc05hbWUiLCJzZiIsImZpbmQiLCJnZXRDb21wb25lbnQiLCJTcHJpdGUiLCJub2RlIiwiYWRkQ29tcG9uZW50IiwiZ2V0U3ByTm9kZUJ5VXJsIiwic3ByIiwicGxheUF1ZGlvIiwicGxheUVmZmVjdCIsImFzeW5jRGVsYXkiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNldFRpbWVvdXQiLCJlIiwiRmlyZXdvcmtTZXR0aW5ncyIsIm5vZGVMaXN0Iiwic2lkZSIsInJhbmdlIiwibnVtYmVyIiwic2NhbHNlUmFuZ2UiLCJjb3B5IiwiZmlyZXdvcmsiLCJzaG93RmlyZXdvcmtzIiwiZmlyZXdvcmtTZXR0aW5ncyIsIkFycmF5IiwiZmlsbCIsImZvckVhY2giLCJfIiwiaSIsInJhYmJvbk5vZGUiLCJpbnN0YW50aWF0ZSIsImFjdGl2ZSIsImFzeW5jVHdlZW5CeSIsImVhc2luZyIsImJ5IiwicmFiYm9uRmFsbCIsInVuaW9uIiwicmVwZWF0Rm9yZXZlciIsImRlbGF5Iiwib3BhY2l0eSIsImNhbGwiLCJzdG9wQWxsQWN0aW9ucyIsIm9mZnNldFgiLCJhc3luY1R3ZWVuVG8iLCJkdXJhdGlvbiIsIm9iaiIsImVhc2UiLCJ1bmRlZmluZWQiLCJzaG93VHJlYmxlRmlyZXdvcmsiLCJyYWJib25MaXN0IiwibWlkZGxlIiwibGVmdCIsInJpZ2h0Iiwib25Ib21ld29ya0ZpbmlzaCIsIm1pZGRsZUxheWVyIiwibWlkZGxlTGF5ZXJDb21wb25lbnQiLCJyb2xlIiwiY29uc29sZSIsImxvZyIsImxvYWREcmFnb25Cb25lcyIsImRyYWdvbkRpc3BsYXkiLCJ0ZXgiLCJhdGxhcyIsInNrZSIsInR5cGUiLCJlcnJvciIsInRleHR1cmUiLCJhdGxhc0pzb24iLCJkcmFnb25Cb25lc0pzb24iLCJhdGxhc09iaiIsImRyYWdvbkJvbmVzIiwiRHJhZ29uQm9uZXNBdGxhc0Fzc2V0IiwidXVpZCIsImFzc2V0IiwiRHJhZ29uQm9uZXNBc3NldCIsImFybWF0dXJlTmFtZSIsIl9kcmFnb25Cb25lc0pzb25EYXRhIiwiYXJtYXR1cmUiLCJkcmFnb25BdGxhc0Fzc2V0IiwiZHJhZ29uQXNzZXQiLCJhYWJiIiwibG9hZFNwaW5lIiwic2tlbGV0b24iLCJwaWNOYW1lIiwibG9hZEFueSIsInNwIiwiU2tlbGV0b25EYXRhIiwiX3V1aWQiLCJza2VsZXRvbkpzb24iLCJKU09OIiwic3RyaW5naWZ5IiwiYXRsYXNUZXh0IiwidGV4dHVyZXMiLCJ0ZXh0dXJlTmFtZXMiLCJza2VsZXRvbkRhdGEiLCJqc29uT2JqIiwiYW5pbWF0aW9uTmFtZU9iaiIsImFuaW1hdGlvbnMiLCJhbmltYXRpb25OYW1lcyIsImFuaW1hdGlvbiIsImxvb3AiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLFNBQVNBLGFBQVQsQ0FBdUJDLEtBQXZCLEVBQThCQyxHQUE5QixFQUFtQztBQUV4QyxNQUFNQyxNQUFNLEdBQUdGLEtBQUssR0FBR0csSUFBSSxDQUFDQyxFQUFiLEdBQWtCLEdBQWpDO0FBQ0EsTUFBTUMsQ0FBQyxHQUFHRixJQUFJLENBQUNHLEdBQUwsQ0FBU0osTUFBVCxJQUFtQkQsR0FBN0I7QUFDQSxNQUFNTSxDQUFDLEdBQUdKLElBQUksQ0FBQ0ssR0FBTCxDQUFTTixNQUFULElBQW1CRCxHQUE3QjtBQUVBLFNBQU87QUFBRUksSUFBQUEsQ0FBQyxFQUFEQSxDQUFGO0FBQUtFLElBQUFBLENBQUMsRUFBREE7QUFBTCxHQUFQO0FBRUQ7O0FBRU0sU0FBU0UsYUFBVCxD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VixPQUFELENBQXJCO0FBRUExQixVQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxXQUFaLEVBQXlCeUIsT0FBekI7QUFFSEQsVUFBQUEsUUFBUSxDQUFDWSxZQUFULEdBQXdCckIsS0FBeEI7QUFHRyxjQUFNc0IsT0FBTyxHQUFHM0IsZUFBaEIsQ0FuQmdFLENBbUJoQzs7QUFDaEMsY0FBTTRCLGdCQUFnQixHQUFHRCxPQUFPLENBQUNFLFVBQWpDO0FBQ0EsY0FBSUMsY0FBYyxHQUFHLEVBQXJCOztBQUNBLGVBQUssSUFBSW5JLElBQVQsSUFBaUJpSSxnQkFBakIsRUFBbUM7QUFDakN2QyxZQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxXQUFaLEVBQXlCM0YsSUFBekI7QUFDQW1JLFlBQUFBLGNBQWMsQ0FBQ3BLLElBQWYsQ0FBb0JpQyxJQUFwQjtBQUNEOztBQUNKMEYsVUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksc0JBQVosRUFBb0N3QixRQUFRLENBQUNpQixTQUE3QztBQUNHakIsVUFBQUEsUUFBUSxDQUFDZ0IsY0FBVCxHQUEwQkEsY0FBMUI7QUFDSGhCLFVBQUFBLFFBQVEsQ0FBQ2tCLElBQVQsR0FBZ0IsS0FBaEI7QUFFRzNDLFVBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLHdCQUFaLEVBQXNDcUMsT0FBTyxDQUFDLFVBQUQsQ0FBN0M7QUFFQXJGLFVBQUFBLE9BQU8sQ0FBQ3FGLE9BQU8sQ0FBQyxVQUFELENBQVIsQ0FBUCxDQWhDZ0UsQ0FtQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNELFNBbEREO0FBbURILE9BekREO0FBMERELEtBaEVEO0FBaUVELEdBbkVNLENBQVA7QUFxRUQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRQb3NCeUFuZ2xlKGFuZ2xlLCBsZW4pIHtcblxuICBjb25zdCByYWRpYW4gPSBhbmdsZSAqIE1hdGguUEkgLyAxODA7XG4gIGNvbnN0IHggPSBNYXRoLnNpbihyYWRpYW4pICogbGVuO1xuICBjb25zdCB5ID0gTWF0aC5jb3MocmFkaWFuKSAqIGxlbjtcblxuICByZXR1cm4geyB4LCB5IH07XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZ2xlQnlQb3MocHgsIHB5LCBteCwgbXkpIHtcblxuICBjb25zdCB4ID0gTWF0aC5hYnMocHggLSBteCk7XG4gIGNvbnN0IHkgPSBNYXRoLmFicyhweSAtIG15KTtcblxuICBjb25zdCB6ID0gTWF0aC5zcXJ0KE1hdGgucG93KHgsIDIpICsgTWF0aC5wb3coeSwgMikpO1xuICBjb25zdCBjb3MgPSB5IC8gejtcbiAgY29uc3QgcmFkaW5hID0gTWF0aC5hY29zKGNvcyk7IC8vIOeUqOWPjeS4ieinkuWHveaVsOaxguW8p+W6plxuICBsZXQgYW5nbGUgPSBNYXRoLmZsb29yKDE4MCAvIChNYXRoLlBJIC8gcmFkaW5hKSAqIDEwMCkgLyAxMDA7IC8vIOWwhuW8p+W6pui9rOaNouaIkOinkuW6plxuXG4gIGlmIChteCA+IHB4ICYmIG15ID4gcHkpIHsvLyDpvKDmoIflnKjnrKzlm5vosaHpmZBcbiAgICBhbmdsZSA9IDE4MCAtIGFuZ2xlO1xuICB9XG4gIGlmIChteCA9PT0gcHggJiYgbXkgPiBweSkgey8vIOm8oOagh+WcqHnovbTotJ/mlrnlkJHkuIpcbiAgICBhbmdsZSA9IDE4MDtcbiAgfVxuICBpZiAobXggPiBweCAmJiBteSA9PT0gcHkpIHsvLyDpvKDmoIflnKh46L205q2j5pa55ZCR5LiKXG4gICAgYW5nbGUgPSA5MDtcbiAgfVxuICBpZiAobXggPCBweCAmJiBteSA+IHB5KSB7Ly8g6byg5qCH5Zyo56ys5LiJ6LGh6ZmQXG4gICAgYW5nbGUgPSAxODAgKyBhbmdsZTtcbiAgfVxuICBpZiAobXggPCBweCAmJiBteSA9PT0gcHkpIHsvLyDpvKDmoIflnKh46L206LSf5pa55ZCRXG4gICAgYW5nbGUgPSAyNzA7XG4gIH1cbiAgaWYgKG14IDwgcHggJiYgbXkgPCBweSkgey8vIOm8oOagh+WcqOesrOS6jOixoemZkFxuICAgIGFuZ2xlID0gMzYwIC0gYW5nbGU7XG4gIH1cblxuICAvLyBjb25zb2xlLmxvZygnYW5nbGU6ICcsIGFuZ2xlKTtcbiAgcmV0dXJuIGFuZ2xlO1xuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGNoYW5nZU5vZGVQb3MoYmFzZU5vZGUsIHRhcmdldE5vZGUpIHtcbiAgcmV0dXJuIGJhc2VOb2RlLmNvbnZlcnRUb05vZGVTcGFjZUFSKHRhcmdldE5vZGUuX3BhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoY2MudjIodGFyZ2V0Tm9kZS54LCB0YXJnZXROb2RlLnkpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYW5kb21JbnQoYSwgYiA9IDApIHtcbiAgbGV0IG1heCA9IE1hdGgubWF4KGEsIGIpO1xuICBsZXQgbWluID0gTWF0aC5taW4oYSwgYik7XG4gIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21Tb3J0QnlBcnIoYXJyKSB7XG4gIGNvbnN0IG5ld0FyciA9IFtdO1xuICBjb25zdCB0bXBBcnIgPSBhcnIuY29uY2F0KCk7XG4gIHdoaWxlICh0bXBBcnIubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcih0bXBBcnIubGVuZ3RoICogTWF0aC5yYW5kb20oKSk7XG4gICAgbmV3QXJyLnB1c2godG1wQXJyW3JhbmRvbUluZGV4XSk7XG4gICAgdG1wQXJyLnNwbGljZShyYW5kb21JbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIG5ld0Fycjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNwck5vZGVNYXhMZW4oc3ByTm9kZSwgbWF4VywgbWF4SCkge1xuICBjb25zdCBzeCA9IG1heFcgLyBzcHJOb2RlLndpZHRoO1xuICBjb25zdCBzeSA9IG1heEggLyBzcHJOb2RlLmhlaWdodDtcbiAgY29uc3QgcyA9IE1hdGgubWluKHN4LCBzeSk7XG4gIHNwck5vZGUuc2NhbGUgPSBNYXRoLnJvdW5kKHMgKiAxMDAwKSAvIDEwMDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFBvc1RvbG9jYWxQb3MoYmFzZU5vZGUsIHRhcmdldE5vZGUpIHtcblx0Y29uc3Qgd29ybGRQb3MgPSB0YXJnZXROb2RlLnBhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoY2MudjIodGFyZ2V0Tm9kZS54LCB0YXJnZXROb2RlLnkpKTtcblx0Y29uc3QgbG9jYWxQb3MgPSBiYXNlTm9kZS5wYXJlbnQuY29udmVydFRvTm9kZVNwYWNlQVIoY2MudjIod29ybGRQb3MueCwgd29ybGRQb3MueSkpO1xuXHRyZXR1cm4gbG9jYWxQb3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3b3JsZFBvc1RvTG9jYWxQb3Mod29ybGRQb3MsIGJhc2VOb2RlKSB7XG5cdGNvbnN0IGxvY2FsUG9zID0gYmFzZU5vZGUucGFyZW50LmNvbnZlcnRUb05vZGVTcGFjZUFSKGNjLnYyKHdvcmxkUG9zLngsIHdvcmxkUG9zLnkpKTtcblx0cmV0dXJuIGxvY2FsUG9zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVSYXRlQnkyTm9kZShiYXNlTm9kZSwgdGFyZ2V0Tm9kZSwgbWF4RmxhZyA9IHRydWUpIHtcblx0Y29uc3Qgd29ybGRSZWN0MSA9IHRhcmdldE5vZGUuZ2V0Qm91bmRpbmdCb3hUb1dvcmxkKCk7XG5cdGNvbnN0IHdvcmxkUmVjdDIgPSBiYXNlTm9kZS5nZXRCb3VuZGluZ0JveFRvV29ybGQoKTtcblxuXHRjb25zdCBzeCA9IHdvcmxkUmVjdDEud2lkdGggLyB3b3JsZFJlY3QyLndpZHRoO1xuXHRjb25zdCBzeSA9IHdvcmxkUmVjdDEuaGVpZ2h0IC8gd29ybGRSZWN0Mi5oZWlnaHQ7XG5cdGlmIChtYXhGbGFnKSB7XG5cdFx0cmV0dXJuIE1hdGgubWF4KHN4LCBzeSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIE1hdGgubWluKHN4LCBzeSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RhbmNlIChzdGFydCwgZW5kKXtcbiAgICB2YXIgcG9zID0gY2MudjIoc3RhcnQueCAtIGVuZC54LCBzdGFydC55IC0gZW5kLnkpO1xuICAgIHZhciBkaXMgPSBNYXRoLnNxcnQocG9zLngqcG9zLnggKyBwb3MueSpwb3MueSk7XG4gICAgcmV0dXJuIGRpcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBsYXlBdWRpb0J5VXJsKGF1ZGlvX3VybCwgY2I9bnVsbCkge1xuXHRpZiAoYXVkaW9fdXJsKSB7XG4gICAgaWYgKChhdWRpb191cmwgaW5zdGFuY2VvZiBjYy5BdWRpb0NsaXApICYmYXVkaW9fdXJsLmNvbnN0cnVjdG9yLm5hbWUgPT0gJ2NjX0F1ZGlvQ2xpcCcpIHtcbiAgICAgIGNvbnN0IGF1ZGlvSWQgPSBjYy5hdWRpb0VuZ2luZS5wbGF5KGF1ZGlvX3VybCwgZmFsc2UsIDAuOCk7XG4gICAgICBpZiAoY2IpIHtcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RmluaXNoQ2FsbGJhY2soYXVkaW9JZCwgKCkgPT4ge1xuICAgICAgICAgIGNiKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZShhdWRpb191cmwsIChlcnIsIGF1ZGlvQ2xpcCkgPT4ge1xuICAgICAgICBjb25zdCBhdWRpb0lkID0gY2MuYXVkaW9FbmdpbmUucGxheShhdWRpb0NsaXAsIGZhbHNlLCAwLjgpO1xuICAgICAgICBpZiAoY2IpIHtcbiAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhhdWRpb0lkLCAoKSA9PiB7XG4gICAgICAgICAgICBjYigpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTsgICAgfVxuXHRcdFxuXHR9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGJ0bkNsaWNrQW5pbWEoYnRuLCB0aW1lPTAuMTUsIHJhdGU9MS4wNSkge1xuICBidG4udG1wU2NhbGUgPSBidG4uc2NhbGU7XG4gIGJ0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9TVEFSVCwgKCkgPT4ge1xuICAgIGNjLnR3ZWVuKGJ0bilcbiAgICAgIC50byh0aW1lIC8gMiwge3NjYWxlOiBidG4uc2NhbGUgKiByYXRlfSlcbiAgICAgIC5zdGFydCgpXG4gIH0pXG4gIGJ0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9DQU5DRUwsICgpID0+IHtcbiAgICBjYy50d2VlbihidG4pXG4gICAgICAudG8odGltZSAvIDIsIHtzY2FsZTogYnRuLnRtcFNjYWxlfSlcbiAgICAgIC5zdGFydCgpXG4gIH0pXG4gIGJ0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQsICgpID0+IHtcbiAgICBjYy50d2VlbihidG4pXG4gICAgICAudG8odGltZSAvIDIsIHtzY2FsZTogYnRuLnRtcFNjYWxlfSlcbiAgICAgIC5zdGFydCgpXG4gIH0pXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNwcml0ZUZyaW1lQnlVcmwodXJsLCBjYikge1xuICBjYy5sb2FkZXIubG9hZCh7IHVybCB9LCAoZXJyLCBpbWcpID0+IHtcbiAgICBjb25zdCBzcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZShpbWcpXG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihzcHJpdGVGcmFtZSk7XG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ByTm9kZShyZXNOYW1lKSB7XG4gIGNvbnN0IHNmID0gY2MuZmluZCgnQ2FudmFzL3Jlcy9pbWcvJyArIHJlc05hbWUpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lO1xuICBjb25zdCBub2RlID0gbmV3IGNjLk5vZGUoKTtcbiAgbm9kZS5hZGRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNmO1xuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNwck5vZGVCeVVybCh1cmwsIGNiKSB7XG4gIGNvbnN0IG5vZGUgPSBuZXcgY2MuTm9kZSgpO1xuICBjb25zdCBzcHIgPSBub2RlLmFkZENvbXBvbmVudChjYy5TcHJpdGUpO1xuICBnZXRTcHJpdGVGcmltZUJ5VXJsKHVybCwgKHNmKSA9PiB7XG4gICAgc3ByLnNwcml0ZUZyYW1lID0gc2Y7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihzcHIpO1xuICAgIH1cbiAgfSlcbn1cblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBwbGF5QXVkaW8oYXVkaW9DbGlwLCBjYiA9IG51bGwpIHtcbiAgaWYgKGF1ZGlvQ2xpcCkge1xuICAgIGNvbnN0IGF1ZGlvSWQgPSBjYy5hdWRpb0VuZ2luZS5wbGF5RWZmZWN0KGF1ZGlvQ2xpcCwgZmFsc2UsIDAuOCk7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhhdWRpb0lkLCAoKSA9PiB7XG4gICAgICAgIGNiKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jRGVsYXkodGltZSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSwgdGltZSAqIDEwMDApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBjbGFzcyBGaXJld29ya1NldHRpbmdzIHtcbiAgYmFzZU5vZGU7IC8vIOeItuiKgueCuVxuICBub2RlTGlzdDsgLy8g54Gr6Iqx6IqC54K555qEYXJyYXlcbiAgcG9zOyAvLyDlj5HlsITngrlcbiAgc2lkZTsgLy8g5Y+R5bCE5pa55ZCRXG4gIHJhbmdlOyAvLyDmianmlaPojIPlm7RcbiAgbnVtYmVyOyAvLyDlj5HlsITmlbDph49cbiAgc2NhbHNlUmFuZ2U7IC8vIOe8qeaUvuiMg+WbtFxuICBjb25zdHJ1Y3RvcihiYXNlTm9kZSwgbm9kZUxpc3QsXG4gICAgcG9zID0gY2MudjIoMCwgMCksXG4gICAgc2lkZSA9IGNjLnYyKDAsIDEwMCksXG4gICAgcmFuZ2UgPSA1MCxcbiAgICBudW1iZXIgPSAxMDAsXG4gICAgc2NhbHNlUmFuZ2UgPSAwXG4gICkge1xuICAgIHRoaXMuYmFzZU5vZGUgPSBiYXNlTm9kZTtcbiAgICB0aGlzLm5vZGVMaXN0ID0gbm9kZUxpc3Q7XG4gICAgdGhpcy5wb3MgPSBwb3M7XG4gICAgdGhpcy5zaWRlID0gc2lkZTtcbiAgICB0aGlzLnJhbmdlID0gcmFuZ2U7XG4gICAgdGhpcy5udW1iZXIgPSBudW1iZXI7XG4gICAgdGhpcy5zY2Fsc2VSYW5nZSA9IHNjYWxzZVJhbmdlO1xuICB9XG5cbiAgc3RhdGljIGNvcHkoZmlyZXdvcmspIHtcbiAgICByZXR1cm4gbmV3IEZpcmV3b3JrU2V0dGluZ3MoXG4gICAgICBmaXJld29yay5iYXNlTm9kZSxcbiAgICAgIGZpcmV3b3JrLm5vZGVMaXN0LFxuICAgICAgZmlyZXdvcmsucG9zLFxuICAgICAgZmlyZXdvcmsuc2lkZSxcbiAgICAgIGZpcmV3b3JrLnJhbmdlLFxuICAgICAgZmlyZXdvcmsubnVtYmVyLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3dGaXJld29ya3MoZmlyZXdvcmtTZXR0aW5ncykge1xuICBjb25zdCB7IGJhc2VOb2RlLCBub2RlTGlzdCwgcG9zLCBzaWRlLCByYW5nZSwgbnVtYmVyLCBzY2Fsc2VSYW5nZSB9ID0gZmlyZXdvcmtTZXR0aW5ncztcbiAgbmV3IEFycmF5KG51bWJlcikuZmlsbCgnICcpLmZvckVhY2goYXN5bmMgKF8sIGkpID0+IHtcblxuICAgIGxldCByYWJib25Ob2RlID0gbmV3IGNjLk5vZGUoKTtcbiAgICByYWJib25Ob2RlLnBhcmVudCA9IGJhc2VOb2RlO1xuICAgIHJhYmJvbk5vZGUueCA9IHBvcy54O1xuICAgIHJhYmJvbk5vZGUueSA9IHBvcy55O1xuICAgIHJhYmJvbk5vZGUuYW5nbGUgPSA2MCAqIE1hdGgucmFuZG9tKCkgLSAzMDtcblxuICAgIGxldCBub2RlID0gY2MuaW5zdGFudGlhdGUobm9kZUxpc3RbUmFuZG9tSW50KG5vZGVMaXN0Lmxlbmd0aCldKTtcbiAgICBub2RlLnBhcmVudCA9IHJhYmJvbk5vZGU7XG4gICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xuICAgIG5vZGUueCA9IDA7XG4gICAgbm9kZS55ID0gMDtcbiAgICBub2RlLmFuZ2xlID0gMDtcbiAgICBub2RlLnNjYWxlID0gKE1hdGgucmFuZG9tKCkgLSAwLjUpICogc2NhbHNlUmFuZ2UgKyAxO1xuXG4gICAgY29uc3QgcmF0ZSA9IE1hdGgucmFuZG9tKCk7XG4gICAgY29uc3QgYW5nbGUgPSBNYXRoLlBJICogKE1hdGgucmFuZG9tKCkgKiAyIC0gMSk7XG5cbiAgICBhd2FpdCBhc3luY1R3ZWVuQnkocmFiYm9uTm9kZSwgMC4zLCB7XG4gICAgICB4OiBzaWRlLnggKiByYXRlICsgTWF0aC5jb3MoYW5nbGUpICogcmFuZ2UgKiByYXRlLFxuICAgICAgeTogc2lkZS55ICogcmF0ZSArIE1hdGguc2luKGFuZ2xlKSAqIHJhbmdlICogcmF0ZVxuICAgIH0sIHtcbiAgICAgIGVhc2luZzogJ3F1YWRJbidcbiAgICB9KTtcblxuICAgIGNjLnR3ZWVuKHJhYmJvbk5vZGUpXG4gICAgICAuYnkoOCwgeyB5OiAtMjAwMCB9KVxuICAgICAgLnN0YXJ0KCk7XG5cbiAgICBjYy50d2VlbihyYWJib25Ob2RlKVxuICAgICAgLnRvKDUsIHsgc2NhbGU6IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIHNjYWxzZVJhbmdlICsgMSB9KVxuICAgICAgLnN0YXJ0KCk7XG5cbiAgICByYWJib25GYWxsKHJhYmJvbk5vZGUpO1xuXG4gICAgYXdhaXQgYXN5bmNEZWxheShNYXRoLnJhbmRvbSgpKTtcbiAgICBjYy50d2Vlbihub2RlKVxuICAgICAgLmJ5KDAuMTUsIHsgeDogLTEwLCBhbmdsZTogLTEwIH0pXG4gICAgICAuYnkoMC4zLCB7IHg6IDIwLCBhbmdsZTogMjAgfSlcbiAgICAgIC5ieSgwLjE1LCB7IHg6IC0xMCwgYW5nbGU6IC0xMCB9KVxuICAgICAgLnVuaW9uKClcbiAgICAgIC5yZXBlYXRGb3JldmVyKClcbiAgICAgIC5zdGFydCgpO1xuXG4gICAgY2MudHdlZW4ocmFiYm9uTm9kZSlcbiAgICAgIC5kZWxheSg1KVxuICAgICAgLnRvKDAuMywgeyBvcGFjaXR5OiAwIH0pXG4gICAgICAuY2FsbCgoKSA9PiB7XG4gICAgICAgIG5vZGUuc3RvcEFsbEFjdGlvbnMoKTtcbiAgICAgICAgbm9kZS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgbm9kZS5wYXJlbnQgPSBudWxsO1xuICAgICAgICBub2RlID0gbnVsbDtcbiAgICAgIH0pXG4gICAgICAuc3RhcnQoKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJhYmJvbkZhbGwobm9kZSkge1xuICBjb25zdCB0aW1lID0gMSArIE1hdGgucmFuZG9tKCk7XG4gIGNvbnN0IG9mZnNldFggPSBSYW5kb21JbnQoLTIwMCwgMjAwKSAqIHRpbWU7XG4gIGF3YWl0IGFzeW5jVHdlZW5CeShub2RlLCB0aW1lLCB7IHg6IG9mZnNldFgsIGFuZ2xlOiBvZmZzZXRYICogNjAgLyAyMDAgfSk7XG4gIHJhYmJvbkZhbGwobm9kZSk7XG59XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jVHdlZW5Ubyhub2RlLCBkdXJhdGlvbiwgb2JqLCBlYXNlID0gdW5kZWZpbmVkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNjLnR3ZWVuKG5vZGUpXG4gICAgICAgIC50byhkdXJhdGlvbiwgb2JqLCBlYXNlKVxuICAgICAgICAuY2FsbCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuc3RhcnQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZWplY3QoZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jVHdlZW5CeShub2RlLCBkdXJhdGlvbiwgb2JqLCBlYXNlID0gdW5kZWZpbmVkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNjLnR3ZWVuKG5vZGUpXG4gICAgICAgIC5ieShkdXJhdGlvbiwgb2JqLCBlYXNlKVxuICAgICAgICAuY2FsbCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuc3RhcnQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZWplY3QoZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dUcmVibGVGaXJld29yayhiYXNlTm9kZSwgcmFiYm9uTGlzdCkge1xuICBjb25zdCBtaWRkbGUgPSBuZXcgRmlyZXdvcmtTZXR0aW5ncyhiYXNlTm9kZSwgcmFiYm9uTGlzdCk7XG4gIG1pZGRsZS5wb3MgPSBjYy52MigwLCAtNDAwKTtcbiAgbWlkZGxlLnNpZGUgPSBjYy52MigwLCAxMDAwKTtcbiAgbWlkZGxlLnJhbmdlID0gMjAwO1xuICBtaWRkbGUubnVtYmVyID0gMTAwO1xuICBtaWRkbGUuc2NhbHNlUmFuZ2UgPSAwLjQ7XG5cbiAgY29uc3QgbGVmdCA9IEZpcmV3b3JrU2V0dGluZ3MuY29weShtaWRkbGUpO1xuICBsZWZ0LnBvcyA9IGNjLnYyKC02MDAsIC00MDApO1xuICBsZWZ0LnNpZGUgPSBjYy52MigyMDAsIDEwMDApO1xuXG4gIGNvbnN0IHJpZ2h0ID0gRmlyZXdvcmtTZXR0aW5ncy5jb3B5KG1pZGRsZSk7XG4gIHJpZ2h0LnBvcyA9IGNjLnYyKDYwMCwgLTQwMCk7XG4gIHJpZ2h0LnNpZGUgPSBjYy52MigtMjAwLCAxMDAwKTtcblxuICBzaG93RmlyZXdvcmtzKG1pZGRsZSk7XG4gIHNob3dGaXJld29ya3MobGVmdCk7XG4gIHNob3dGaXJld29ya3MocmlnaHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25Ib21ld29ya0ZpbmlzaCgpIHtcbiAgY29uc3QgbWlkZGxlTGF5ZXIgPSBjYy5maW5kKCdtaWRkbGVMYXllcicpO1xuICBpZiAobWlkZGxlTGF5ZXIpIHtcbiAgICBjb25zdCBtaWRkbGVMYXllckNvbXBvbmVudCA9IG1pZGRsZUxheWVyLmdldENvbXBvbmVudCgnbWlkZGxlTGF5ZXInKTtcbiAgICBpZiAobWlkZGxlTGF5ZXJDb21wb25lbnQucm9sZSA9PSAnc3R1ZGVudCcpIHtcbiAgICAgIG1pZGRsZUxheWVyQ29tcG9uZW50Lm9uSG9tZXdvcmtGaW5pc2goKCkgPT4geyB9KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coJ29uSG9tZXdvcmtGaW5pc2gnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZERyYWdvbkJvbmVzKGRyYWdvbkRpc3BsYXkse3RleCwgYXRsYXMsIHNrZX0pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjYy5sb2FkZXIubG9hZCh7IHVybDogdGV4LCB0eXBlOiAncG5nJyB9LCAoZXJyb3IsIHRleHR1cmUpID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZWplY3QoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2MubG9hZGVyLmxvYWQoeyB1cmw6IGF0bGFzLCB0eXBlOiAndHh0JyB9LCAoZXJyb3IsIGF0bGFzSnNvbikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgICBjYy5sb2FkZXIubG9hZCh7IHVybDogc2tlLCB0eXBlOiAndHh0JyB9LCAoZXJyb3IsIGRyYWdvbkJvbmVzSnNvbikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhdGxhc09iaiA9IG5ldyBkcmFnb25Cb25lcy5EcmFnb25Cb25lc0F0bGFzQXNzZXQoKVxuICAgICAgICAgICAgYXRsYXNPYmoudXVpZCA9IGF0bGFzXG4gICAgICAgICAgICBhdGxhc09iai5hdGxhc0pzb24gPSBhdGxhc0pzb25cbiAgICAgICAgICAgIGF0bGFzT2JqLnRleHR1cmUgPSB0ZXh0dXJlXG4gIFxuICAgICAgICAgICAgY29uc3QgYXNzZXQgPSBuZXcgZHJhZ29uQm9uZXMuRHJhZ29uQm9uZXNBc3NldCgpXG4gICAgICAgICAgICBhc3NldC51dWlkID0gc2tlXG4gICAgICAgICAgICBhc3NldC5kcmFnb25Cb25lc0pzb24gPSBkcmFnb25Cb25lc0pzb247XG5cbiAgICAgICAgICAgIGNvbnN0IGFybWF0dXJlTmFtZSA9IGFzc2V0Ll9kcmFnb25Cb25lc0pzb25EYXRhLmFybWF0dXJlWzBdLm5hbWUgfHwgJ2RlZmF1bHQnO1xuICAgICAgICAgICAgZHJhZ29uRGlzcGxheS5hcm1hdHVyZU5hbWUgPSBhcm1hdHVyZU5hbWU7XG4gIFxuICAgICAgICAgICAgZHJhZ29uRGlzcGxheS5kcmFnb25BdGxhc0Fzc2V0ID0gYXRsYXNPYmpcbiAgICAgICAgICAgIGRyYWdvbkRpc3BsYXkuZHJhZ29uQXNzZXQgPSBhc3NldDtcbiAgICAgICAgICAgIHJlc29sdmUoYXNzZXQuX2RyYWdvbkJvbmVzSnNvbkRhdGEuYXJtYXR1cmVbMF0uYWFiYik7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIFxufVxuXG5cblxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFNwaW5lKHNrZWxldG9uLCBwaWNOYW1lLCB7dGV4LCBhdGxhcywgc2tlfSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIGNjLmxvYWRlci5sb2FkKHsgdXJsOiB0ZXgsIHR5cGU6ICdwbmcnIH0sIChlcnJvciwgdGV4dHVyZSkgPT4ge1xuICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHRleCwgKGVycm9yLCB0ZXh0dXJlKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIGNjLmxvYWRlci5sb2FkKHsgdXJsOiBhdGxhcywgdHlwZTogJ3R4dCcgfSwgKGVycm9yLCBhdGxhc0pzb24pID0+IHtcbiAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkQW55KHsgdXJsOiBhdGxhcyB9LCAoZXJyb3IsIGF0bGFzSnNvbikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgICAvLyBjYy5sb2FkZXIubG9hZCh7IHVybDogc2tlLCB0eXBlOiAndHh0JyB9LCAoZXJyb3IsIGRyYWdvbkJvbmVzSnNvbikgPT4ge1xuICAgICAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkQW55KHsgdXJsOiBza2UgfSwgKGVycm9yLCBkcmFnb25Cb25lc0pzb24pID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIHZhciBhc3NldCA9IG5ldyBzcC5Ta2VsZXRvbkRhdGEoKTtcbiAgICAgICAgICAgIGFzc2V0Ll91dWlkID0gc2tlO1xuICAgICAgICAgICAgYXNzZXQuc2tlbGV0b25Kc29uID0gSlNPTi5zdHJpbmdpZnkoIGRyYWdvbkJvbmVzSnNvbiApO1xuICAgICAgICAgICAgYXNzZXQuYXRsYXNUZXh0ID0gYXRsYXNKc29uO1xuICAgICAgICAgICAgYXNzZXQudGV4dHVyZXMgPSBbdGV4dHVyZV07XG4gICAgICAgICAgICBhc3NldC50ZXh0dXJlTmFtZXMgPSBbcGljTmFtZV07XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwaWNOYW1lOiAnLCBwaWNOYW1lKTtcblxuXHRcdFx0ICAgICAgc2tlbGV0b24uc2tlbGV0b25EYXRhID0gYXNzZXQ7XG5cdFxuXG4gICAgICAgICAgICBjb25zdCBqc29uT2JqID0gZHJhZ29uQm9uZXNKc29uIC8vSlNPTi5wYXJzZSggYXNzZXRzWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGFuaW1hdGlvbk5hbWVPYmogPSBqc29uT2JqLmFuaW1hdGlvbnM7XG4gICAgICAgICAgICBsZXQgYW5pbWF0aW9uTmFtZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IG5hbWUgaW4gYW5pbWF0aW9uTmFtZU9iaikge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbmFtZX5+OiAgJywgbmFtZSk7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbk5hbWVzLnB1c2gobmFtZSk7XG4gICAgICAgICAgICB9XG5cdFx0XHQgICAgICBjb25zb2xlLmxvZyhcInNrZWxldG9uLmFuaW1hdGlvbjogXCIsIHNrZWxldG9uLmFuaW1hdGlvbik7XG4gICAgICAgICAgICBza2VsZXRvbi5hbmltYXRpb25OYW1lcyA9IGFuaW1hdGlvbk5hbWVzO1xuXHRcdFx0ICAgICAgc2tlbGV0b24ubG9vcCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImpzb25PYmpbJ3NrZWxldG9uJ10gOiBcIiwganNvbk9ialsnc2tlbGV0b24nXSlcblxuICAgICAgICAgICAgcmVzb2x2ZShqc29uT2JqWydza2VsZXRvbiddKTtcblxuXG4gICAgICAgICAgICAvLyBjb25zdCBhdGxhc09iaiA9IG5ldyBkcmFnb25Cb25lcy5EcmFnb25Cb25lc0F0bGFzQXNzZXQoKVxuICAgICAgICAgICAgLy8gYXRsYXNPYmoudXVpZCA9IGF0bGFzXG4gICAgICAgICAgICAvLyBhdGxhc09iai5hdGxhc0pzb24gPSBhdGxhc0pzb25cbiAgICAgICAgICAgIC8vIGF0bGFzT2JqLnRleHR1cmUgPSB0ZXh0dXJlXG4gIFxuICAgICAgICAgICAgLy8gY29uc3QgYXNzZXQgPSBuZXcgZHJhZ29uQm9uZXMuRHJhZ29uQm9uZXNBc3NldCgpXG4gICAgICAgICAgICAvLyBhc3NldC51dWlkID0gc2tlXG4gICAgICAgICAgICAvLyBhc3NldC5kcmFnb25Cb25lc0pzb24gPSBkcmFnb25Cb25lc0pzb247XG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGFybWF0dXJlTmFtZSA9IGFzc2V0Ll9kcmFnb25Cb25lc0pzb25EYXRhLmFybWF0dXJlWzBdLm5hbWUgfHwgJ2RlZmF1bHQnO1xuICAgICAgICAgICAgLy8gZHJhZ29uRGlzcGxheS5hcm1hdHVyZU5hbWUgPSBhcm1hdHVyZU5hbWU7XG4gIFxuICAgICAgICAgICAgLy8gZHJhZ29uRGlzcGxheS5kcmFnb25BdGxhc0Fzc2V0ID0gYXRsYXNPYmpcbiAgICAgICAgICAgIC8vIGRyYWdvbkRpc3BsYXkuZHJhZ29uQXNzZXQgPSBhc3NldDtcbiAgICAgICAgICAgIC8vIHJlc29sdmUoYXNzZXQuX2RyYWdvbkJvbmVzSnNvbkRhdGEuYXJtYXR1cmVbMF0uYWFiYik7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIFxufVxuIl19
-//------QC-SOURCE-SPLIT------
+  function R(t, e, n, r, i) {
+    var o = t.options.guards,
+        a = {
+      state: i,
+      cond: e,
+      _event: r
+    };
+    if ("xstate.guard" === e.type) return ((null == o ? void 0 : o[e.name]) || e.predicate)(n, r.data, a);
+    var s = o[e.type];
+    if (!s) throw new Error("Guard '".concat(e.type, "' is not implemented on machine '").concat(t.id, "'."));
+    return s(n, r.data, a);
+  }
 
-                (function() {
-                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
-                    var __module = nodeEnv ? module : {exports:{}};
-                    var __filename = 'preview-scripts/assets/OP15/script/state.js';
-                    var __require = nodeEnv ? function (request) {
-                        return cc.require(request);
-                    } : function (request) {
-                        return __quick_compile_project__.require(request, __filename);
-                    };
-                    function __define (exports, require, module) {
-                        if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
-cc._RF.push(module, '6acefvFAO9O7qvqEFnz5PJj', 'state');
-// OP15/script/state.js
+  function M(t) {
+    return "string" == typeof t ? {
+      type: t
+    } : t;
+  }
 
-"use strict";
+  function z(t, e, n) {
+    if ("object" == typeof t) return t;
 
-exports.__esModule = true;
-exports.assign = o;
-exports.createMachine = s;
-exports.interpret = v;
-exports.InterpreterStatus = void 0;
+    var r = function r() {};
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
+    return {
+      next: t,
+      error: e || r,
+      complete: n || r
+    };
+  }
 
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
+  (I = t.ActionTypes || (t.ActionTypes = {})).Start = "xstate.start", I.Stop = "xstate.stop", I.Raise = "xstate.raise", I.Send = "xstate.send", I.Cancel = "xstate.cancel", I.NullEvent = "", I.Assign = "xstate.assign", I.After = "xstate.after", I.DoneState = "done.state", I.DoneInvoke = "done.invoke", I.Log = "xstate.log", I.Init = "xstate.init", I.Invoke = "xstate.invoke", I.ErrorExecution = "error.execution", I.ErrorCommunication = "error.communication", I.ErrorPlatform = "error.platform", I.ErrorCustom = "xstate.error", I.Update = "xstate.update", I.Pure = "xstate.pure", I.Choose = "xstate.choose", (j = t.SpecialTargets || (t.SpecialTargets = {})).Parent = "#_parent", j.Internal = "#_internal";
 
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-function t(t, n) {
-  var e = "function" == typeof Symbol && t[Symbol.iterator];
-  if (!e) return t;
-  var r,
-      o,
-      i = e.call(t),
-      a = [];
+  var F = function F(t) {
+    return "atomic" === t.type || "final" === t.type;
+  };
 
-  try {
-    for (; (void 0 === n || n-- > 0) && !(r = i.next()).done;) {
-      a.push(r.value);
-    }
-  } catch (t) {
-    o = {
-      error: t
-    };
-  } finally {
-    try {
-      r && !r.done && (e = i["return"]) && e.call(i);
-    } finally {
-      if (o) throw o.error;
-    }
+  function U(t) {
+    return s(t.states).map(function (e) {
+      return t.states[e];
+    });
   }
 
-  return a;
-}
+  function B(t) {
+    var e = [t];
+    return F(t) ? e : e.concat(g(U(t).map(B)));
+  }
 
-var n;
-exports.InterpreterStatus = n;
-!function (t) {
-  t[t.NotStarted = 0] = "NotStarted", t[t.Running = 1] = "Running", t[t.Stopped = 2] = "Stopped";
-}(n || (exports.InterpreterStatus = n = {}));
-var e = {
-  type: "xstate.init"
-};
+  function J(t, e) {
+    var n,
+        i,
+        o,
+        a,
+        s,
+        c,
+        u,
+        h,
+        f = q(new Set(t)),
+        l = new Set(e);
 
-function r(t) {
-  return void 0 === t ? [] : [].concat(t);
-}
+    try {
+      for (var d = r(l), p = d.next(); !p.done; p = d.next()) {
+        for (var v = (E = p.value).parent; v && !l.has(v);) {
+          l.add(v), v = v.parent;
+        }
+      }
+    } catch (t) {
+      n = {
+        error: t
+      };
+    } finally {
+      try {
+        p && !p.done && (i = d["return"]) && i.call(d);
+      } finally {
+        if (n) throw n.error;
+      }
+    }
 
-function o(t) {
-  return {
-    type: "xstate.assign",
-    assignment: t
-  };
-}
+    var y = q(l);
 
-function i(t, n) {
-  return "string" == typeof (t = "string" == typeof t && n && n[t] ? n[t] : t) ? {
-    type: t
-  } : "function" == typeof t ? {
-    type: t.name,
-    exec: t
-  } : t;
-}
+    try {
+      for (var g = r(l), m = g.next(); !m.done; m = g.next()) {
+        if ("compound" !== (E = m.value).type || y.get(E) && y.get(E).length) {
+          if ("parallel" === E.type) try {
+            for (var S = (s = void 0, r(U(E))), x = S.next(); !x.done; x = S.next()) {
+              var w = x.value;
+              "history" !== w.type && (l.has(w) || (l.add(w), f.get(w) ? f.get(w).forEach(function (t) {
+                return l.add(t);
+              }) : w.initialStateNodes.forEach(function (t) {
+                return l.add(t);
+              })));
+            }
+          } catch (t) {
+            s = {
+              error: t
+            };
+          } finally {
+            try {
+              x && !x.done && (c = S["return"]) && c.call(S);
+            } finally {
+              if (s) throw s.error;
+            }
+          }
+        } else f.get(E) ? f.get(E).forEach(function (t) {
+          return l.add(t);
+        }) : E.initialStateNodes.forEach(function (t) {
+          return l.add(t);
+        });
+      }
+    } catch (t) {
+      o = {
+        error: t
+      };
+    } finally {
+      try {
+        m && !m.done && (a = g["return"]) && a.call(g);
+      } finally {
+        if (o) throw o.error;
+      }
+    }
 
-function a(t) {
-  return function (n) {
-    return t === n;
-  };
-}
+    try {
+      for (var b = r(l), _ = b.next(); !_.done; _ = b.next()) {
+        var E;
 
-function u(t) {
-  return "string" == typeof t ? {
-    type: t
-  } : t;
-}
+        for (v = (E = _.value).parent; v && !l.has(v);) {
+          l.add(v), v = v.parent;
+        }
+      }
+    } catch (t) {
+      u = {
+        error: t
+      };
+    } finally {
+      try {
+        _ && !_.done && (h = b["return"]) && h.call(b);
+      } finally {
+        if (u) throw u.error;
+      }
+    }
 
-function c(t, n) {
-  return {
-    value: t,
-    context: n,
-    actions: [],
-    changed: !1,
-    matches: a(t)
-  };
-}
+    return l;
+  }
 
-function f(t, n, e) {
-  var r = n,
-      o = !1;
-  return [t.filter(function (t) {
-    if ("xstate.assign" === t.type) {
-      o = !0;
-      var n = Object.assign({}, r);
-      return "function" == typeof t.assignment ? n = t.assignment(r, e) : Object.keys(t.assignment).forEach(function (o) {
-        n[o] = "function" == typeof t.assignment[o] ? t.assignment[o](r, e) : t.assignment[o];
-      }), r = n, !1;
+  function q(t) {
+    var e,
+        n,
+        i = new Map();
+
+    try {
+      for (var o = r(t), a = o.next(); !a.done; a = o.next()) {
+        var s = a.value;
+        i.has(s) || i.set(s, []), s.parent && (i.has(s.parent) || i.set(s.parent, []), i.get(s.parent).push(s));
+      }
+    } catch (t) {
+      e = {
+        error: t
+      };
+    } finally {
+      try {
+        a && !a.done && (n = o["return"]) && n.call(o);
+      } finally {
+        if (e) throw e.error;
+      }
     }
 
-    return !0;
-  }), r, o];
-}
+    return i;
+  }
 
-function s(n, o) {
-  void 0 === o && (o = {});
-  var s = t(f(r(n.states[n.initial].entry).map(function (t) {
-    return i(t, o.actions);
-  }), n.context, e), 2),
-      l = s[0],
-      v = s[1],
-      y = {
-    config: n,
-    _options: o,
-    initialState: {
-      value: n.initial,
-      actions: l,
-      context: v,
-      matches: a(n.initial)
-    },
-    transition: function transition(e, o) {
-      var s,
-          l,
-          v = "string" == typeof e ? {
-        value: e,
-        context: n.context
-      } : e,
-          p = v.value,
-          g = v.context,
-          d = u(o),
-          x = n.states[p];
+  function $(t, e) {
+    return function t(e, n) {
+      var r = n.get(e);
+      if (!r) return {};
 
-      if (x.on) {
-        var m = r(x.on[d.type]);
+      if ("compound" === e.type) {
+        var i = r[0];
+        if (!i) return {};
+        if (F(i)) return i.key;
+      }
 
-        try {
-          for (var h = function (t) {
-            var n = "function" == typeof Symbol && Symbol.iterator,
-                e = n && t[n],
-                r = 0;
-            if (e) return e.call(t);
-            if (t && "number" == typeof t.length) return {
-              next: function next() {
-                return t && r >= t.length && (t = void 0), {
-                  value: t && t[r++],
-                  done: !t
-                };
-              }
-            };
-            throw new TypeError(n ? "Object is not iterable." : "Symbol.iterator is not defined.");
-          }(m), b = h.next(); !b.done; b = h.next()) {
-            var S = b.value;
-            if (void 0 === S) return c(p, g);
+      var o = {};
+      return r.forEach(function (e) {
+        o[e.key] = t(e, n);
+      }), o;
+    }(t, q(J([t], e)));
+  }
 
-            var w = "string" == typeof S ? {
-              target: S
-            } : S,
-                j = w.target,
-                E = w.actions,
-                R = void 0 === E ? [] : E,
-                N = w.cond,
-                O = void 0 === N ? function () {
-              return !0;
-            } : N,
-                _ = void 0 === j,
-                k = null != j ? j : p,
-                T = n.states[k];
+  function X(t, e) {
+    return Array.isArray(t) ? t.some(function (t) {
+      return t === e;
+    }) : t instanceof Set && t.has(e);
+  }
 
-            if (O(g, d)) {
-              var q = t(f((_ ? r(R) : [].concat(x.exit, R, T.entry).filter(function (t) {
-                return t;
-              })).map(function (t) {
-                return i(t, y._options.actions);
-              }), g, d), 3),
-                  z = q[0],
-                  A = q[1],
-                  B = q[2],
-                  C = null != j ? j : p;
-              return {
-                value: C,
-                context: A,
-                actions: z,
-                changed: j !== p || z.length > 0 || B,
-                matches: a(C)
-              };
-            }
-          }
-        } catch (t) {
-          s = {
-            error: t
-          };
-        } finally {
-          try {
-            b && !b.done && (l = h["return"]) && l.call(h);
-          } finally {
-            if (s) throw s.error;
-          }
-        }
-      }
+  function H(t, e) {
+    return "compound" === e.type ? U(e).some(function (e) {
+      return "final" === e.type && X(t, e);
+    }) : "parallel" === e.type && U(e).every(function (e) {
+      return H(t, e);
+    });
+  }
 
-      return c(p, g);
+  function G(t) {
+    return new Set(g(t.map(function (t) {
+      return t.tags;
+    })));
+  }
+
+  var K = t.ActionTypes.Start,
+      Q = t.ActionTypes.Stop,
+      W = t.ActionTypes.Raise,
+      Y = t.ActionTypes.Send,
+      Z = t.ActionTypes.Cancel,
+      tt = t.ActionTypes.NullEvent,
+      et = t.ActionTypes.Assign,
+      nt = (t.ActionTypes.After, t.ActionTypes.DoneState, t.ActionTypes.Log),
+      rt = t.ActionTypes.Init,
+      it = t.ActionTypes.Invoke,
+      ot = (t.ActionTypes.ErrorExecution, t.ActionTypes.ErrorPlatform),
+      at = t.ActionTypes.ErrorCustom,
+      st = t.ActionTypes.Update,
+      ct = t.ActionTypes.Choose,
+      ut = t.ActionTypes.Pure,
+      ht = L({
+    type: rt
+  });
+
+  function ft(t, e) {
+    return e && e[t] || void 0;
+  }
+
+  function lt(t, n) {
+    var r;
+    if (A(t) || "number" == typeof t) r = N(i = ft(t, n)) ? {
+      type: t,
+      exec: i
+    } : i || {
+      type: t,
+      exec: void 0
+    };else if (N(t)) r = {
+      type: t.name || t.toString(),
+      exec: t
+    };else {
+      var i;
+      if (N(i = ft(t.type, n))) r = _e(_e({}, t), {
+        exec: i
+      });else if (i) {
+        var o = i.type || t.type;
+        r = _e(_e(_e({}, i), t), {
+          type: o
+        });
+      } else r = t;
     }
+    return r;
+  }
+
+  var dt = function dt(t, e) {
+    return t ? (T(t) ? t : [t]).map(function (t) {
+      return lt(t, e);
+    }) : [];
   };
-  return y;
-}
 
-var l = function l(t, n) {
-  return t.actions.forEach(function (e) {
-    var r = e.exec;
-    return r && r(t.context, n);
-  });
-};
+  function pt(t) {
+    var n = lt(t);
+    return _e(_e({
+      id: A(t) ? t : n.id
+    }, n), {
+      type: n.type
+    });
+  }
 
-function v(t) {
-  var r = t.initialState,
-      o = n.NotStarted,
-      i = new Set(),
-      c = {
-    _machine: t,
-    send: function send(e) {
-      o === n.Running && (r = t.transition(r, e), l(r, u(e)), i.forEach(function (t) {
-        return t(r);
-      }));
-    },
-    subscribe: function subscribe(t) {
-      return i.add(t), t(r), {
-        unsubscribe: function unsubscribe() {
-          return i["delete"](t);
-        }
-      };
-    },
-    start: function start(i) {
-      if (i) {
-        var u = "object" == typeof i ? i : {
-          context: t.config.context,
-          value: i
-        };
-        r = {
-          value: u.value,
-          actions: [],
-          context: u.context,
-          matches: a(u.value)
-        };
-      }
+  function vt(e) {
+    return A(e) ? {
+      type: W,
+      event: e
+    } : yt(e, {
+      to: t.SpecialTargets.Internal
+    });
+  }
 
-      return o = n.Running, l(r, e), c;
-    },
-    stop: function stop() {
-      return o = n.Stopped, i.clear(), c;
-    },
+  function yt(t, e) {
+    return {
+      to: e ? e.to : void 0,
+      type: Y,
+      event: N(t) ? t : V(t),
+      delay: e ? e.delay : void 0,
+      id: e && void 0 !== e.id ? e.id : N(t) ? t.name : u(t)
+    };
+  }
 
-    get state() {
-      return r;
-    },
+  function gt(n, r) {
+    return yt(n, _e(_e({}, r), {
+      to: t.SpecialTargets.Parent
+    }));
+  }
 
-    get status() {
-      return o;
-    }
+  function mt() {
+    return gt(st);
+  }
 
+  var St = function St(t, e) {
+    return {
+      context: t,
+      event: e
+    };
   };
-  return c;
-}
 
-cc._RF.pop();
-                    }
-                    if (nodeEnv) {
-                        __define(__module.exports, __require, __module);
-                    }
-                    else {
-                        __quick_compile_project__.registerModuleFunc(__filename, function () {
-                            __define(__module.exports, __require, __module);
-                        });
-                    }
-                })();
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9PUDE1L3NjcmlwdC9zdGF0ZS5qcyJdLCJuYW1lcyI6WyJ0IiwibiIsImUiLCJTeW1ib2wiLCJpdGVyYXRvciIsInIiLCJvIiwiaSIsImNhbGwiLCJhIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJlcnJvciIsIk5vdFN0YXJ0ZWQiLCJSdW5uaW5nIiwiU3RvcHBlZCIsInR5cGUiLCJjb25jYXQiLCJhc3NpZ25tZW50IiwibmFtZSIsImV4ZWMiLCJ1IiwiYyIsImNvbnRleHQiLCJhY3Rpb25zIiwiY2hhbmdlZCIsIm1hdGNoZXMiLCJmIiwiZmlsdGVyIiwiT2JqZWN0IiwiYXNzaWduIiwia2V5cyIsImZvckVhY2giLCJzIiwic3RhdGVzIiwiaW5pdGlhbCIsImVudHJ5IiwibWFwIiwibCIsInYiLCJ5IiwiY29uZmlnIiwiX29wdGlvbnMiLCJpbml0aWFsU3RhdGUiLCJ0cmFuc2l0aW9uIiwicCIsImciLCJkIiwieCIsIm9uIiwibSIsImgiLCJsZW5ndGgiLCJUeXBlRXJyb3IiLCJiIiwiUyIsInciLCJ0YXJnZXQiLCJqIiwiRSIsIlIiLCJOIiwiY29uZCIsIk8iLCJfIiwiayIsIlQiLCJxIiwiZXhpdCIsInoiLCJBIiwiQiIsIkMiLCJTZXQiLCJfbWFjaGluZSIsInNlbmQiLCJzdWJzY3JpYmUiLCJhZGQiLCJ1bnN1YnNjcmliZSIsInN0YXJ0Iiwic3RvcCIsImNsZWFyIiwic3RhdGUiLCJzdGF0dXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLENBQVQsQ0FBV0EsQ0FBWCxFQUFhQyxDQUFiLEVBQWU7QUFBQyxNQUFJQyxDQUFDLEdBQUMsY0FBWSxPQUFPQyxNQUFuQixJQUEyQkgsQ0FBQyxDQUFDRyxNQUFNLENBQUNDLFFBQVIsQ0FBbEM7QUFBb0QsTUFBRyxDQUFD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LFNBQTNCO0FBQThERixRQUFBQSxDQUFDLEdBQUM7QUFBQ1EsVUFBQUEsS0FBSyxFQUFDVSxDQUFDLENBQUNWLEtBQVQ7QUFBZWEsVUFBQUEsT0FBTyxFQUFDLEVBQXZCO0FBQTBCRCxVQUFBQSxPQUFPLEVBQUNGLENBQUMsQ0FBQ0UsT0FBcEM7QUFBNENHLFVBQUFBLE9BQU8sRUFBQ25CLENBQUMsQ0FBQ2MsQ0FBQyxDQUFDVixLQUFIO0FBQXJELFNBQUY7QUFBa0U7O0FBQUEsYUFBT1AsQ0FBQyxHQUFDTCxDQUFDLENBQUNlLE9BQUosRUFBWXdCLENBQUMsQ0FBQ25DLENBQUQsRUFBR0gsQ0FBSCxDQUFiLEVBQW1Cc0IsQ0FBMUI7QUFBNEIsS0FBaFk7QUFBaVkwRCxJQUFBQSxJQUFJLEVBQUMsZ0JBQVU7QUFBQyxhQUFPNUUsQ0FBQyxHQUFDTCxDQUFDLENBQUNnQixPQUFKLEVBQVlWLENBQUMsQ0FBQzRFLEtBQUYsRUFBWixFQUFzQjNELENBQTdCO0FBQStCLEtBQWhiOztBQUFpYixRQUFJNEQsS0FBSixHQUFXO0FBQUMsYUFBTy9FLENBQVA7QUFBUyxLQUF0Yzs7QUFBdWMsUUFBSWdGLE1BQUosR0FBWTtBQUFDLGFBQU8vRSxDQUFQO0FBQVM7O0FBQTdkLEdBQWhEO0FBQStnQixTQUFPa0IsQ0FBUDtBQUFTIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxuXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbmZ1bmN0aW9uIHQodCxuKXt2YXIgZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighZSlyZXR1cm4gdDt2YXIgcixvLGk9ZS5jYWxsKHQpLGE9W107dHJ5e2Zvcig7KHZvaWQgMD09PW58fG4tLSA+MCkmJiEocj1pLm5leHQoKSkuZG9uZTspYS5wdXNoKHIudmFsdWUpfWNhdGNoKHQpe289e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3ImJiFyLmRvbmUmJihlPWkucmV0dXJuKSYmZS5jYWxsKGkpfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1yZXR1cm4gYX12YXIgbjshZnVuY3Rpb24odCl7dFt0Lk5vdFN0YXJ0ZWQ9MF09XCJOb3RTdGFydGVkXCIsdFt0LlJ1bm5pbmc9MV09XCJSdW5uaW5nXCIsdFt0LlN0b3BwZWQ9Ml09XCJTdG9wcGVkXCJ9KG58fChuPXt9KSk7dmFyIGU9e3R5cGU6XCJ4c3RhdGUuaW5pdFwifTtmdW5jdGlvbiByKHQpe3JldHVybiB2b2lkIDA9PT10P1tdOltdLmNvbmNhdCh0KX1mdW5jdGlvbiBvKHQpe3JldHVybnt0eXBlOlwieHN0YXRlLmFzc2lnblwiLGFzc2lnbm1lbnQ6dH19ZnVuY3Rpb24gaSh0LG4pe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZih0PVwic3RyaW5nXCI9PXR5cGVvZiB0JiZuJiZuW3RdP25bdF06dCk/e3R5cGU6dH06XCJmdW5jdGlvblwiPT10eXBlb2YgdD97dHlwZTp0Lm5hbWUsZXhlYzp0fTp0fWZ1bmN0aW9uIGEodCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0PT09bn19ZnVuY3Rpb24gdSh0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD97dHlwZTp0fTp0fWZ1bmN0aW9uIGModCxuKXtyZXR1cm57dmFsdWU6dCxjb250ZXh0Om4sYWN0aW9uczpbXSxjaGFuZ2VkOiExLG1hdGNoZXM6YSh0KX19ZnVuY3Rpb24gZih0LG4sZSl7dmFyIHI9bixvPSExO3JldHVyblt0LmZpbHRlcigoZnVuY3Rpb24odCl7aWYoXCJ4c3RhdGUuYXNzaWduXCI9PT10LnR5cGUpe289ITA7dmFyIG49T2JqZWN0LmFzc2lnbih7fSxyKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmFzc2lnbm1lbnQ/bj10LmFzc2lnbm1lbnQocixlKTpPYmplY3Qua2V5cyh0LmFzc2lnbm1lbnQpLmZvckVhY2goKGZ1bmN0aW9uKG8pe25bb109XCJmdW5jdGlvblwiPT10eXBlb2YgdC5hc3NpZ25tZW50W29dP3QuYXNzaWdubWVudFtvXShyLGUpOnQuYXNzaWdubWVudFtvXX0pKSxyPW4sITF9cmV0dXJuITB9KSkscixvXX1mdW5jdGlvbiBzKG4sbyl7dm9pZCAwPT09byYmKG89e30pO3ZhciBzPXQoZihyKG4uc3RhdGVzW24uaW5pdGlhbF0uZW50cnkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGkodCxvLmFjdGlvbnMpfSkpLG4uY29udGV4dCxlKSwyKSxsPXNbMF0sdj1zWzFdLHk9e2NvbmZpZzpuLF9vcHRpb25zOm8saW5pdGlhbFN0YXRlOnt2YWx1ZTpuLmluaXRpYWwsYWN0aW9uczpsLGNvbnRleHQ6dixtYXRjaGVzOmEobi5pbml0aWFsKX0sdHJhbnNpdGlvbjpmdW5jdGlvbihlLG8pe3ZhciBzLGwsdj1cInN0cmluZ1wiPT10eXBlb2YgZT97dmFsdWU6ZSxjb250ZXh0Om4uY29udGV4dH06ZSxwPXYudmFsdWUsZz12LmNvbnRleHQsZD11KG8pLHg9bi5zdGF0ZXNbcF07aWYoeC5vbil7dmFyIG09cih4Lm9uW2QudHlwZV0pO3RyeXtmb3IodmFyIGg9ZnVuY3Rpb24odCl7dmFyIG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsZT1uJiZ0W25dLHI9MDtpZihlKXJldHVybiBlLmNhbGwodCk7aWYodCYmXCJudW1iZXJcIj09dHlwZW9mIHQubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHQmJnI+PXQubGVuZ3RoJiYodD12b2lkIDApLHt2YWx1ZTp0JiZ0W3IrK10sZG9uZTohdH19fTt0aHJvdyBuZXcgVHlwZUVycm9yKG4/XCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiOlwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKX0obSksYj1oLm5leHQoKTshYi5kb25lO2I9aC5uZXh0KCkpe3ZhciBTPWIudmFsdWU7aWYodm9pZCAwPT09UylyZXR1cm4gYyhwLGcpO3ZhciB3PVwic3RyaW5nXCI9PXR5cGVvZiBTP3t0YXJnZXQ6U306UyxqPXcudGFyZ2V0LEU9dy5hY3Rpb25zLFI9dm9pZCAwPT09RT9bXTpFLE49dy5jb25kLE89dm9pZCAwPT09Tj9mdW5jdGlvbigpe3JldHVybiEwfTpOLF89dm9pZCAwPT09aixrPW51bGwhPWo/ajpwLFQ9bi5zdGF0ZXNba107aWYoTyhnLGQpKXt2YXIgcT10KGYoKF8/cihSKTpbXS5jb25jYXQoeC5leGl0LFIsVC5lbnRyeSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gaSh0LHkuX29wdGlvbnMuYWN0aW9ucyl9KSksZyxkKSwzKSx6PXFbMF0sQT1xWzFdLEI9cVsyXSxDPW51bGwhPWo/ajpwO3JldHVybnt2YWx1ZTpDLGNvbnRleHQ6QSxhY3Rpb25zOnosY2hhbmdlZDpqIT09cHx8ei5sZW5ndGg+MHx8QixtYXRjaGVzOmEoQyl9fX19Y2F0Y2godCl7cz17ZXJyb3I6dH19ZmluYWxseXt0cnl7YiYmIWIuZG9uZSYmKGw9aC5yZXR1cm4pJiZsLmNhbGwoaCl9ZmluYWxseXtpZihzKXRocm93IHMuZXJyb3J9fX1yZXR1cm4gYyhwLGcpfX07cmV0dXJuIHl9dmFyIGw9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5hY3Rpb25zLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPWUuZXhlYztyZXR1cm4gciYmcih0LmNvbnRleHQsbil9KSl9O2Z1bmN0aW9uIHYodCl7dmFyIHI9dC5pbml0aWFsU3RhdGUsbz1uLk5vdFN0YXJ0ZWQsaT1uZXcgU2V0LGM9e19tYWNoaW5lOnQsc2VuZDpmdW5jdGlvbihlKXtvPT09bi5SdW5uaW5nJiYocj10LnRyYW5zaXRpb24ocixlKSxsKHIsdShlKSksaS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdChyKX0pKSl9LHN1YnNjcmliZTpmdW5jdGlvbih0KXtyZXR1cm4gaS5hZGQodCksdChyKSx7dW5zdWJzY3JpYmU6ZnVuY3Rpb24oKXtyZXR1cm4gaS5kZWxldGUodCl9fX0sc3RhcnQ6ZnVuY3Rpb24oaSl7aWYoaSl7dmFyIHU9XCJvYmplY3RcIj09dHlwZW9mIGk/aTp7Y29udGV4dDp0LmNvbmZpZy5jb250ZXh0LHZhbHVlOml9O3I9e3ZhbHVlOnUudmFsdWUsYWN0aW9uczpbXSxjb250ZXh0OnUuY29udGV4dCxtYXRjaGVzOmEodS52YWx1ZSl9fXJldHVybiBvPW4uUnVubmluZyxsKHIsZSksY30sc3RvcDpmdW5jdGlvbigpe3JldHVybiBvPW4uU3RvcHBlZCxpLmNsZWFyKCksY30sZ2V0IHN0YXRlKCl7cmV0dXJuIHJ9LGdldCBzdGF0dXMoKXtyZXR1cm4gb319O3JldHVybiBjfWV4cG9ydHtuIGFzIEludGVycHJldGVyU3RhdHVzLG8gYXMgYXNzaWduLHMgYXMgY3JlYXRlTWFjaGluZSx2IGFzIGludGVycHJldH07XG4iXX0=
-//------QC-SOURCE-SPLIT------
+  var xt = function xt(t) {
+    return {
+      type: Z,
+      sendId: t
+    };
+  };
 
-                (function() {
-                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
-                    var __module = nodeEnv ? module : {exports:{}};
-                    var __filename = 'preview-scripts/assets/OP15/script/defaultData.js';
-                    var __require = nodeEnv ? function (request) {
-                        return cc.require(request);
-                    } : function (request) {
-                        return __quick_compile_project__.require(request, __filename);
-                    };
-                    function __define (exports, require, module) {
-                        if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
-cc._RF.push(module, 'c41b05RVddEPK86siw92bnl', 'defaultData');
-// OP15/script/defaultData.js
+  function wt(e) {
+    var n = pt(e);
+    return {
+      type: t.ActionTypes.Start,
+      activity: n,
+      exec: void 0
+    };
+  }
 
-"use strict";
+  function bt(e) {
+    var n = N(e) ? e : pt(e);
+    return {
+      type: t.ActionTypes.Stop,
+      activity: n,
+      exec: void 0
+    };
+  }
 
-exports.__esModule = true;
-exports.defaultData = void 0;
-var defaultData = {
-  // "begin_audio": "http://staging-teach.cdn.ireadabc.com/b1e5378083adac9950839772c7b67f34.mp3",
-  "begin_audio": "http://staging-teach.cdn.ireadabc.com/81e7a94e1420a4cbcaa583d4188ab145.mp3",
-  "playing_audio": "http://teach.cdn.ireadabc.com/549347d1be620d9d91b7420d45b3cb7a.mp3",
-  "end_audio": "http://staging-teach.cdn.ireadabc.com/81e7a94e1420a4cbcaa583d4188ab145.mp3",
-  "bgItem": {
-    "url": "http://teach.cdn.ireadabc.com/adcccbd26e2cfa259920e24df01d4b92.png",
-    "rect": {
-      "x": 374.6,
-      "y": 0,
-      "width": 293.8,
-      "height": 390
-    }
-  },
-  "hotZoneItemArr": [{
-    "id": "1638090450402",
-    "index": 0,
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/c5c6cd890660a3c22fde393a3770458f.json",
-      "name": "小汽车_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/cea107517406463474d907e306163226.json",
-      "name": "小汽车_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/84bce64cd4259e604a458d08ddd75bec.png",
-      "name": "小汽车_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 195
-    },
-    "gIdx": "1",
-    "rect": {
-      "x": 46.9,
-      "y": 95,
-      "width": 200,
-      "height": 200
-    }
-  }, {
-    "id": "1638090465133",
-    "index": 1,
-    "pic_url": "http://teach.cdn.ireadabc.com/70d02ee3788e373f707a45530cd2f9c0.png",
-    "itemType": "pic",
-    "fontScale": 0.81484375,
-    "imgScale": 0.23579201934703747,
-    "imgSizeW": 1246,
-    "imgSizeH": 1654,
-    "mapScale": 0.81484375,
-    "dragDot": {
-      "x": 521.5,
-      "y": 195
-    },
-    "gIdx": "2",
-    "rect": {
-      "x": 0,
-      "y": 1,
-      "width": 293.8,
-      "height": 390
+  var _t = function _t(t) {
+    return {
+      type: et,
+      assignment: t
+    };
+  };
+
+  function Et(e, n) {
+    var r = n ? "#".concat(n) : "";
+    return "".concat(t.ActionTypes.After, "(").concat(e, ")").concat(r);
+  }
+
+  function Tt(e, n) {
+    var r = "".concat(t.ActionTypes.DoneState, ".").concat(e),
+        i = {
+      type: r,
+      data: n,
+      toString: function toString() {
+        return r;
+      }
+    };
+    return i;
+  }
+
+  function Nt(e, n) {
+    var r = "".concat(t.ActionTypes.DoneInvoke, ".").concat(e),
+        i = {
+      type: r,
+      data: n,
+      toString: function toString() {
+        return r;
+      }
+    };
+    return i;
+  }
+
+  function At(e, n) {
+    var r = "".concat(t.ActionTypes.ErrorPlatform, ".").concat(e),
+        i = {
+      type: r,
+      data: n,
+      toString: function toString() {
+        return r;
+      }
+    };
+    return i;
+  }
+
+  function Ot(t, n) {
+    return yt(function (t, e) {
+      return e;
+    }, _e(_e({}, n), {
+      to: t
+    }));
+  }
+
+  function Pt(n, r, a, s, c, u) {
+    void 0 === u && (u = !1);
+    var h = i(u ? [[], c] : b(c, function (t) {
+      return t.type === et;
+    }), 2),
+        f = h[0],
+        l = h[1],
+        d = f.length ? E(a, s, f, r) : a,
+        p = u ? [a] : void 0;
+    return [g(l.map(function (a) {
+      var c;
+
+      switch (a.type) {
+        case W:
+          return {
+            type: W,
+            _event: L(a.event)
+          };
+
+        case Y:
+          return function (t, n, r, i) {
+            var o,
+                a = {
+              _event: r
+            },
+                s = L(N(t.event) ? t.event(n, r.data, a) : t.event);
+
+            if (A(t.delay)) {
+              var c = i && i[t.delay];
+              o = N(c) ? c(n, r.data, a) : c;
+            } else o = N(t.delay) ? t.delay(n, r.data, a) : t.delay;
+
+            var u = N(t.to) ? t.to(n, r.data, a) : t.to;
+            return _e(_e({}, t), {
+              to: u,
+              _event: s,
+              event: s.data,
+              delay: o
+            });
+          }(a, d, s, n.options.delays);
+
+        case nt:
+          return function (t, n, r) {
+            return _e(_e({}, t), {
+              value: A(t.expr) ? t.expr : t.expr(n, r.data, {
+                _event: r
+              })
+            });
+          }(a, d, s);
+
+        case ct:
+          if (!(v = null === (c = a.conds.find(function (t) {
+            var e = O(t.cond, n.options.guards);
+            return !e || R(n, e, d, s, r);
+          })) || void 0 === c ? void 0 : c.actions)) return [];
+          var h = i(Pt(n, r, d, s, dt(S(v), n.options.actions), u), 2),
+              f = h[0],
+              l = h[1];
+          return d = l, null == p || p.push(d), f;
+
+        case ut:
+          var v;
+          if (!(v = a.get(d, s.data))) return [];
+          var y = i(Pt(n, r, d, s, dt(S(v), n.options.actions), u), 2),
+              g = y[0],
+              m = y[1];
+          return d = m, null == p || p.push(d), g;
+
+        case Q:
+          return function (e, n, r) {
+            var i = N(e.activity) ? e.activity(n, r.data) : e.activity,
+                o = "string" == typeof i ? {
+              id: i
+            } : i;
+            return {
+              type: t.ActionTypes.Stop,
+              activity: o
+            };
+          }(a, d, s);
+
+        case et:
+          d = E(d, s, [a], r), null == p || p.push(d);
+          break;
+
+        default:
+          var x = lt(a, n.options.actions),
+              w = x.exec;
+
+          if (w && p) {
+            var b = p.length - 1;
+            x = _e(_e({}, x), {
+              exec: function exec(t) {
+                for (var e = [], n = 1; n < arguments.length; n++) {
+                  e[n - 1] = arguments[n];
+                }
+
+                w.apply(void 0, o([p[b]], i(e), !1));
+              }
+            });
+          }
+
+          return x;
+      }
+    }).filter(function (t) {
+      return !!t;
+    })), d];
+  }
+
+  var kt = function () {
+    function t(t) {
+      var e,
+          n,
+          r = this;
+      this.actions = [], this.activities = a, this.meta = {}, this.events = [], this.value = t.value, this.context = t.context, this._event = t._event, this._sessionid = t._sessionid, this.event = this._event.data, this.historyValue = t.historyValue, this.history = t.history, this.actions = t.actions || [], this.activities = t.activities || a, this.meta = (void 0 === (n = t.configuration) && (n = []), n.reduce(function (t, e) {
+        return void 0 !== e.meta && (t[e.id] = e.meta), t;
+      }, {})), this.events = t.events || [], this.matches = this.matches.bind(this), this.toStrings = this.toStrings.bind(this), this.configuration = t.configuration, this.transitions = t.transitions, this.children = t.children, this.done = !!t.done, this.tags = null !== (e = Array.isArray(t.tags) ? new Set(t.tags) : t.tags) && void 0 !== e ? e : new Set(), this.machine = t.machine, Object.defineProperty(this, "nextEvents", {
+        get: function get() {
+          return function (t) {
+            return o([], i(new Set(g(o([], i(t.map(function (t) {
+              return t.ownEvents;
+            })), !1)))), !1);
+          }(r.configuration);
+        }
+      });
     }
-  }, {
-    "id": "1638090485031",
-    "index": 2,
-    "audio_url": "http://teach.cdn.ireadabc.com/e31c3b1914837a611d4d3bb1ceb00773.mp3",
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/d2d7de9f8079f36e8354d16e4ca26476.json",
-      "name": "房子_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/204ea18018a352a30fd233a46f9a0a1a.json",
-      "name": "房子_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/cf8da0ab00a7d9f34bdf8f490c29dcbf.png",
-      "name": "房子_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 195
-    },
-    "gIdx": "0",
-    "labelText": "14",
-    "posX": 578,
-    "posY": 160.99791334496155,
-    "rect": {
-      "x": 124.9,
-      "y": 108,
-      "width": 170,
-      "height": 106
-    }
-  }, {
-    "id": "1638090539787",
-    "index": 3,
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/ed2ac4931a9c00ff6c4298381722676e.json",
-      "name": "牛_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/0e153093ee7265b6a843847543d6110b.json",
-      "name": "牛_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/631661e13616eea6cde9f9e6610f5008.png",
-      "name": "牛_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 197.46116504854368
-    },
-    "gIdx": "1",
-    "rect": {
-      "x": 46.9,
-      "y": 95,
-      "width": 200,
-      "height": 200
-    }
-  }, {
-    "id": "1638090562867",
-    "index": 4,
-    "audio_url": "http://teach.cdn.ireadabc.com/bf1924c502ca1a4ac928a31e7c8aa70e.mp3",
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/bd3c2cc93b1593433a58d8482972ff66.json",
-      "name": "苹果_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/1f54df317a8c86271e29d6db3ffb55ce.json",
-      "name": "苹果_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/734ac06a7ef018b457e7ac7692789ffa.png",
-      "name": "苹果_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 197.46116504854368
-    },
-    "gIdx": "0",
-    "labelText": "6",
-    "posX": 429,
-    "posY": 146,
-    "rect": {
-      "x": -0.1,
-      "y": 70,
-      "width": 122,
-      "height": 152
+
+    return t.from = function (e, n) {
+      return e instanceof t ? e.context !== n ? new t({
+        value: e.value,
+        context: n,
+        _event: e._event,
+        _sessionid: null,
+        historyValue: e.historyValue,
+        history: e.history,
+        actions: [],
+        activities: e.activities,
+        meta: {},
+        events: [],
+        configuration: [],
+        transitions: [],
+        children: {}
+      }) : e : new t({
+        value: e,
+        context: n,
+        _event: ht,
+        _sessionid: null,
+        historyValue: void 0,
+        history: void 0,
+        actions: [],
+        activities: void 0,
+        meta: void 0,
+        events: [],
+        configuration: [],
+        transitions: [],
+        children: {}
+      });
+    }, t.create = function (e) {
+      return new t(e);
+    }, t.inert = function (e, n) {
+      if (e instanceof t) {
+        if (!e.actions.length) return e;
+        var r = ht;
+        return new t({
+          value: e.value,
+          context: n,
+          _event: r,
+          _sessionid: null,
+          historyValue: e.historyValue,
+          history: e.history,
+          activities: e.activities,
+          configuration: e.configuration,
+          transitions: [],
+          children: {}
+        });
+      }
+
+      return t.from(e, n);
+    }, t.prototype.toStrings = function (t, e) {
+      var n = this;
+      if (void 0 === t && (t = this.value), void 0 === e && (e = "."), A(t)) return [t];
+      var r = s(t);
+      return r.concat.apply(r, o([], i(r.map(function (r) {
+        return n.toStrings(t[r], e).map(function (t) {
+          return r + e + t;
+        });
+      })), !1));
+    }, t.prototype.toJSON = function () {
+      var t = this,
+          r = (t.configuration, t.transitions, t.tags),
+          i = (t.machine, n(t, ["configuration", "transitions", "tags", "machine"]));
+      return _e(_e({}, i), {
+        tags: Array.from(r)
+      });
+    }, t.prototype.matches = function (t) {
+      return c(t, this.value);
+    }, t.prototype.hasTag = function (t) {
+      return this.tags.has(t);
+    }, t.prototype.can = function (t) {
+      var e;
+      return this.machine, !!(null === (e = this.machine) || void 0 === e ? void 0 : e.transition(this, t).changed);
+    }, t;
+  }(),
+      It = [],
+      jt = function jt(t, e) {
+    It.push(t);
+    var n = e(t);
+    return It.pop(), n;
+  };
+
+  function Ct(t) {
+    return {
+      id: t,
+      send: function send() {},
+      subscribe: function subscribe() {
+        return {
+          unsubscribe: function unsubscribe() {}
+        };
+      },
+      getSnapshot: function getSnapshot() {},
+      toJSON: function toJSON() {
+        return {
+          id: t
+        };
+      }
+    };
+  }
+
+  function Vt(t, e, n) {
+    var r = Ct(e);
+
+    if (r.deferred = !0, k(t)) {
+      var i = r.state = jt(void 0, function () {
+        return (n ? t.withContext(n) : t).initialState;
+      });
+
+      r.getSnapshot = function () {
+        return i;
+      };
     }
-  }, {
-    "id": "1638090594247",
-    "index": 5,
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/1d4b251caf0c0b8245fb17cd8445672c.json",
-      "name": "农夫_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/1fdd04cacb6d543cf05ce64e8124a6ff.json",
-      "name": "农夫_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/8f582cb39eb349da08e06289b0ce6c16.png",
-      "name": "农夫_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 197.46116504854368
-    },
-    "gIdx": "1",
-    "rect": {
-      "x": 46.9,
-      "y": 95,
-      "width": 200,
-      "height": 200
+
+    return r;
+  }
+
+  function Lt(t) {
+    if ("string" == typeof t) {
+      var e = {
+        type: t,
+        toString: function toString() {
+          return t;
+        }
+      };
+      return e;
     }
-  }, {
-    "id": "1638090663056",
-    "index": 6,
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/4503721901880d0b6c3ad6d4261e958b.json",
-      "name": "小女孩_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/fc4fd0b2f672dff7c7b2148830164090.json",
-      "name": "小女孩_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/4be41c15972caf99eef956ba48759c91.png",
-      "name": "小女孩_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 197.46116504854368
-    },
-    "gIdx": "1",
-    "rect": {
-      "x": 46.9,
-      "y": 95,
-      "width": 200,
-      "height": 200
-    }
-  }, {
-    "id": "1638090685571",
-    "index": 7,
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/55951c794b414ab58cca023642819e37.json",
-      "name": "母鸡_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/47b93323b1d1e1e6020704c537f46820.json",
-      "name": "母鸡_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/dd66021ff860b02a559d59817c71e27f.png",
-      "name": "母鸡_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 197.46116504854368
-    },
-    "gIdx": "1",
-    "rect": {
-      "x": 46.9,
-      "y": 95,
-      "width": 200,
-      "height": 200
-    }
-  }, {
-    "id": "1638090695652",
-    "index": 8,
-    "audio_url": "http://teach.cdn.ireadabc.com/323feb19d153069702ffd21097f18f79.mp3",
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/cd7c7a756c0f79d28f419576e3b85b0c.json",
-      "name": "鸭子_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/7613f30893a5f64773a77723c1d67f0d.json",
-      "name": "鸭子_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/59b2293ef4eea9d64ff9821bc5d69a6d.png",
-      "name": "鸭子_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 197.46116504854368
-    },
-    "gIdx": "0",
-    "labelText": "11",
-    "posX": 564.4993151491155,
-    "posY": 247.99735690361797,
-    "rect": {
-      "x": 127.9,
-      "y": 216,
-      "width": 124,
-      "height": 64
-    }
-  }, {
-    "id": "1638090758159",
-    "index": 9,
-    "audio_url": "http://teach.cdn.ireadabc.com/b903b174f09107517b5d6f8934b73447.mp3",
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/b9fa85c227daa6539f12cab5a5058052.json",
-      "name": "鸡蛋_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/99aa8de7b69000ac6c5e0fb6a508b692.json",
-      "name": "鸡蛋_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/09bd0a34a4508613fd7c167724e4a969.png",
-      "name": "鸡蛋_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 197.46116504854368
-    },
-    "gIdx": "0",
-    "labelText": "7",
-    "posX": 471.50036382703234,
-    "posY": 291.99683256465954,
-    "rect": {
-      "x": 67.4,
-      "y": 223,
-      "width": 59,
-      "height": 138
+
+    return t;
+  }
+
+  function Dt(t) {
+    return _e(_e({
+      type: it
+    }, t), {
+      toJSON: function toJSON() {
+        t.onDone, t.onError;
+        var r = n(t, ["onDone", "onError"]);
+        return _e(_e({}, r), {
+          type: it,
+          src: Lt(t.src)
+        });
+      }
+    });
+  }
+
+  var Rt = {},
+      Mt = function Mt(t) {
+    return "#" === t[0];
+  },
+      zt = function () {
+    function a(t, n, c) {
+      var u,
+          h = this;
+      void 0 === c && (c = "context" in t ? t.context : void 0), this.config = t, this._context = c, this.order = -1, this.__xstatenode = !0, this.__cache = {
+        events: void 0,
+        relativeValue: new Map(),
+        initialStateValue: void 0,
+        initialState: void 0,
+        on: void 0,
+        transitions: void 0,
+        candidates: {},
+        delayedTransitions: void 0
+      }, this.idMap = {}, this.tags = [], this.options = Object.assign({
+        actions: {},
+        guards: {},
+        services: {},
+        activities: {},
+        delays: {}
+      }, n), this.parent = this.options._parent, this.key = this.config.key || this.options._key || this.config.id || "(machine)", this.machine = this.parent ? this.parent.machine : this, this.path = this.parent ? this.parent.path.concat(this.key) : [], this.delimiter = this.config.delimiter || (this.parent ? this.parent.delimiter : "."), this.id = this.config.id || o([this.machine.key], i(this.path), !1).join(this.delimiter), this.version = this.parent ? this.parent.version : this.config.version, this.type = this.config.type || (this.config.parallel ? "parallel" : this.config.states && s(this.config.states).length ? "compound" : this.config.history ? "history" : "atomic"), this.schema = this.parent ? this.machine.schema : null !== (u = this.config.schema) && void 0 !== u ? u : {}, this.description = this.config.description, this.initial = this.config.initial, this.states = this.config.states ? d(this.config.states, function (t, n) {
+        var r,
+            i = new a(t, {
+          _parent: h,
+          _key: n
+        });
+        return Object.assign(h.idMap, _e(((r = {})[i.id] = i, r), i.idMap)), i;
+      }) : Rt;
+      var f = 0;
+      !function t(e) {
+        var n, i;
+        e.order = f++;
+
+        try {
+          for (var o = r(U(e)), a = o.next(); !a.done; a = o.next()) {
+            t(a.value);
+          }
+        } catch (t) {
+          n = {
+            error: t
+          };
+        } finally {
+          try {
+            a && !a.done && (i = o["return"]) && i.call(o);
+          } finally {
+            if (n) throw n.error;
+          }
+        }
+      }(this), this.history = !0 === this.config.history ? "shallow" : this.config.history || !1, this._transient = !!this.config.always || !!this.config.on && (Array.isArray(this.config.on) ? this.config.on.some(function (t) {
+        return "" === t.event;
+      }) : "" in this.config.on), this.strict = !!this.config.strict, this.onEntry = S(this.config.entry || this.config.onEntry).map(function (t) {
+        return lt(t);
+      }), this.onExit = S(this.config.exit || this.config.onExit).map(function (t) {
+        return lt(t);
+      }), this.meta = this.config.meta, this.doneData = "final" === this.type ? this.config.data : void 0, this.invoke = S(this.config.invoke).map(function (t, n) {
+        var r, i;
+        if (k(t)) return h.machine.options.services = _e(((r = {})[t.id] = t, r), h.machine.options.services), Dt({
+          src: t.id,
+          id: t.id
+        });
+        if (A(t.src)) return Dt(_e(_e({}, t), {
+          id: t.id || t.src,
+          src: t.src
+        }));
+
+        if (k(t.src) || N(t.src)) {
+          var o = "".concat(h.id, ":invocation[").concat(n, "]");
+          return h.machine.options.services = _e(((i = {})[o] = t.src, i), h.machine.options.services), Dt(_e(_e({
+            id: o
+          }, t), {
+            src: o
+          }));
+        }
+
+        var a = t.src;
+        return Dt(_e(_e({
+          id: a.type
+        }, t), {
+          src: a
+        }));
+      }), this.activities = S(this.config.activities).concat(this.invoke).map(function (t) {
+        return pt(t);
+      }), this.transition = this.transition.bind(this), this.tags = S(this.config.tags);
     }
-  }, {
-    "id": "1638090812155",
-    "index": 10,
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/357fef8204228afb43d0ce73746228e5.json",
-      "name": "é±¼_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/f694e5442095a317fc7d8b1390e630c7.json",
-      "name": "é±¼_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/f566cca10fd83f62a465b144ac73d483.png",
-      "name": "é±¼_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 197.46116504854368
-    },
-    "gIdx": "1",
-    "rect": {
-      "x": 46.9,
-      "y": 95,
-      "width": 200,
-      "height": 200
-    }
-  }, {
-    "id": "1638090824244",
-    "index": 11,
-    "audio_url": "http://teach.cdn.ireadabc.com/2656b72aec7f6def07713fbc99309168.mp3",
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/20cbf3d186a197baaed38204dd017f51.json",
-      "name": "猫_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/d7de5a32de3ee1ad660dc509ba8adf1d.json",
-      "name": "猫_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/af86e967aab8632cd0b26d60a62f0675.png",
-      "name": "猫_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 197.46116504854368
-    },
-    "gIdx": "0",
-    "labelText": "10",
-    "posX": 408.50114498507236,
-    "posY": 288.99689676943,
-    "rect": {
-      "x": 1.4,
-      "y": 222,
-      "width": 65,
-      "height": 134
-    }
-  }, {
-    "id": "1638090897644",
-    "index": 12,
-    "audio_url": "http://teach.cdn.ireadabc.com/9bbf8ba2fa7f96ea5a95c27a384414a2.mp3",
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/d8506ebddb29c8d08b4b93376b45f5c9.json",
-      "name": "鸟_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/9fad47c99025b7b229df52afb797ec5c.json",
-      "name": "鸟_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/e86b136b9706768c5ca0dba3dc0aab21.png",
-      "name": "鸟_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 197.46116504854368
-    },
-    "gIdx": "0",
-    "labelText": "9",
-    "posX": 573,
-    "posY": 74,
-    "rect": {
-      "x": 127.9,
-      "y": 41,
-      "width": 154,
-      "height": 66
-    }
-  }, {
-    "id": "1638090948950",
-    "index": 13,
-    "itemType": "rect",
-    "fontScale": 0.81484375,
-    "imgScale": 1,
-    "imgSizeW": 0,
-    "imgSizeH": 0,
-    "mapScale": 0.81484375,
-    "skeJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/3d1d49e583d97cd5097d08102265b1c6.json",
-      "name": "蚂蚁_ske.json"
-    },
-    "texJsonData": {
-      "url": "http://teach.cdn.ireadabc.com/9a3a5c871b288aebb1e6920f1e9709f8.json",
-      "name": "蚂蚁_tex.json"
-    },
-    "texPngData": {
-      "url": "http://teach.cdn.ireadabc.com/1fad62f313b6ff72a642cb4b15aeaf04.png",
-      "name": "蚂蚁_tex.png"
-    },
-    "dragDot": {
-      "x": 521.5,
-      "y": 197.46116504854368
-    },
-    "gIdx": "1",
-    "rect": {
-      "x": 46.9,
-      "y": 95,
-      "width": 200,
-      "height": 200
-    }
-  }],
-  "guide_audio": "http://staging-teach.cdn.ireadabc.com/d6c1d3b84a4774a0fc183a14abbb6c09.mp3",
-  "wrong_audio1": "http://staging-teach.cdn.ireadabc.com/b77ef2a6cdcb6504520484a9b197b2fd.mp3",
-  "wrong_audio2": "http://staging-teach.cdn.ireadabc.com/8dacb2445816e1f068ea116752c21173.mp3",
-  "begin_audio1": "http://staging-teach.cdn.ireadabc.com/e45ad0823ae2c8e04246d76c7f57030d.mp3",
-  "begin_audio2": "http://staging-teach.cdn.ireadabc.com/05232ad51f8d9e1af6dd1273147bc58f.mp3",
-  "right_audio": "http://staging-teach.cdn.ireadabc.com/330eff8d5e8cc429965da82652207ff2.mp3",
-  "wrong_audio": "http://staging-teach.cdn.ireadabc.com/1664170e569d974279bcec626be176d9.mp3",
-  "begin_sep_time": 15
-};
-exports.defaultData = defaultData;
-
-cc._RF.pop();
-                    }
-                    if (nodeEnv) {
-                        __define(__module.exports, __require, __module);
-                    }
-                    else {
-                        __quick_compile_project__.registerModuleFunc(__filename, function () {
-                            __define(__module.exports, __require, __module);
-                        });
-                    }
-                })();
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9PUDE1L3NjcmlwdC9kZWZhdWx0RGF0YS5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0RGF0YSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLElBQU1BLFdBQVcsR0FBRztBQUN2QjtBQUNBLGlCQUFlLDRFQUZRO0FBR3ZCLG1CQUFpQixvRUFITTtBQUl2QixlQUFhLDRFQUpVO0FBS3ZCLFlBQVU7QUFDTixXQUFPLG9FQUREO0FBRU4sWUFBUTtBQUNKLFdBQUssS0FERDtBQUVKLFdBQUssQ0FGRDtBQUdKLGVBQVMsS0FITDtBQUlKLGdCQUFVO0FBSk47QUFGRixHQUxhO0FBY3ZCLG9CQUFrQixDQUFDO0FBQ2YsVUFBTSxlQURTO0FBRWYsYUFBUyxDQUZNO0FBR2YsZ0JBQVksTUFIRztBQUlmLGlCQUFhLFVBSkU7QUFLZixnQkFBWSxDQUxHO0FBTWYsZ0JBQVksQ0FORztBQU9mLGdCQUFZLENBUEc7QUFRZixnQkFBWSxVQVJHO0FBU2YsbUJBQWU7QUFDWCxhQUFPLHFFQURJO0FBRVgsY0FBUTtBQUZHLEtBVEE7QUFhZixtQkFBZTtBQUNYLGFBQU8scUVBREk7QUFFWCxjQUFRO0FBRkcsS0FiQTtBQWlCZixrQkFBYztBQUNWLGFBQU8sb0VBREc7QUFFVixjQUFRO0FBRkUsS0FqQkM7QUFxQmYsZUFBVztBQUNQLFdBQUssS0FERTtBQUVQLFdBQUs7QUFGRSxLQXJCSTtBQXlCZixZQUFRLEdBekJPO0FBMEJmLFlBQVE7QUFDSixXQUFLLElBREQ7QUFFSixXQUFLLEVBRkQ7QUFHSixlQUFTLEdBSEw7QUFJSixnQkFBVTtBQUpOO0FBMUJPLEdBQUQsRUFnQ2Y7QUFDQyxVQUFNLGVBRFA7QUFFQyxhQUFTLENBRlY7QUFHQyxlQUFXLG9FQUhaO0FBSUMsZ0JBQVksS0FKYjtBQUtDLGlCQUFhLFVBTGQ7QUFNQyxnQkFBWSxtQkFOYjtBQU9DLGdCQUFZLElBUGI7QUFRQyxnQkFBWSxJQVJiO0FBU0MsZ0JBQVksVUFUYjtBQVVDLGVBQVc7QUFD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RkcsS0FUaEI7QUFhQyxtQkFBZTtBQUNYLGFBQU8scUVBREk7QUFFWCxjQUFRO0FBRkcsS0FiaEI7QUFpQkMsa0JBQWM7QUFDVixhQUFPLG9FQURHO0FBRVYsY0FBUTtBQUZFLEtBakJmO0FBcUJDLGVBQVc7QUFDUCxXQUFLLEtBREU7QUFFUCxXQUFLO0FBRkUsS0FyQlo7QUF5QkMsWUFBUSxHQXpCVDtBQTBCQyxZQUFRO0FBQ0osV0FBSyxJQUREO0FBRUosV0FBSyxFQUZEO0FBR0osZUFBUyxHQUhMO0FBSUosZ0JBQVU7QUFKTjtBQTFCVCxHQTdhZSxDQWRLO0FBNGR2QixpQkFBZSw0RUE1ZFE7QUE2ZHZCLGtCQUFnQiw0RUE3ZE87QUE4ZHZCLGtCQUFnQiw0RUE5ZE87QUErZHZCLGtCQUFnQiw0RUEvZE87QUFnZXZCLGtCQUFnQiw0RUFoZU87QUFpZXZCLGlCQUFlLDRFQWplUTtBQWtldkIsaUJBQWUsNEVBbGVRO0FBbWV2QixvQkFBa0I7QUFuZUssQ0FBcEIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBkZWZhdWx0RGF0YSA9IHtcbiAgICAvLyBcImJlZ2luX2F1ZGlvXCI6IFwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9iMWU1Mzc4MDgzYWRhYzk5NTA4Mzk3NzJjN2I2N2YzNC5tcDNcIixcbiAgICBcImJlZ2luX2F1ZGlvXCI6IFwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS84MWU3YTk0ZTE0MjBhNGNiY2FhNTgzZDQxODhhYjE0NS5tcDNcIixcbiAgICBcInBsYXlpbmdfYXVkaW9cIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS81NDkzNDdkMWJlNjIwZDlkOTFiNzQyMGQ0NWIzY2I3YS5tcDNcIixcbiAgICBcImVuZF9hdWRpb1wiOiBcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vODFlN2E5NGUxNDIwYTRjYmNhYTU4M2Q0MTg4YWIxNDUubXAzXCIsXG4gICAgXCJiZ0l0ZW1cIjoge1xuICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2FkY2NjYmQyNmUyY2ZhMjU5OTIwZTI0ZGYwMWQ0YjkyLnBuZ1wiLFxuICAgICAgICBcInJlY3RcIjoge1xuICAgICAgICAgICAgXCJ4XCI6IDM3NC42LFxuICAgICAgICAgICAgXCJ5XCI6IDAsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDI5My44LFxuICAgICAgICAgICAgXCJoZWlnaHRcIjogMzkwXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFwiaG90Wm9uZUl0ZW1BcnJcIjogW3tcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA0NTA0MDJcIixcbiAgICAgICAgXCJpbmRleFwiOiAwLFxuICAgICAgICBcIml0ZW1UeXBlXCI6IFwicmVjdFwiLFxuICAgICAgICBcImZvbnRTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcImltZ1NjYWxlXCI6IDEsXG4gICAgICAgIFwiaW1nU2l6ZVdcIjogMCxcbiAgICAgICAgXCJpbWdTaXplSFwiOiAwLFxuICAgICAgICBcIm1hcFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwic2tlSnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9jNWM2Y2Q4OTA2NjBhM2MyMmZkZTM5M2EzNzcwNDU4Zi5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLlsI/msb3ovaZfc2tlLmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleEpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vY2VhMTA3NTE3NDA2NDYzNDc0ZDkwN2UzMDYxNjMyMjYuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi5bCP5rG96L2mX3RleC5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhQbmdEYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vODRiY2U2NGNkNDI1OWU2MDRhNDU4ZDA4ZGRkNzViZWMucG5nXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLlsI/msb3ovaZfdGV4LnBuZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZHJhZ0RvdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNTIxLjUsXG4gICAgICAgICAgICBcInlcIjogMTk1XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ0lkeFwiOiBcIjFcIixcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA0Ni45LFxuICAgICAgICAgICAgXCJ5XCI6IDk1LFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAyMDAsXG4gICAgICAgICAgICBcImhlaWdodFwiOiAyMDBcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA0NjUxMzNcIixcbiAgICAgICAgXCJpbmRleFwiOiAxLFxuICAgICAgICBcInBpY191cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS83MGQwMmVlMzc4OGUzNzNmNzA3YTQ1NTMwY2QyZjljMC5wbmdcIixcbiAgICAgICAgXCJpdGVtVHlwZVwiOiBcInBpY1wiLFxuICAgICAgICBcImZvbnRTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcImltZ1NjYWxlXCI6IDAuMjM1NzkyMDE5MzQ3MDM3NDcsXG4gICAgICAgIFwiaW1nU2l6ZVdcIjogMTI0NixcbiAgICAgICAgXCJpbWdTaXplSFwiOiAxNjU0LFxuICAgICAgICBcIm1hcFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwiZHJhZ0RvdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNTIxLjUsXG4gICAgICAgICAgICBcInlcIjogMTk1XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ0lkeFwiOiBcIjJcIixcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiAwLFxuICAgICAgICAgICAgXCJ5XCI6IDEsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDI5My44LFxuICAgICAgICAgICAgXCJoZWlnaHRcIjogMzkwXG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIFwiaWRcIjogXCIxNjM4MDkwNDg1MDMxXCIsXG4gICAgICAgIFwiaW5kZXhcIjogMixcbiAgICAgICAgXCJhdWRpb191cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9lMzFjM2IxOTE0ODM3YTYxMWQ0ZDNiYjFjZWIwMDc3My5tcDNcIixcbiAgICAgICAgXCJpdGVtVHlwZVwiOiBcInJlY3RcIixcbiAgICAgICAgXCJmb250U2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJpbWdTY2FsZVwiOiAxLFxuICAgICAgICBcImltZ1NpemVXXCI6IDAsXG4gICAgICAgIFwiaW1nU2l6ZUhcIjogMCxcbiAgICAgICAgXCJtYXBTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcInNrZUpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZDJkN2RlOWY4MDc5ZjM2ZTgzNTRkMTZlNGNhMjY0NzYuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi5oi/5a2QX3NrZS5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzIwNGVhMTgwMThhMzUyYTMwZmQyMzNhNDZmOWEwYTFhLmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIuaIv+WtkF90ZXguanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4UG5nRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2NmOGRhMGFiMDBhN2Q5ZjM0YmRmOGY0OTBjMjlkY2JmLnBuZ1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi5oi/5a2QX3RleC5wbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImRyYWdEb3RcIjoge1xuICAgICAgICAgICAgXCJ4XCI6IDUyMS41LFxuICAgICAgICAgICAgXCJ5XCI6IDE5NVxuICAgICAgICB9LFxuICAgICAgICBcImdJZHhcIjogXCIwXCIsXG4gICAgICAgIFwibGFiZWxUZXh0XCI6IFwiMTRcIixcbiAgICAgICAgXCJwb3NYXCI6IDU3OCxcbiAgICAgICAgXCJwb3NZXCI6IDE2MC45OTc5MTMzNDQ5NjE1NSxcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiAxMjQuOSxcbiAgICAgICAgICAgIFwieVwiOiAxMDgsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDE3MCxcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDEwNlxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBcImlkXCI6IFwiMTYzODA5MDUzOTc4N1wiLFxuICAgICAgICBcImluZGV4XCI6IDMsXG4gICAgICAgIFwiaXRlbVR5cGVcIjogXCJyZWN0XCIsXG4gICAgICAgIFwiZm9udFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwiaW1nU2NhbGVcIjogMSxcbiAgICAgICAgXCJpbWdTaXplV1wiOiAwLFxuICAgICAgICBcImltZ1NpemVIXCI6IDAsXG4gICAgICAgIFwibWFwU2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJza2VKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2VkMmFjNDkzMWE5YzAwZmY2YzQyOTgzODE3MjI2NzZlLmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIueJm19za2UuanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4SnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8wZTE1MzA5M2VlNzI2NWI2YTg0Mzg0NzU0M2Q2MTEwYi5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLniZtfdGV4Lmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleFBuZ0RhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS82MzE2NjFlMTM2MTZlZWE2Y2RlOWY5ZTY2MTBmNTAwOC5wbmdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIueJm190ZXgucG5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkcmFnRG90XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA1MjEuNSxcbiAgICAgICAgICAgIFwieVwiOiAxOTcuNDYxMTY1MDQ4NTQzNjhcbiAgICAgICAgfSxcbiAgICAgICAgXCJnSWR4XCI6IFwiMVwiLFxuICAgICAgICBcInJlY3RcIjoge1xuICAgICAgICAgICAgXCJ4XCI6IDQ2LjksXG4gICAgICAgICAgICBcInlcIjogOTUsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDIwMCxcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDIwMFxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBcImlkXCI6IFwiMTYzODA5MDU2Mjg2N1wiLFxuICAgICAgICBcImluZGV4XCI6IDQsXG4gICAgICAgIFwiYXVkaW9fdXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vYmYxOTI0YzUwMmNhMWE0YWM5MjhhMzFlN2M4YWE3MGUubXAzXCIsXG4gICAgICAgIFwiaXRlbVR5cGVcIjogXCJyZWN0XCIsXG4gICAgICAgIFwiZm9udFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwiaW1nU2NhbGVcIjogMSxcbiAgICAgICAgXCJpbWdTaXplV1wiOiAwLFxuICAgICAgICBcImltZ1NpemVIXCI6IDAsXG4gICAgICAgIFwibWFwU2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJza2VKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2JkM2MyY2M5M2IxNTkzNDMzYTU4ZDg0ODI5NzJmZjY2Lmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIuiLueaenF9za2UuanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4SnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8xZjU0ZGYzMTdhOGM4NjI3MWUyOWQ2ZGIzZmZiNTVjZS5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLoi7nmnpxfdGV4Lmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleFBuZ0RhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS83MzRhYzA2YTdlZjAxOGI0NTdlN2FjNzY5Mjc4OWZmYS5wbmdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIuiLueaenF90ZXgucG5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkcmFnRG90XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA1MjEuNSxcbiAgICAgICAgICAgIFwieVwiOiAxOTcuNDYxMTY1MDQ4NTQzNjhcbiAgICAgICAgfSxcbiAgICAgICAgXCJnSWR4XCI6IFwiMFwiLFxuICAgICAgICBcImxhYmVsVGV4dFwiOiBcIjZcIixcbiAgICAgICAgXCJwb3NYXCI6IDQyOSxcbiAgICAgICAgXCJwb3NZXCI6IDE0NixcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiAtMC4xLFxuICAgICAgICAgICAgXCJ5XCI6IDcwLFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMjIsXG4gICAgICAgICAgICBcImhlaWdodFwiOiAxNTJcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA1OTQyNDdcIixcbiAgICAgICAgXCJpbmRleFwiOiA1LFxuICAgICAgICBcIml0ZW1UeXBlXCI6IFwicmVjdFwiLFxuICAgICAgICBcImZvbnRTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcImltZ1NjYWxlXCI6IDEsXG4gICAgICAgIFwiaW1nU2l6ZVdcIjogMCxcbiAgICAgICAgXCJpbWdTaXplSFwiOiAwLFxuICAgICAgICBcIm1hcFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwic2tlSnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8xZDRiMjUxY2FmMGMwYjgyNDVmYjE3Y2Q4NDQ1NjcyYy5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLlhpzlpKtfc2tlLmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleEpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vMWZkZDA0Y2FjYjZkNTQzY2YwNWNlNjRlODEyNGE2ZmYuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi5Yac5aSrX3RleC5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhQbmdEYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vOGY1ODJjYjM5ZWIzNDlkYTA4ZTA2Mjg5YjBjZTZjMTYucG5nXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLlhpzlpKtfdGV4LnBuZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZHJhZ0RvdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNTIxLjUsXG4gICAgICAgICAgICBcInlcIjogMTk3LjQ2MTE2NTA0ODU0MzY4XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ0lkeFwiOiBcIjFcIixcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA0Ni45LFxuICAgICAgICAgICAgXCJ5XCI6IDk1LFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAyMDAsXG4gICAgICAgICAgICBcImhlaWdodFwiOiAyMDBcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA2NjMwNTZcIixcbiAgICAgICAgXCJpbmRleFwiOiA2LFxuICAgICAgICBcIml0ZW1UeXBlXCI6IFwicmVjdFwiLFxuICAgICAgICBcImZvbnRTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcImltZ1NjYWxlXCI6IDEsXG4gICAgICAgIFwiaW1nU2l6ZVdcIjogMCxcbiAgICAgICAgXCJpbWdTaXplSFwiOiAwLFxuICAgICAgICBcIm1hcFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwic2tlSnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS80NTAzNzIxOTAxODgwZDBiNmMzYWQ2ZDQyNjFlOTU4Yi5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLlsI/lpbPlralfc2tlLmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleEpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZmM0ZmQwYjJmNjcyZGZmN2M3YjIxNDg4MzAxNjQwOTAuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi5bCP5aWz5a2pX3RleC5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhQbmdEYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNGJlNDFjMTU5NzJjYWY5OWVlZjk1NmJhNDg3NTljOTEucG5nXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLlsI/lpbPlralfdGV4LnBuZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZHJhZ0RvdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNTIxLjUsXG4gICAgICAgICAgICBcInlcIjogMTk3LjQ2MTE2NTA0ODU0MzY4XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ0lkeFwiOiBcIjFcIixcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA0Ni45LFxuICAgICAgICAgICAgXCJ5XCI6IDk1LFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAyMDAsXG4gICAgICAgICAgICBcImhlaWdodFwiOiAyMDBcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA2ODU1NzFcIixcbiAgICAgICAgXCJpbmRleFwiOiA3LFxuICAgICAgICBcIml0ZW1UeXBlXCI6IFwicmVjdFwiLFxuICAgICAgICBcImZvbnRTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcImltZ1NjYWxlXCI6IDEsXG4gICAgICAgIFwiaW1nU2l6ZVdcIjogMCxcbiAgICAgICAgXCJpbWdTaXplSFwiOiAwLFxuICAgICAgICBcIm1hcFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwic2tlSnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS81NTk1MWM3OTRiNDE0YWI1OGNjYTAyMzY0MjgxOWUzNy5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLmr43puKFfc2tlLmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleEpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNDdiOTMzMjNiMWQxZTFlNjAyMDcwNGM1MzdmNDY4MjAuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi5q+N6bihX3RleC5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhQbmdEYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZGQ2NjAyMWZmODYwYjAyYTU1OWQ1OTgxN2M3MWUyN2YucG5nXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLmr43puKFfdGV4LnBuZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZHJhZ0RvdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNTIxLjUsXG4gICAgICAgICAgICBcInlcIjogMTk3LjQ2MTE2NTA0ODU0MzY4XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ0lkeFwiOiBcIjFcIixcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA0Ni45LFxuICAgICAgICAgICAgXCJ5XCI6IDk1LFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAyMDAsXG4gICAgICAgICAgICBcImhlaWdodFwiOiAyMDBcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA2OTU2NTJcIixcbiAgICAgICAgXCJpbmRleFwiOiA4LFxuICAgICAgICBcImF1ZGlvX3VybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzMyM2ZlYjE5ZDE1MzA2OTcwMmZmZDIxMDk3ZjE4Zjc5Lm1wM1wiLFxuICAgICAgICBcIml0ZW1UeXBlXCI6IFwicmVjdFwiLFxuICAgICAgICBcImZvbnRTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcImltZ1NjYWxlXCI6IDEsXG4gICAgICAgIFwiaW1nU2l6ZVdcIjogMCxcbiAgICAgICAgXCJpbWdTaXplSFwiOiAwLFxuICAgICAgICBcIm1hcFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwic2tlSnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9jZDdjN2E3NTZjMGY3OWQyOGY0MTk1NzZlM2I4NWIwYy5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLpuK3lrZBfc2tlLmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleEpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNzYxM2YzMDg5M2E1ZjY0NzczYTc3NzIzYzFkNjdmMGQuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi6bit5a2QX3RleC5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhQbmdEYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNTliMjI5M2VmNGVlYTlkNjRmZjk4MjFiYzVkNjlhNmQucG5nXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLpuK3lrZBfdGV4LnBuZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZHJhZ0RvdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNTIxLjUsXG4gICAgICAgICAgICBcInlcIjogMTk3LjQ2MTE2NTA0ODU0MzY4XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ0lkeFwiOiBcIjBcIixcbiAgICAgICAgXCJsYWJlbFRleHRcIjogXCIxMVwiLFxuICAgICAgICBcInBvc1hcIjogNTY0LjQ5OTMxNTE0OTExNTUsXG4gICAgICAgIFwicG9zWVwiOiAyNDcuOTk3MzU2OTAzNjE3OTcsXG4gICAgICAgIFwicmVjdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogMTI3LjksXG4gICAgICAgICAgICBcInlcIjogMjE2LFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMjQsXG4gICAgICAgICAgICBcImhlaWdodFwiOiA2NFxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBcImlkXCI6IFwiMTYzODA5MDc1ODE1OVwiLFxuICAgICAgICBcImluZGV4XCI6IDksXG4gICAgICAgIFwiYXVkaW9fdXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vYjkwM2IxNzRmMDkxMDc1MTdiNWQ2Zjg5MzRiNzM0NDcubXAzXCIsXG4gICAgICAgIFwiaXRlbVR5cGVcIjogXCJyZWN0XCIsXG4gICAgICAgIFwiZm9udFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwiaW1nU2NhbGVcIjogMSxcbiAgICAgICAgXCJpbWdTaXplV1wiOiAwLFxuICAgICAgICBcImltZ1NpemVIXCI6IDAsXG4gICAgICAgIFwibWFwU2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJza2VKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2I5ZmE4NWMyMjdkYWE2NTM5ZjEyY2FiNWE1MDU4MDUyLmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIum4oeibi19za2UuanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4SnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS85OWFhOGRlN2I2OTAwMGFjNmM1ZTBmYjZhNTA4YjY5Mi5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLpuKHom4tfdGV4Lmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleFBuZ0RhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8wOWJkMGEzNGE0NTA4NjEzZmQ3YzE2NzcyNGU0YTk2OS5wbmdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIum4oeibi190ZXgucG5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkcmFnRG90XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA1MjEuNSxcbiAgICAgICAgICAgIFwieVwiOiAxOTcuNDYxMTY1MDQ4NTQzNjhcbiAgICAgICAgfSxcbiAgICAgICAgXCJnSWR4XCI6IFwiMFwiLFxuICAgICAgICBcImxhYmVsVGV4dFwiOiBcIjdcIixcbiAgICAgICAgXCJwb3NYXCI6IDQ3MS41MDAzNjM4MjcwMzIzNCxcbiAgICAgICAgXCJwb3NZXCI6IDI5MS45OTY4MzI1NjQ2NTk1NCxcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA2Ny40LFxuICAgICAgICAgICAgXCJ5XCI6IDIyMyxcbiAgICAgICAgICAgIFwid2lkdGhcIjogNTksXG4gICAgICAgICAgICBcImhlaWdodFwiOiAxMzhcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA4MTIxNTVcIixcbiAgICAgICAgXCJpbmRleFwiOiAxMCxcbiAgICAgICAgXCJpdGVtVHlwZVwiOiBcInJlY3RcIixcbiAgICAgICAgXCJmb250U2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJpbWdTY2FsZVwiOiAxLFxuICAgICAgICBcImltZ1NpemVXXCI6IDAsXG4gICAgICAgIFwiaW1nU2l6ZUhcIjogMCxcbiAgICAgICAgXCJtYXBTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcInNrZUpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vMzU3ZmVmODIwNDIyOGFmYjQzZDBjZTczNzQ2MjI4ZTUuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi6bG8X3NrZS5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2Y2OTRlNTQ0MjA5NWEzMTdmYzdkOGIxMzkwZTYzMGM3Lmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIumxvF90ZXguanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4UG5nRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2Y1NjZjY2ExMGZkODNmNjJhNDY1YjE0NGFjNzNkNDgzLnBuZ1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi6bG8X3RleC5wbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImRyYWdEb3RcIjoge1xuICAgICAgICAgICAgXCJ4XCI6IDUyMS41LFxuICAgICAgICAgICAgXCJ5XCI6IDE5Ny40NjExNjUwNDg1NDM2OFxuICAgICAgICB9LFxuICAgICAgICBcImdJZHhcIjogXCIxXCIsXG4gICAgICAgIFwicmVjdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNDYuOSxcbiAgICAgICAgICAgIFwieVwiOiA5NSxcbiAgICAgICAgICAgIFwid2lkdGhcIjogMjAwLFxuICAgICAgICAgICAgXCJoZWlnaHRcIjogMjAwXG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIFwiaWRcIjogXCIxNjM4MDkwODI0MjQ0XCIsXG4gICAgICAgIFwiaW5kZXhcIjogMTEsXG4gICAgICAgIFwiYXVkaW9fdXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vMjY1NmI3MmFlYzdmNmRlZjA3NzEzZmJjOTkzMDkxNjgubXAzXCIsXG4gICAgICAgIFwiaXRlbVR5cGVcIjogXCJyZWN0XCIsXG4gICAgICAgIFwiZm9udFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwiaW1nU2NhbGVcIjogMSxcbiAgICAgICAgXCJpbWdTaXplV1wiOiAwLFxuICAgICAgICBcImltZ1NpemVIXCI6IDAsXG4gICAgICAgIFwibWFwU2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJza2VKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzIwY2JmM2QxODZhMTk3YmFhZWQzODIwNGRkMDE3ZjUxLmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIueMq19za2UuanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4SnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9kN2RlNWEzMmRlM2VlMWFkNjYwZGM1MDliYThhZGYxZC5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLnjKtfdGV4Lmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleFBuZ0RhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9hZjg2ZTk2N2FhYjg2MzJjZDBiMjZkNjBhNjJmMDY3NS5wbmdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIueMq190ZXgucG5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkcmFnRG90XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA1MjEuNSxcbiAgICAgICAgICAgIFwieVwiOiAxOTcuNDYxMTY1MDQ4NTQzNjhcbiAgICAgICAgfSxcbiAgICAgICAgXCJnSWR4XCI6IFwiMFwiLFxuICAgICAgICBcImxhYmVsVGV4dFwiOiBcIjEwXCIsXG4gICAgICAgIFwicG9zWFwiOiA0MDguNTAxMTQ0OTg1MDcyMzYsXG4gICAgICAgIFwicG9zWVwiOiAyODguOTk2ODk2NzY5NDMsXG4gICAgICAgIFwicmVjdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogMS40LFxuICAgICAgICAgICAgXCJ5XCI6IDIyMixcbiAgICAgICAgICAgIFwid2lkdGhcIjogNjUsXG4gICAgICAgICAgICBcImhlaWdodFwiOiAxMzRcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA4OTc2NDRcIixcbiAgICAgICAgXCJpbmRleFwiOiAxMixcbiAgICAgICAgXCJhdWRpb191cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS85YmJmOGJhMmZhN2Y5NmVhNWE5NWMyN2EzODQ0MTRhMi5tcDNcIixcbiAgICAgICAgXCJpdGVtVHlwZVwiOiBcInJlY3RcIixcbiAgICAgICAgXCJmb250U2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJpbWdTY2FsZVwiOiAxLFxuICAgICAgICBcImltZ1NpemVXXCI6IDAsXG4gICAgICAgIFwiaW1nU2l6ZUhcIjogMCxcbiAgICAgICAgXCJtYXBTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcInNrZUpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZDg1MDZlYmRkYjI5YzhkMDhiNGI5MzM3NmI0NWY1YzkuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi6bifX3NrZS5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzlmYWQ0N2M5OTAyNWI3YjIyOWRmNTJhZmI3OTdlYzVjLmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIum4n190ZXguanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4UG5nRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2U4NmIxMzZiOTcwNjc2OGM1Y2EwZGJhM2RjMGFhYjIxLnBuZ1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi6bifX3RleC5wbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImRyYWdEb3RcIjoge1xuICAgICAgICAgICAgXCJ4XCI6IDUyMS41LFxuICAgICAgICAgICAgXCJ5XCI6IDE5Ny40NjExNjUwNDg1NDM2OFxuICAgICAgICB9LFxuICAgICAgICBcImdJZHhcIjogXCIwXCIsXG4gICAgICAgIFwibGFiZWxUZXh0XCI6IFwiOVwiLFxuICAgICAgICBcInBvc1hcIjogNTczLFxuICAgICAgICBcInBvc1lcIjogNzQsXG4gICAgICAgIFwicmVjdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogMTI3LjksXG4gICAgICAgICAgICBcInlcIjogNDEsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDE1NCxcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDY2XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIFwiaWRcIjogXCIxNjM4MDkwOTQ4OTUwXCIsXG4gICAgICAgIFwiaW5kZXhcIjogMTMsXG4gICAgICAgIFwiaXRlbVR5cGVcIjogXCJyZWN0XCIsXG4gICAgICAgIFwiZm9udFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwiaW1nU2NhbGVcIjogMSxcbiAgICAgICAgXCJpbWdTaXplV1wiOiAwLFxuICAgICAgICBcImltZ1NpemVIXCI6IDAsXG4gICAgICAgIFwibWFwU2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJza2VKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzNkMWQ0OWU1ODNkOTdjZDUwOTdkMDgxMDIyNjViMWM2Lmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIuiaguiagV9za2UuanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4SnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS85YTNhNWM4NzFiMjg4YWViYjFlNjkyMGYxZTk3MDlmOC5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLomoLomoFfdGV4Lmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleFBuZ0RhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8xZmFkNjJmMzEzYjZmZjcyYTY0MmNiNGIxNWFlYWYwNC5wbmdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIuiaguiagV90ZXgucG5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkcmFnRG90XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA1MjEuNSxcbiAgICAgICAgICAgIFwieVwiOiAxOTcuNDYxMTY1MDQ4NTQzNjhcbiAgICAgICAgfSxcbiAgICAgICAgXCJnSWR4XCI6IFwiMVwiLFxuICAgICAgICBcInJlY3RcIjoge1xuICAgICAgICAgICAgXCJ4XCI6IDQ2LjksXG4gICAgICAgICAgICBcInlcIjogOTUsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDIwMCxcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDIwMFxuICAgICAgICB9XG4gICAgfV0sXG4gICAgXCJndWlkZV9hdWRpb1wiOiBcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vZDZjMWQzYjg0YTQ3NzRhMGZjMTgzYTE0YWJiYjZjMDkubXAzXCIsXG4gICAgXCJ3cm9uZ19hdWRpbzFcIjogXCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2I3N2VmMmE2Y2RjYjY1MDQ1MjA0ODRhOWIxOTdiMmZkLm1wM1wiLFxuICAgIFwid3JvbmdfYXVkaW8yXCI6IFwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS84ZGFjYjI0NDU4MTZlMWYwNjhlYTExNjc1MmMyMTE3My5tcDNcIixcbiAgICBcImJlZ2luX2F1ZGlvMVwiOiBcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vZTQ1YWQwODIzYWUyYzhlMDQyNDZkNzZjN2Y1NzAzMGQubXAzXCIsXG4gICAgXCJiZWdpbl9hdWRpbzJcIjogXCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzA1MjMyYWQ1MWY4ZDllMWFmNmRkMTI3MzE0N2JjNThmLm1wM1wiLFxuICAgIFwicmlnaHRfYXVkaW9cIjogXCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzMzMGVmZjhkNWU4Y2M0Mjk5NjVkYTgyNjUyMjA3ZmYyLm1wM1wiLFxuICAgIFwid3JvbmdfYXVkaW9cIjogXCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzE2NjQxNzBlNTY5ZDk3NDI3OWJjZWM2MjZiZTE3NmQ5Lm1wM1wiLFxuICAgIFwiYmVnaW5fc2VwX3RpbWVcIjogMTVcbn0iXX0=
-//------QC-SOURCE-SPLIT------
-
-                (function() {
-                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
-                    var __module = nodeEnv ? module : {exports:{}};
-                    var __filename = 'preview-scripts/assets/OP15/scene/OP15.js';
-                    var __require = nodeEnv ? function (request) {
-                        return cc.require(request);
-                    } : function (request) {
-                        return __quick_compile_project__.require(request, __filename);
-                    };
-                    function __define (exports, require, module) {
-                        if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
-cc._RF.push(module, 'ddbf4iIJnhHIImfp+SKRF1C', 'OP15');
-// OP15/scene/OP15.js
 
-"use strict";
-
-var _util = require("../script/util");
-
-var _defaultData = require("../script/defaultData");
-
-var _xstate = require("../script/xstate");
-
-function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } it = o[Symbol.iterator](); return it.next.bind(it); }
-
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
-
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+    return a.prototype._init = function () {
+      this.__cache.transitions || B(this).forEach(function (t) {
+        return t.on;
+      });
+    }, a.prototype.withConfig = function (t, n) {
+      var r = this.options,
+          i = r.actions,
+          o = r.activities,
+          s = r.guards,
+          c = r.services,
+          u = r.delays;
+      return new a(this.config, {
+        actions: _e(_e({}, i), t.actions),
+        activities: _e(_e({}, o), t.activities),
+        guards: _e(_e({}, s), t.guards),
+        services: _e(_e({}, c), t.services),
+        delays: _e(_e({}, u), t.delays)
+      }, null != n ? n : this.context);
+    }, a.prototype.withContext = function (t) {
+      return new a(this.config, this.options, t);
+    }, Object.defineProperty(a.prototype, "context", {
+      get: function get() {
+        return N(this._context) ? this._context() : this._context;
+      },
+      enumerable: !1,
+      configurable: !0
+    }), Object.defineProperty(a.prototype, "definition", {
+      get: function get() {
+        return {
+          id: this.id,
+          key: this.key,
+          version: this.version,
+          context: this.context,
+          type: this.type,
+          initial: this.initial,
+          history: this.history,
+          states: d(this.states, function (t) {
+            return t.definition;
+          }),
+          on: this.on,
+          transitions: this.transitions,
+          entry: this.onEntry,
+          exit: this.onExit,
+          activities: this.activities || [],
+          meta: this.meta,
+          order: this.order || -1,
+          data: this.doneData,
+          invoke: this.invoke,
+          description: this.description,
+          tags: this.tags
+        };
+      },
+      enumerable: !1,
+      configurable: !0
+    }), a.prototype.toJSON = function () {
+      return this.definition;
+    }, Object.defineProperty(a.prototype, "on", {
+      get: function get() {
+        if (this.__cache.on) return this.__cache.on;
+        var t = this.transitions;
+        return this.__cache.on = t.reduce(function (t, e) {
+          return t[e.eventType] = t[e.eventType] || [], t[e.eventType].push(e), t;
+        }, {});
+      },
+      enumerable: !1,
+      configurable: !0
+    }), Object.defineProperty(a.prototype, "after", {
+      get: function get() {
+        return this.__cache.delayedTransitions || (this.__cache.delayedTransitions = this.getDelayedTransitions(), this.__cache.delayedTransitions);
+      },
+      enumerable: !1,
+      configurable: !0
+    }), Object.defineProperty(a.prototype, "transitions", {
+      get: function get() {
+        return this.__cache.transitions || (this.__cache.transitions = this.formatTransitions(), this.__cache.transitions);
+      },
+      enumerable: !1,
+      configurable: !0
+    }), a.prototype.getCandidates = function (t) {
+      if (this.__cache.candidates[t]) return this.__cache.candidates[t];
+      var e = "" === t,
+          n = this.transitions.filter(function (n) {
+        var r = n.eventType === t;
+        return e ? r : r || "*" === n.eventType;
+      });
+      return this.__cache.candidates[t] = n, n;
+    }, a.prototype.getDelayedTransitions = function () {
+      var t = this,
+          n = this.config.after;
+      if (!n) return [];
 
-function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+      var r = function r(e, n) {
+        var r = Et(N(e) ? "".concat(t.id, ":delay[").concat(n, "]") : e, t.id);
+        return t.onEntry.push(yt(r, {
+          delay: e
+        })), t.onExit.push(xt(r)), r;
+      };
 
-var pure = _xstate.actions.pure,
-    send = _xstate.actions.send,
-    raise = _xstate.actions.raise,
-    sendParent = _xstate.actions.sendParent;
-cc.Class({
-  "extends": cc.Component,
-  properties: {
-    /*ant: {
-    	default: null,
-    	type: cc.Node,
-    },
-    apple: {
-    	default: null,
-    	type: cc.Node,
-    },
-    bird: {
-    	default: null,
-    	type: cc.Node,
-    },
-    car: {
-    	default: null,
-    	type: cc.Node,
-    },
-    cat: {
-    	default: null,
-    	type: cc.Node,
-    },
-    cow: {
-    	default: null,
-    	type: cc.Node,
-    },
-    duck: {
-    	default: null,
-    	type: cc.Node,
-    },
-    egg: {
-    	default: null,
-    	type: cc.Node,
-    },
-    farmer: {
-    	default: null,
-    	type: cc.Node,
-    },
-    fish: {
-    	default: null,
-    	type: cc.Node,
-    },
-    girl: {
-    	default: null,
-    	type: cc.Node,
-    },
-    hen: {
-    	default: null,
-    	type: cc.Node,
-    },
-    house: {
-    	default: null,
-    	type: cc.Node,
-    },*/
-    rightAudio: {
-      "default": null,
-      type: cc.AudioClip
-    },
-    wrongAudio: {
-      "default": null,
-      type: cc.AudioClip
-    },
-    logoCat: {
-      "default": null,
-      type: cc.Node
-    }
-  },
-  playAni: function playAni(idx, name, options) {
-    var times = options && options.times || 1;
-    var cb = options && options.callback || null; // const cat = cc.find(`Canvas/frame-border/ground/${node}`);
-
-    var node = this._figurePointRectArray[idx].node;
-    var dragonDisplay = node.getComponent(dragonBones.ArmatureDisplay);
-    var state = dragonDisplay.playAnimation(name, times); // dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {
-    // 	//TODO 这里写触发事件
-    // 	//event.name为事件名称
-    // 	console.log(event.name)
-    // }, this);
-    // animationDisplay.addEventListener(dragonBones.EventObject.COMPLETE, completeCallback);
-
-    return state;
-  },
-  // 生命周期 onLoad
-  onLoad: function onLoad() {
-    this._timeoutIds = [];
-    this._intervalIds = [];
-    this.initSceneData();
-    this.initSize();
-    window.ccc = this;
-  },
-  _imageResList: null,
-  _audioResList: null,
-  _animaResList: null,
-  _lastFingerPosition: null,
-  _hintsNodeList: null,
-  _figurePointRectArray: null,
-  _allAnimationNodes: null,
-  initSceneData: function initSceneData() {
-    this._imageResList = [];
-    this._audioResList = [];
-    this._animaResList = [];
-    this._allAnimationNodes = [];
-    this._hintsNodeList = [];
-    this._lastFingerPosition = {
-      pos: null,
-      dirty: false
-    };
-    this._figurePointRectArray = [];
-  },
-  _designSize: null,
-  // 设计分辨率
-  _frameSize: null,
-  // 屏幕分辨率
-  _mapScaleMin: null,
-  // 场景中常用缩放(取大值)
-  _mapScaleMax: null,
-  // 场景中常用缩放(取小值)
-  _cocosScale: null,
-  // cocos 自缩放 (较少用到)
-  initSize: function initSize() {
-    // 注意cc.winSize只有在适配后(修改fitHeight/fitWidth后)才能获取到正确的值,因此使用cc.getFrameSize()来获取初始的屏幕大小
-    var screen_size = cc.view.getFrameSize().width / cc.view.getFrameSize().height;
-    var design_size = cc.Canvas.instance.designResolution.width / cc.Canvas.instance.designResolution.height;
-    var f = screen_size >= design_size;
-    cc.Canvas.instance.fitHeight = f;
-    cc.Canvas.instance.fitWidth = !f;
-    var frameSize = cc.view.getFrameSize();
-    this._frameSize = frameSize;
-    this._designSize = cc.view.getDesignResolutionSize();
-    var sx = cc.winSize.width / frameSize.width;
-    var sy = cc.winSize.height / frameSize.height;
-    this._cocosScale = Math.min(sx, sy);
-    sx = frameSize.width / this._designSize.width;
-    sy = frameSize.height / this._designSize.height;
-    this._mapScaleMin = Math.min(sx, sy) * this._cocosScale;
-    this._mapScaleMax = Math.max(sx, sy) * this._cocosScale;
-  },
-  createStateMachine: function createStateMachine() {
-    var _this = this;
+      return (T(n) ? n.map(function (t, n) {
+        var i = r(t.delay, n);
+        return _e(_e({}, t), {
+          event: i
+        });
+      }) : g(s(n).map(function (t, i) {
+        var o = n[t],
+            a = A(o) ? {
+          target: o
+        } : o,
+            s = isNaN(+t) ? t : +t,
+            c = r(s, i);
+        return S(a).map(function (t) {
+          return _e(_e({}, t), {
+            event: c,
+            delay: s
+          });
+        });
+      }))).map(function (n) {
+        var r = n.delay;
+        return _e(_e({}, t.formatTransition(n)), {
+          delay: r
+        });
+      });
+    }, a.prototype.getStateNodes = function (t) {
+      var e,
+          n = this;
+      if (!t) return [];
+      var r = t instanceof kt ? t.value : f(t, this.delimiter);
 
-    var check = [{
-      target: '#game.end',
-      cond: function cond(ctx, evt) {
-        console.log('[answer NEXT] check if end', ctx.questionIndex >= ctx.questionsCount - 1);
-        return ctx.questionIndex >= ctx.questionsCount - 1;
+      if (A(r)) {
+        var i = this.getStateNode(r).initial;
+        return void 0 !== i ? this.getStateNodes(((e = {})[r] = i, e)) : [this, this.states[r]];
       }
-    }, {
-      target: 'hint'
-    } // reenter 'hint' state
-    ];
-    var QuestionState = {
-      id: 'question',
-      initial: 'hint',
-      states: {
-        hint: {
-          invoke: {
-            src: function src(ctx, event) {
-              console.log("[hint] play question " + ctx.questionIndex + ": " + ctx.questionPlayTimes + " audio");
-              ctx.questionPlayTimes += 1;
-              return new Promise(function (resolve, reject) {
-                (0, _util.playAudioByUrl)(ctx.questions[ctx.questionIndex].audio_url, function () {
-                  console.log('hint finish');
-                  resolve();
-                });
-              });
-            },
-            onDone: 'answer',
-            onError: 'answer'
-          }
-        },
-        answer: {
-          after: {
-            8000: [{
-              target: 'wrong'
-            } // reenter 'hint' state
-            ]
-          },
-          invoke: {
-            src: function src(context, event) {
-              return function (callback, onReceive) {
-                console.log('[answer] thinking and playing'); // check every second
 
-                var id = setInterval(function () {
-                  console.log("aaaaaa");
+      var o = s(r),
+          a = o.map(function (t) {
+        return n.getStateNode(t);
+      });
+      return a.push(this), a.concat(o.reduce(function (t, e) {
+        var i = n.getStateNode(e).getStateNodes(r[e]);
+        return t.concat(i);
+      }, []));
+    }, a.prototype.handles = function (t) {
+      var e = u(t);
+      return this.events.includes(e);
+    }, a.prototype.resolveState = function (t) {
+      var n = Array.from(J([], this.getStateNodes(t.value)));
+      return new kt(_e(_e({}, t), {
+        value: this.resolve(t.value),
+        configuration: n,
+        done: H(n, this),
+        tags: G(n)
+      }));
+    }, a.prototype.transitionLeafNode = function (t, e, n) {
+      var r = this.getStateNode(t).next(e, n);
+      return r && r.transitions.length ? r : this.next(e, n);
+    }, a.prototype.transitionCompoundNode = function (t, e, n) {
+      var r = s(t),
+          i = this.getStateNode(r[0])._transition(t[r[0]], e, n);
 
-                  if (!_this._lastFingerPosition.dirty) {
-                    return;
-                  }
+      return i && i.transitions.length ? i : this.next(e, n);
+    }, a.prototype.transitionParallelNode = function (t, e, n) {
+      var i,
+          o,
+          a = {};
 
-                  var region = context.questions[context.questionIndex];
+      try {
+        for (var c = r(s(t)), u = c.next(); !u.done; u = c.next()) {
+          var h = u.value,
+              f = t[h];
 
-                  var result = _this.checkInRegion(region.rect);
+          if (f) {
+            var l = this.getStateNode(h)._transition(f, e, n);
 
-                  if (result === null) {
-                    return;
-                  }
-
-                  console.log('[Genise JS] checkInRegion' + result);
-
-                  if (result) {
-                    callback('RIGHT');
-                  } else {
-                    callback('WRONG');
-                  }
-                }, 300);
-
-                _this._intervalIds.push(id); // Perform cleanup
-
-
-                return function () {
-                  return clearInterval(id);
-                };
-              };
-            }
-          },
-          on: {
-            RIGHT: {
-              target: 'right'
-            },
-            WRONG: {
-              target: 'wrong'
-            }
+            l && (a[h] = l);
           }
-        },
-        right: {
-          invoke: {
-            src: function src(context, event) {
-              _this._lastFingerPosition.pos = null;
-              _this._lastFingerPosition.dirty = false;
-              return new Promise(function (resolve, reject) {
-                console.log('answer right'); // this.playAni(context.questionIndex, 'normal')
+        }
+      } catch (t) {
+        i = {
+          error: t
+        };
+      } finally {
+        try {
+          u && !u.done && (o = c["return"]) && o.call(c);
+        } finally {
+          if (i) throw i.error;
+        }
+      }
 
-                var an = context.questions[context.questionIndex].node;
-                console.log('in right ' + typeof an);
-                an.active = true;
-                var dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);
-                dragonDisplay.playAnimation('normal', 0);
+      var d = s(a).map(function (t) {
+        return a[t];
+      }),
+          p = g(d.map(function (t) {
+        return t.transitions;
+      }));
+      if (!d.some(function (t) {
+        return t.transitions.length > 0;
+      })) return this.next(e, n);
+      var v = g(d.map(function (t) {
+        return t.entrySet;
+      })),
+          y = g(s(a).map(function (t) {
+        return a[t].configuration;
+      }));
+      return {
+        transitions: p,
+        entrySet: v,
+        exitSet: g(d.map(function (t) {
+          return t.exitSet;
+        })),
+        configuration: y,
+        source: e,
+        actions: g(s(a).map(function (t) {
+          return a[t].actions;
+        }))
+      };
+    }, a.prototype._transition = function (t, e, n) {
+      return A(t) ? this.transitionLeafNode(t, e, n) : 1 === s(t).length ? this.transitionCompoundNode(t, e, n) : this.transitionParallelNode(t, e, n);
+    }, a.prototype.next = function (t, e) {
+      var n,
+          a,
+          s,
+          u = this,
+          h = e.name,
+          l = [],
+          d = [];
 
-                var ddLogoCat = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
+      try {
+        for (var p = r(this.getCandidates(h)), y = p.next(); !y.done; y = p.next()) {
+          var m = y.value,
+              S = m.cond,
+              x = m["in"],
+              w = t.context,
+              b = !x || (A(x) && Mt(x) ? t.matches(f(this.getStateNodeById(x).path, this.delimiter)) : c(f(x, this.delimiter), v(this.path.slice(0, -2))(t.value))),
+              _ = !1;
 
-                ddLogoCat.playAnimation('right', 1);
-                ddLogoCat.once(dragonBones.EventObject.COMPLETE, function () {
-                  this.logoCat.getComponent(dragonBones.ArmatureDisplay).playAnimation('normal', 0);
-                }, _this);
-                (0, _util.playAudioByUrl)(_this.rightAudio, function () {
-                  resolve();
-                });
-              });
-            },
-            onDone: {
-              target: '#QuestionsArray.next',
-              actions: raise('CHECK')
-            },
-            onError: {
-              target: '#QuestionsArray.next',
-              actions: raise('CHECK')
-            }
+          try {
+            _ = !S || R(this.machine, S, w, e, t);
+          } catch (t) {
+            throw new Error("Unable to evaluate guard '".concat(S.name || S.type, "' in transition for event '").concat(h, "' in state node '").concat(this.id, "':\n").concat(t.message));
           }
-        },
-        wrong: {
-          invoke: {
-            src: function src(context, event) {
-              _this._lastFingerPosition.pos = null;
-              _this._lastFingerPosition.dirty = false;
-              return new Promise(function (resolve, reject) {
-                console.log('answer wrong', context.questionIndex, context.questionPlayTimes, context.maxQuestionTryTimes);
 
-                var ddLogoCat = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
+          if (_ && b) {
+            void 0 !== m.target && (d = m.target), l.push.apply(l, o([], i(m.actions), !1)), s = m;
+            break;
+          }
+        }
+      } catch (t) {
+        n = {
+          error: t
+        };
+      } finally {
+        try {
+          y && !y.done && (a = p["return"]) && a.call(p);
+        } finally {
+          if (n) throw n.error;
+        }
+      }
 
-                ddLogoCat.playAnimation('wrong', 1);
-                ddLogoCat.once(dragonBones.EventObject.COMPLETE, function () {
-                  this.logoCat.getComponent(dragonBones.ArmatureDisplay).playAnimation('normal', 0);
-                }, _this);
-                var wrongEffect = _this.wrongAudio; // 第一和第二题的提示音
+      if (s) {
+        if (!d.length) return {
+          transitions: [s],
+          entrySet: [],
+          exitSet: [],
+          configuration: t.value ? [this] : [],
+          source: t,
+          actions: l
+        };
+        var E = g(d.map(function (e) {
+          return u.getRelativeStateNodes(e, t.historyValue);
+        })),
+            T = !!s.internal;
+        return {
+          transitions: [s],
+          entrySet: T ? [] : g(E.map(function (t) {
+            return u.nodesFromChild(t);
+          })),
+          exitSet: T ? [] : [this],
+          configuration: E,
+          source: t,
+          actions: l
+        };
+      }
+    }, a.prototype.nodesFromChild = function (t) {
+      if (t.escapes(this)) return [];
 
-                if ([0, 1].includes(context.questionIndex)) {
-                  wrongEffect = _this.data["wrong_audio" + context.questionPlayTimes];
-                } else {
-                  // 非第一和第二题,并且做第二遍的提示音
-                  if (context.questionPlayTimes == 2) {
-                    wrongEffect = _this.data["wrong_audio" + context.questionPlayTimes];
-                  }
-                }
+      for (var e = [], n = t; n && n !== this;) {
+        e.push(n), n = n.parent;
+      }
 
-                if (context.questionPlayTimes >= context.maxQuestionTryTimes) {
-                  var an = context.questions[context.questionIndex].node;
-                  an.active = true;
+      return e.push(this), e;
+    }, a.prototype.escapes = function (t) {
+      if (this === t) return !1;
 
-                  if (an.isSpine) {
-                    var skeleton = an.getComponent(sp.Skeleton);
-                    skeleton.setToSetupPose();
-                    setTimeout(function () {
-                      skeleton.setAnimation(0, 'normal', true);
-                    }, 1);
-                  } else {
-                    var dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);
-                    dragonDisplay.playAnimation('normal', 0);
-                    console.log('show animation', an.active);
-                  }
-                }
+      for (var e = this.parent; e;) {
+        if (e === t) return !1;
+        e = e.parent;
+      }
 
-                (0, _util.playAudioByUrl)(wrongEffect, function () {
-                  if (context.questionPlayTimes >= context.maxQuestionTryTimes) {
-                    // const an = context.questions[context.questionIndex].node;
-                    // an.active = true;
-                    // const dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);
-                    // dragonDisplay.playAnimation('normal', 0);
-                    // console.log('show animation', an.active);
-                    reject();
-                  } else {
-                    resolve();
-                  }
-                });
-              });
-            },
-            onDone: {
-              target: 'hint' // actions: raise('CHECK')
+      return !0;
+    }, a.prototype.getActions = function (t, e, n, a) {
+      var s,
+          c,
+          u,
+          h,
+          f = J([], a ? this.getStateNodes(a.value) : [this]),
+          l = t.configuration.length ? J(f, t.configuration) : f;
 
-            },
-            onError: {
-              target: '#QuestionsArray.next',
-              actions: raise('CHECK')
-            }
-          }
+      try {
+        for (var d = r(l), p = d.next(); !p.done; p = d.next()) {
+          X(f, m = p.value) || t.entrySet.push(m);
+        }
+      } catch (t) {
+        s = {
+          error: t
+        };
+      } finally {
+        try {
+          p && !p.done && (c = d["return"]) && c.call(d);
+        } finally {
+          if (s) throw s.error;
         }
       }
-    };
-    var QuestionsArrayStatus = {
-      id: 'QuestionsArray',
-      initial: 'play',
-      states: {
-        play: _extends({}, QuestionState),
-        next: {
-          on: {
-            CHECK: [{
-              target: '#game.end',
-              cond: function cond(ctx, evt) {
-                ctx.questionIndex += 1;
-                ctx.questionPlayTimes = 0;
-                console.log('#game.end', ctx.questionIndex >= ctx.questionsCount);
-                return ctx.questionIndex >= ctx.questionsCount;
-              }
-            }, {
-              target: 'play'
-            }]
-          }
+
+      try {
+        for (var v = r(f), y = v.next(); !y.done; y = v.next()) {
+          var m;
+          X(l, m = y.value) && !X(t.exitSet, m.parent) || t.exitSet.push(m);
+        }
+      } catch (t) {
+        u = {
+          error: t
+        };
+      } finally {
+        try {
+          y && !y.done && (h = v["return"]) && h.call(v);
+        } finally {
+          if (u) throw u.error;
         }
       }
-    };
-    var state = {
-      id: 'game',
-      initial: 'begin',
-      context: {
-        questionIndex: 0,
-        questionPlayTimes: 0,
-        maxQuestionTryTimes: 2,
-        questionsCount: this._figurePointRectArray.length,
-        questions: this._figurePointRectArray
-      },
-      states: {
-        begin: {
-          invoke: {
-            src: function src(ctx) {
-              console.log('game begin 1');
-
-              if (window.courseware && window.courseware.openOsmoFingerRead) {
-                _this.isOpenedOsmoFingerRead = true;
-                window.courseware.openOsmoFingerRead({
-                  "page_id": 27,
-                  "book_id": "opw1"
-                });
-              }
-
-              var dragonDisplay = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
-
-              var state = dragonDisplay.playAnimation('begin', 0);
-              return new Promise(function (resolve, reject) {
-                (0, _util.playAudioByUrl)(_this.data.begin_audio, function () {
-                  console.log('game begin audio finish');
-                  resolve();
-                });
-              });
-            },
-            onDone: 'guide',
-            onError: 'guide'
-          }
-        },
-        guide: {
-          invoke: {
-            src: function src(ctx) {
-              return new Promise(function (resolve, reject) {
-                (0, _util.playAudioByUrl)(_this.data.guide_audio, function () {
-                  console.log('game guide audio finish');
-                  reject();
-                });
-              });
-            },
-            onDone: 'playing',
-            onError: 'playing'
-          }
-        },
-        playing: _extends({
-          entry: function entry(ctx) {
-            console.log('entry play stage');
-
-            var dragonDisplay = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
-
-            var state = dragonDisplay.playAnimation('normal', 0);
-            cc.assetManager.loadRemote(_this.data.playing_audio, function (err, audioClip) {
-              cc.audioEngine.playMusic(audioClip, true, 0.8);
-            });
-            ctx.questions.forEach(function (block) {
-              block.node.active = false;
-            });
-          },
-          exit: function exit() {
-            console.log('exit play stage');
-            cc.audioEngine.stopMusic();
-          },
-          on: {
-            NEXT: 'end'
-          }
-        }, QuestionsArrayStatus),
-        end: {
-          entry: function entry(ctx, event) {
-            console.log('game end');
 
-            var dragonDisplay = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
-
-            var state = dragonDisplay.playAnimation('finish', 0);
+      t.source || (t.exitSet = [], t.entrySet.push(this));
+      var S = g(t.entrySet.map(function (r) {
+        var i = [];
+        if ("final" !== r.type) return i;
+        var o = r.parent;
+        if (!o.parent) return i;
+        i.push(Tt(r.id, r.doneData), Tt(o.id, r.doneData ? x(r.doneData, e, n) : void 0));
+        var a = o.parent;
+        return "parallel" === a.type && U(a).every(function (e) {
+          return H(t.configuration, e);
+        }) && i.push(Tt(a.id)), i;
+      }));
+      t.exitSet.sort(function (t, e) {
+        return e.order - t.order;
+      }), t.entrySet.sort(function (t, e) {
+        return t.order - e.order;
+      });
 
-            if (window.courseware && window.courseware.closeOsmoFingerRead) {
-              _this.isOpenedOsmoFingerRead = false;
-              window.courseware.closeOsmoFingerRead();
-            }
+      var w = new Set(t.entrySet),
+          b = new Set(t.exitSet),
+          _ = i([g(Array.from(w).map(function (t) {
+        return o(o([], i(t.activities.map(function (t) {
+          return wt(t);
+        })), !1), i(t.onEntry), !1);
+      })).concat(S.map(vt)), g(Array.from(b).map(function (t) {
+        return o(o([], i(t.onExit), !1), i(t.activities.map(function (t) {
+          return bt(t);
+        })), !1);
+      }))], 2),
+          E = _[0],
+          T = _[1];
 
-            (0, _util.playAudioByUrl)(_this.data.end_audio, function () {
-              console.log('game finish');
-              (0, _util.onHomeworkFinish)();
-            }); // return new Promise((resolve,reject) => {
-            // 	setTimeout(() => {
-            // 		console.log('hint finish');
-            // 		resolve()
-            // 	}, 2000)
-            // })
-          }
-        }
+      return dt(T.concat(t.actions).concat(E), this.machine.options.actions);
+    }, a.prototype.transition = function (t, e, n) {
+      void 0 === t && (t = this.initialState);
+      var r,
+          a,
+          s = L(e);
+      if (t instanceof kt) r = void 0 === n ? t : this.resolveState(kt.from(t, n));else {
+        var c = A(t) ? this.resolve(l(this.getResolvedPath(t))) : this.resolve(t),
+            u = null != n ? n : this.machine.context;
+        r = this.resolveState(kt.from(c, u));
       }
-    };
-    var after = {};
-
-    var _loop = function _loop(i) {
-      var t = _this._hintsNodeList[i].node;
-      var k = _this._hintsNodeList[i].after;
-      after[k] = {
-        actions: function actions() {
-          if (t.isSpine) {
-            var skeleton = t.getComponent(sp.Skeleton);
-            skeleton.setToSetupPose();
-            setTimeout(function () {
-              skeleton.setAnimation(0, 'enlarge', false);
-            }, 1); // skeleton.animation = skeleton.animationNames[0];
-          } else {
-            var dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
-            dragonDisplay.playAnimation('enlarge', 1);
-            console.log(dragonDisplay._armatureKey, 'enlarge');
-            dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, function (event) {// TODO 这里写触发事件
-              // event.name为事件名称
-              // event.armature.animation.play('normal', 0);
-              // console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')
-            }, _this);
-          } // const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
-          // dragonDisplay.playAnimation('enlarge', 1);
-          // console.log(dragonDisplay._armatureKey, 'enlarge')
-          // dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {
-          // 	//TODO 这里写触发事件
-          // 	//event.name为事件名称
-          // 	event.armature.animation.play('normal', 0);
-          // 	console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')
-          // }, this);
+      if (this.strict && !this.events.includes(s.name) && (a = s.name, !/^(done|error)\./.test(a))) throw new Error("Machine '".concat(this.id, "' does not accept event '").concat(s.name, "'"));
+      var h = this._transition(r.value, r, s) || {
+        transitions: [],
+        configuration: [],
+        entrySet: [],
+        exitSet: [],
+        source: r,
+        actions: []
+      },
+          f = J([], this.getStateNodes(r.value)),
+          d = h.configuration.length ? J(f, h.configuration) : f;
+      return h.configuration = o([], i(d), !1), this.resolveTransition(h, r, s);
+    }, a.prototype.resolveRaisedTransition = function (t, e, n) {
+      var r,
+          a = t.actions;
+      return (t = this.transition(t, e))._event = n, t.event = n.data, (r = t.actions).unshift.apply(r, o([], i(a), !1)), t;
+    }, a.prototype.resolveTransition = function (n, o, a, c) {
+      var u,
+          h,
+          f = this;
+      void 0 === a && (a = ht), void 0 === c && (c = this.machine.context);
+      var l = n.configuration,
+          d = !o || n.transitions.length > 0,
+          p = d ? $(this.machine, l) : void 0,
+          v = o ? o.historyValue ? o.historyValue : n.source ? this.machine.historyValue(o.value) : void 0 : void 0,
+          y = o ? o.context : c,
+          g = this.getActions(n, y, a, o),
+          m = o ? _e({}, o.activities) : {};
 
+      try {
+        for (var S = r(g), w = S.next(); !w.done; w = S.next()) {
+          var E = w.value;
+          E.type === K ? m[E.activity.id || E.activity.type] = E : E.type === Q && (m[E.activity.id || E.activity.type] = !1);
         }
-      };
-    };
-
-    for (var i = 0; i < this._hintsNodeList.length; i++) {
-      _loop(i);
-    }
-
-    if (this.data.begin_sep_time) {
-      var t = +this.data.begin_sep_time * 1000;
-      after[t] = {
-        actions: function actions() {
-          console.log('game begin 2');
-
-          for (var _i = 0; _i < _this._allAnimationNodes.length; _i++) {
-            var _t = _this._allAnimationNodes[_i];
+      } catch (t) {
+        u = {
+          error: t
+        };
+      } finally {
+        try {
+          w && !w.done && (h = S["return"]) && h.call(S);
+        } finally {
+          if (u) throw u.error;
+        }
+      }
 
-            if (_t.isSpine) {
-              (function () {
-                var skeleton = _t.getComponent(sp.Skeleton);
-
-                console.log('skeleton: ', skeleton);
-                skeleton.setToSetupPose();
-                setTimeout(function () {
-                  skeleton.setAnimation(0, 'normal', true);
-                }, 1);
-                console.log('skeleton 22: ', skeleton); // skeleton.animation = skeleton.animationNames[0];
-              })();
-            } else {
-              var dragonDisplay = _t.getComponent(dragonBones.ArmatureDisplay);
-
-              dragonDisplay.playAnimation('normal', 0);
-            }
-          }
-        }
-      };
-    }
-
-    state.states.begin.after = after;
-    var gameMachine = (0, _xstate.createMachine)(state);
-    window.gameMachine = gameMachine;
-    this.gameMachineService = (0, _xstate.interpret)(gameMachine).onTransition(function (state) {// console.log(1, state.value, state.context);
-    });
-    this.gameMachineService.start();
+      var T,
+          N,
+          O = i(Pt(this, o, y, a, g, this.machine.config.preserveActionOrder), 2),
+          P = O[0],
+          k = O[1],
+          I = i(b(P, function (e) {
+        return e.type === W || e.type === Y && e.to === t.SpecialTargets.Internal;
+      }), 2),
+          j = I[0],
+          C = I[1],
+          V = P.filter(function (t) {
+        var e;
+        return t.type === K && (null === (e = t.activity) || void 0 === e ? void 0 : e.type) === it;
+      }).reduce(function (t, e) {
+        return t[e.activity.id] = function (t, e, n, r) {
+          var i,
+              o = M(t.src),
+              a = null === (i = null == e ? void 0 : e.options.services) || void 0 === i ? void 0 : i[o.type],
+              s = t.data ? x(t.data, n, r) : void 0,
+              c = a ? Vt(a, t.id, s) : Ct(t.id);
+          return c.meta = t, c;
+        }(e.activity, f.machine, k, a), t;
+      }, o ? _e({}, o.children) : {}),
+          L = p ? n.configuration : o ? o.configuration : [],
+          D = H(L, this),
+          R = new kt({
+        value: p || o.value,
+        context: k,
+        _event: a,
+        _sessionid: o ? o._sessionid : null,
+        historyValue: p ? v ? (T = v, N = p, {
+          current: N,
+          states: _(T, N)
+        }) : void 0 : o ? o.historyValue : void 0,
+        history: !p || n.source ? o : void 0,
+        actions: p ? C : [],
+        activities: p ? m : o ? o.activities : {},
+        events: [],
+        configuration: L,
+        transitions: n.transitions,
+        children: V,
+        done: D,
+        tags: null == o ? void 0 : o.tags,
+        machine: this
+      }),
+          z = y !== k;
+      R.changed = a.name === st || z;
+      var F = R.history;
+      F && delete F.history;
+      var U = !D && (this._transient || l.some(function (t) {
+        return t._transient;
+      }));
+      if (!(d || U && "" !== a.name)) return R;
+      var B = R;
+      if (!D) for (U && (B = this.resolveRaisedTransition(B, {
+        type: tt
+      }, a)); j.length;) {
+        var J = j.shift();
+        B = this.resolveRaisedTransition(B, J._event, a);
+      }
+      var q = B.changed || (F ? !!B.actions.length || z || typeof F.value != typeof B.value || !function t(e, n) {
+        if (e === n) return !0;
+        if (void 0 === e || void 0 === n) return !1;
+        if (A(e) || A(n)) return e === n;
+        var r = s(e),
+            i = s(n);
+        return r.length === i.length && r.every(function (r) {
+          return t(e[r], n[r]);
+        });
+      }(B.value, F.value) : void 0);
+      return B.changed = q, B.history = F, B.tags = G(B.configuration), B;
+    }, a.prototype.getStateNode = function (t) {
+      if (Mt(t)) return this.machine.getStateNodeById(t);
+      if (!this.states) throw new Error("Unable to retrieve child state '".concat(t, "' from '").concat(this.id, "'; no child states exist."));
+      var e = this.states[t];
+      if (!e) throw new Error("Child state '".concat(t, "' does not exist on '").concat(this.id, "'"));
+      return e;
+    }, a.prototype.getStateNodeById = function (t) {
+      var e = Mt(t) ? t.slice("#".length) : t;
+      if (e === this.id) return this;
+      var n = this.machine.idMap[e];
+      if (!n) throw new Error("Child state node '#".concat(e, "' does not exist on machine '").concat(this.id, "'"));
+      return n;
+    }, a.prototype.getStateNodeByPath = function (t) {
+      if ("string" == typeof t && Mt(t)) try {
+        return this.getStateNodeById(t.slice(1));
+      } catch (t) {}
 
-    if (window.gameMachineService) {
-      window.gameMachineService = gameMachineService;
-    }
-  },
-  // 生命周期 start
-  start: function start() {
-    var _this2 = this;
+      for (var e = h(t, this.delimiter).slice(), n = this; e.length;) {
+        var r = e.shift();
+        if (!r.length) break;
+        n = n.getStateNode(r);
+      }
 
-    var getData = this.getData.bind(this);
+      return n;
+    }, a.prototype.resolve = function (t) {
+      var e,
+          n = this;
+      if (!t) return this.initialStateValue || Rt;
 
-    if (window && window.courseware) {
-      getData = window.courseware.getData;
-    }
+      switch (this.type) {
+        case "parallel":
+          return d(this.initialStateValue, function (e, r) {
+            return e ? n.getStateNode(r).resolve(t[r] || e) : Rt;
+          });
 
-    getData(function (data) {
-      // console.log('data:', data);
-      _this2.data = data || _this2.getDefaultData();
-      _this2.data = JSON.parse(JSON.stringify(_this2.data));
+        case "compound":
+          if (A(t)) {
+            var r = this.getStateNode(t);
+            return "parallel" === r.type || "compound" === r.type ? ((e = {})[t] = r.initialStateValue, e) : t;
+          }
 
-      _this2.preloadItem();
-    });
-    window.air = window.air || {};
+          return s(t).length ? d(t, function (t, e) {
+            return t ? n.getStateNode(e).resolve(t) : Rt;
+          }) : this.initialStateValue || {};
 
-    if (window.air) {
-      window.air.osmoFingerReadCallback = function (result) {
-        if (!_this2.gameMachineService) {
-          return;
-        } // const st = this.gameMachineService.state.value.constructor.name == 'Object' 
-        // && this.gameMachineService.state.value['playing']
-        // && this.gameMachineService.state.value['playing'].constructor.name == 'Object'
-        // && this.gameMachineService.state.value['playing']['play']
-        // && this.gameMachineService.state.value['playing']['play'] == 'answer'
-        // if (st) {
-        // }
+        default:
+          return t || Rt;
+      }
+    }, a.prototype.getResolvedPath = function (t) {
+      if (Mt(t)) {
+        var e = this.machine.idMap[t.slice("#".length)];
+        if (!e) throw new Error("Unable to find state node '".concat(t, "'"));
+        return e.path;
+      }
 
+      return h(t, this.delimiter);
+    }, Object.defineProperty(a.prototype, "initialStateValue", {
+      get: function get() {
+        var t, e;
+        if (this.__cache.initialStateValue) return this.__cache.initialStateValue;
+        if ("parallel" === this.type) e = p(this.states, function (t) {
+          return t.initialStateValue || Rt;
+        }, function (t) {
+          return !("history" === t.type);
+        });else if (void 0 !== this.initial) {
+          if (!this.states[this.initial]) throw new Error("Initial state '".concat(this.initial, "' not found on '").concat(this.key, "'"));
+          e = F(this.states[this.initial]) ? this.initial : ((t = {})[this.initial] = this.states[this.initial].initialStateValue, t);
+        } else e = {};
+        return this.__cache.initialStateValue = e, this.__cache.initialStateValue;
+      },
+      enumerable: !1,
+      configurable: !0
+    }), a.prototype.getInitialState = function (t, e) {
+      var n = this.getStateNodes(t);
+      return this.resolveTransition({
+        configuration: n,
+        entrySet: n,
+        exitSet: [],
+        transitions: [],
+        source: void 0,
+        actions: []
+      }, void 0, void 0, e);
+    }, Object.defineProperty(a.prototype, "initialState", {
+      get: function get() {
+        this._init();
 
-        var resultObj = JSON.parse(result);
-        console.log('[Genise JS] ' + JSON.stringify(resultObj.finger_pos_in_page));
-        var p = resultObj.finger_pos_in_page;
+        var t = this.initialStateValue;
+        if (!t) throw new Error("Cannot retrieve initial state from simple state '".concat(this.id, "'."));
+        return this.getInitialState(t);
+      },
+      enumerable: !1,
+      configurable: !0
+    }), Object.defineProperty(a.prototype, "target", {
+      get: function get() {
+        var t;
 
-        if (p.x == -1 || p.y == -1) {
-          _this2._lastFingerPosition.pos = null;
-          _this2._lastFingerPosition.dirty = false;
-          return;
+        if ("history" === this.type) {
+          var e = this.config;
+          t = A(e.target) && Mt(e.target) ? l(this.machine.getStateNodeById(e.target).path.slice(this.path.length - 1)) : e.target;
         }
 
-        _this2._lastFingerPosition = {
-          pos: {
-            x: p.x,
-            y: p.y
-          },
-          dirty: true
-        };
-
-        _this2.debugPointer(p.x, p.y);
-      };
-    }
-
-    this.isDebug = false;
-  },
-  checkInRegion: function checkInRegion(r) {
-    console.log('r~~~: ', r);
-
-    if (!this._lastFingerPosition && !this._lastFingerPosition.pos) {
-      return null;
-    }
-
-    var p = this._lastFingerPosition ? this._lastFingerPosition.pos || {
-      x: 0,
-      y: 0
-    } : {
-      x: 0,
-      y: 0
-    };
-    var w = p.x > r.x && p.x < r.x + r.width;
-    var h = p.y > r.y && p.y < r.y + r.height;
-    return w && h;
-  },
-  getData: function getData(func) {
-    if (window && window.courseware) {
-      window.courseware.getData(func, 'scene');
-      return;
-    }
+        return t;
+      },
+      enumerable: !1,
+      configurable: !0
+    }), a.prototype.getRelativeStateNodes = function (t, e, n) {
+      return void 0 === n && (n = !0), n ? "history" === t.type ? t.resolveHistory(e) : t.initialStateNodes : [t];
+    }, Object.defineProperty(a.prototype, "initialStateNodes", {
+      get: function get() {
+        var t = this;
+        return F(this) ? [this] : "compound" !== this.type || this.initial ? g(y(this.initialStateValue).map(function (e) {
+          return t.getFromRelativePath(e);
+        })) : [this];
+      },
+      enumerable: !1,
+      configurable: !0
+    }), a.prototype.getFromRelativePath = function (t) {
+      if (!t.length) return [this];
+      var e = i(t),
+          n = e[0],
+          r = e.slice(1);
+      if (!this.states) throw new Error("Cannot retrieve subPath '".concat(n, "' from node with no states"));
+      var o = this.getStateNode(n);
+      if ("history" === o.type) return o.resolveHistory();
+      if (!this.states[n]) throw new Error("Child state '".concat(n, "' does not exist on '").concat(this.id, "'"));
+      return this.states[n].getFromRelativePath(r);
+    }, a.prototype.historyValue = function (t) {
+      if (s(this.states).length) return {
+        current: t || this.initialStateValue,
+        states: p(this.states, function (e, n) {
+          if (!t) return e.historyValue();
+          var r = A(t) ? void 0 : t[n];
+          return e.historyValue(r || e.initialStateValue);
+        }, function (t) {
+          return !t.history;
+        })
+      };
+    }, a.prototype.resolveHistory = function (t) {
+      var e = this;
+      if ("history" !== this.type) return [this];
+      var n = this.parent;
 
-    var middleLayer = cc.find('middleLayer');
+      if (!t) {
+        var i = this.target;
+        return i ? g(y(i).map(function (t) {
+          return n.getFromRelativePath(t);
+        })) : n.initialStateNodes;
+      }
 
-    if (middleLayer) {
-      var middleLayerComponent = middleLayer.getComponent('middleLayer');
-      middleLayerComponent.getData(func);
-      return;
-    }
+      var o,
+          a,
+          s = (o = n.path, a = "states", function (t) {
+        var e,
+            n,
+            i = t;
 
-    func(this.getDefaultData());
-  },
-  getDefaultData: function getDefaultData() {
-    return {
-      "begin_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "begin_sep_time": 1,
-      "guide_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "playing_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "right_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "wrong_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "wrong_audio1": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "wrong_audio2": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "end_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "bgItem": {
-        "url": "http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png",
-        "rect": {
-          "x": 736.95,
-          "y": 0,
-          "width": 599.09,
-          "height": 775
+        try {
+          for (var s = r(o), c = s.next(); !c.done; c = s.next()) {
+            var u = c.value;
+            i = i[a][u];
+          }
+        } catch (t) {
+          e = {
+            error: t
+          };
+        } finally {
+          try {
+            c && !c.done && (n = s["return"]) && n.call(s);
+          } finally {
+            if (e) throw e.error;
+          }
         }
+
+        return i;
+      })(t).current;
+      return A(s) ? [n.getStateNode(s)] : g(y(s).map(function (t) {
+        return "deep" === e.history ? n.getFromRelativePath(t) : [n.states[t[0]]];
+      }));
+    }, Object.defineProperty(a.prototype, "stateIds", {
+      get: function get() {
+        var t = this,
+            e = g(s(this.states).map(function (e) {
+          return t.states[e].stateIds;
+        }));
+        return [this.id].concat(e);
       },
-      "hotZoneItemArr": [{
-        "id": "1659333645573",
-        "index": 0,
-        "audio_url": "http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3",
-        "itemType": "rect",
-        "fontScale": 1.61953125,
-        "imgScale": 1,
-        "imgSizeW": 0,
-        "imgSizeH": 0,
-        "mapScale": 1.61953125,
-        "dragDot": {
-          "x": 1036.5,
-          "y": 387.5
-        },
-        "gIdx": "1",
-        "labelText": "1",
-        "posX": 887.5,
-        "posY": 165.5,
-        "skeJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json",
-          "name": "spineboy-pro.json"
-        },
-        "texJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas",
-          "name": "spineboy-pro.atlas"
-        },
-        "texPngData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png",
-          "name": "spineboy-pro.png"
-        },
-        "animType": "spine",
-        "rect": {
-          "x": 48.05,
-          "y": 65.5,
-          "width": 205,
-          "height": 200
-        }
-      }, {
-        "id": "1659334098930",
-        "index": 1,
-        "audio_url": "http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3",
-        "itemType": "rect",
-        "fontScale": 1.61953125,
-        "imgScale": 1,
-        "imgSizeW": 0,
-        "imgSizeH": 0,
-        "mapScale": 1.61953125,
-        "dragDot": {
-          "x": 1036.5,
-          "y": 387.5
-        },
-        "gIdx": "0",
-        "labelText": "1",
-        "posX": 1212.5,
-        "posY": 643.5,
-        "skeJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json",
-          "name": "alien-pro.json"
-        },
-        "texJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas",
-          "name": "alien-pro.atlas"
-        },
-        "texPngData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png",
-          "name": "alien-pro.png"
-        },
-        "animType": "spine",
-        "rect": {
-          "x": 375.56,
-          "y": 543.5,
-          "width": 200,
-          "height": 200
+      enumerable: !1,
+      configurable: !0
+    }), Object.defineProperty(a.prototype, "events", {
+      get: function get() {
+        var t, e, n, i;
+        if (this.__cache.events) return this.__cache.events;
+        var o = this.states,
+            a = new Set(this.ownEvents);
+        if (o) try {
+          for (var c = r(s(o)), u = c.next(); !u.done; u = c.next()) {
+            var h = o[u.value];
+            if (h.states) try {
+              for (var f = (n = void 0, r(h.events)), l = f.next(); !l.done; l = f.next()) {
+                var d = l.value;
+                a.add("".concat(d));
+              }
+            } catch (t) {
+              n = {
+                error: t
+              };
+            } finally {
+              try {
+                l && !l.done && (i = f["return"]) && i.call(f);
+              } finally {
+                if (n) throw n.error;
+              }
+            }
+          }
+        } catch (e) {
+          t = {
+            error: e
+          };
+        } finally {
+          try {
+            u && !u.done && (e = c["return"]) && e.call(c);
+          } finally {
+            if (t) throw t.error;
+          }
         }
-      }]
-    }; // return defaultData;
-  },
-  preloadItem: function preloadItem() {
-    this.addPreloadImage();
-    this.addPreloadAudio();
-    this.addPreloadAnima();
-    this.preload();
-  },
-  addPreloadImage: function addPreloadImage() {
-    this._imageResList.push({
-      url: this.data.bgItem.url
-    });
-
-    for (var _iterator = _createForOfIteratorHelperLoose(this.data.hotZoneItemArr), _step; !(_step = _iterator()).done;) {
-      var q = _step.value;
-
-      if (q.gIdx == '0') {
-        this._imageResList.push({
-          url: q.texPngData.url
-        });
-      }
-
-      if (q.gIdx == '1') {
-        this._imageResList.push({
-          url: q.texPngData.url
-        });
-      }
-
-      if (q.gIdx == '2') {
-        this._imageResList.push({
-          url: q.pic_url
-        });
-      }
-    }
-  },
-  prepareAudioClip: function prepareAudioClip(url, key) {
-    var _this3 = this;
+        return this.__cache.events = Array.from(a);
+      },
+      enumerable: !1,
+      configurable: !0
+    }), Object.defineProperty(a.prototype, "ownEvents", {
+      get: function get() {
+        var t = new Set(this.transitions.filter(function (t) {
+          return !(!t.target && !t.actions.length && t.internal);
+        }).map(function (t) {
+          return t.eventType;
+        }));
+        return Array.from(t);
+      },
+      enumerable: !1,
+      configurable: !0
+    }), a.prototype.resolveTarget = function (t) {
+      var e = this;
+      if (void 0 !== t) return t.map(function (t) {
+        if (!A(t)) return t;
+        var n = t[0] === e.delimiter;
+        if (n && !e.parent) return e.getStateNodeByPath(t.slice(1));
+        var r = n ? e.key + t : t;
+        if (!e.parent) return e.getStateNodeByPath(r);
 
-    if (url) {
-      cc.assetManager.loadRemote(url, function (err, audioClip) {
-        if (audioClip) {
-          _this3[key] = audioClip;
+        try {
+          return e.parent.getStateNodeByPath(r);
+        } catch (t) {
+          throw new Error("Invalid transition definition for state node '".concat(e.id, "':\n").concat(t.message));
         }
       });
-    }
-  },
-  addPreloadAudio: function addPreloadAudio() {
-    this._audioResList.push({
-      url: this.data.begin_audio
-    }); // this.prepareAudioClip(this.data.begin_audio1, 'begin_audio1')
-    // this._audioResList.push({ url: this.data.begin_audio2 });
-    // this.prepareAudioClip(this.data.begin_audio2, 'begin_audio2')
-
-
-    this._audioResList.push({
-      url: this.data.guide_audio
-    });
-
-    this._audioResList.push({
-      url: this.data.playing_audio
-    });
-
-    if (this.data.wrong_audio) {
-      this._audioResList.push({
-        url: this.data.wrong_audio
-      });
-
-      this.wrongAudio = this.data.wrong_audio;
-    }
-
-    if (this.data.right_audio) {
-      this._audioResList.push({
-        url: this.data.right_audio
+    }, a.prototype.formatTransition = function (t) {
+      var n = this,
+          r = function (t) {
+        if (void 0 !== t && "" !== t) return S(t);
+      }(t.target),
+          i = "internal" in t ? t.internal : !r || r.some(function (t) {
+        return A(t) && t[0] === n.delimiter;
+      }),
+          o = this.machine.options.guards,
+          a = this.resolveTarget(r),
+          s = _e(_e({}, t), {
+        actions: dt(S(t.actions)),
+        cond: O(t.cond, o),
+        target: a,
+        source: this,
+        internal: i,
+        eventType: t.event,
+        toJSON: function toJSON() {
+          return _e(_e({}, s), {
+            target: s.target ? s.target.map(function (t) {
+              return "#".concat(t.id);
+            }) : void 0,
+            source: "#".concat(n.id)
+          });
+        }
       });
 
-      this.rightAudio = this.data.right_audio;
-    }
-
-    this._audioResList.push({
-      url: this.data.wrong_audio1
-    });
-
-    this._audioResList.push({
-      url: this.data.wrong_audio2
-    });
-
-    this._audioResList.push({
-      url: this.data.end_audio
-    });
-
-    for (var _iterator2 = _createForOfIteratorHelperLoose(this.data.hotZoneItemArr), _step2; !(_step2 = _iterator2()).done;) {
-      var q = _step2.value;
-
-      if (q.gIdx == '0') {
-        this._audioResList.push({
-          url: q.audio_url
+      return s;
+    }, a.prototype.formatTransitions = function () {
+      var t,
+          e,
+          a,
+          c = this;
+      if (this.config.on) {
+        if (Array.isArray(this.config.on)) a = this.config.on;else {
+          var u = this.config.on,
+              h = u["*"],
+              f = void 0 === h ? [] : h,
+              l = n(u, ["*"]);
+          a = g(s(l).map(function (t) {
+            return D(t, l[t]);
+          }).concat(D("*", f)));
+        }
+      } else a = [];
+      var d = this.config.always ? D("", this.config.always) : [],
+          p = this.config.onDone ? D(String(Tt(this.id)), this.config.onDone) : [],
+          v = g(this.invoke.map(function (t) {
+        var e = [];
+        return t.onDone && e.push.apply(e, o([], i(D(String(Nt(t.id)), t.onDone)), !1)), t.onError && e.push.apply(e, o([], i(D(String(At(t.id)), t.onError)), !1)), e;
+      })),
+          y = this.after,
+          m = g(o(o(o(o([], i(p), !1), i(v), !1), i(a), !1), i(d), !1).map(function (t) {
+        return S(t).map(function (t) {
+          return c.formatTransition(t);
         });
-      }
-    }
-  },
-  debugPointer: function debugPointer() {
-    var boxDebugger = cc.find('Canvas/box-debugger');
+      }));
 
-    if (!this.isDebug) {
-      boxDebugger.active = false;
-      return;
-    }
+      try {
+        for (var x = r(y), w = x.next(); !w.done; w = x.next()) {
+          var b = w.value;
+          m.push(b);
+        }
+      } catch (e) {
+        t = {
+          error: e
+        };
+      } finally {
+        try {
+          w && !w.done && (e = x["return"]) && e.call(x);
+        } finally {
+          if (t) throw t.error;
+        }
+      }
 
-    if (!this.POINTER_NODE) {
-      this.POINTER_NODE = new cc.Node();
-      this.POINTER_NODE.parent = boxDebugger;
-      this.POINTER_NODE.name = 'POINTER_NODE';
-      this.POINTER_NODE.addComponent(cc.Graphics);
-    }
+      return m;
+    }, a;
+  }();
 
-    var grap = this.POINTER_NODE.getComponent(cc.Graphics);
-    grap.clear();
-    var ground = cc.find('Canvas/frame-border/ground');
-    var baseW = ground.width,
-        baseH = ground.height;
-    var _this$_lastFingerPosi = this._lastFingerPosition.pos,
-        px = _this$_lastFingerPosi.x,
-        py = _this$_lastFingerPosi.y;
-    var x = baseW * px - baseW / 2;
-    var y = baseH - baseH * py - baseH / 2 - 16;
-    var pn = new cc.Node();
-    grap.fillColor = cc.color(255, 0, 0);
-    grap.circle(x, y, 32);
-    grap.fill();
-    grap.stroke();
+  var Ft = {
+    deferEvents: !1
   },
-  debugGraphics: function debugGraphics() {
-    var boxDebugger = cc.find('Canvas/box-debugger');
-
-    if (!this.isDebug) {
-      boxDebugger.active = false;
-      return;
+      Ut = function () {
+    function t(t) {
+      this.processingEvent = !1, this.queue = [], this.initialized = !1, this.options = _e(_e({}, Ft), t);
     }
 
-    boxDebugger.active = true;
-    console.log('show debug graphics');
-    var ground = cc.find('Canvas/frame-border/ground');
-    var canvas = cc.find('Canvas');
-    var baseW = ground.width,
-        baseH = ground.height;
-    var _this$data$bgItem$rec = this.data.bgItem.rect,
-        bgW = _this$data$bgItem$rec.width,
-        bgH = _this$data$bgItem$rec.height;
-    var scaleX = bgW / baseW;
-    var scaleY = bgH / baseH;
-    var added = false;
-    this.data.hotZoneItemArr.forEach(function (area) {
-      if (added) {// return
+    return t.prototype.initialize = function (t) {
+      if (this.initialized = !0, t) {
+        if (!this.options.deferEvents) return void this.schedule(t);
+        this.process(t);
       }
 
-      if (area.gIdx != '0') {
-        return;
+      this.flushEvents();
+    }, t.prototype.schedule = function (t) {
+      if (this.initialized && !this.processingEvent) {
+        if (0 !== this.queue.length) throw new Error("Event queue should be empty when it is not processing events");
+        this.process(t), this.flushEvents();
+      } else this.queue.push(t);
+    }, t.prototype.clear = function () {
+      this.queue = [];
+    }, t.prototype.flushEvents = function () {
+      for (var t = this.queue.shift(); t;) {
+        this.process(t), t = this.queue.shift();
       }
+    }, t.prototype.process = function (t) {
+      this.processingEvent = !0;
 
-      added = true;
-      var dn = new cc.Node();
-      var lblNode = new cc.Node();
-      lblNode.parent = dn;
-      var lbl = lblNode.addComponent(cc.Label);
-      lblNode.color = cc.color(0, 0, 0);
-      lbl.string = area.skeJsonData.name.substring(0, area.skeJsonData.name.length - 9);
-      dn.name = lbl.string;
-      dn.parent = boxDebugger;
-      dn.width = baseW;
-      dn.height = baseH;
-      var grap = dn.addComponent(cc.Graphics);
-      var r = (0, _util.RandomInt)(1, 255);
-      var g = (0, _util.RandomInt)(1, 255);
-      var b = (0, _util.RandomInt)(1, 255);
-      grap.fillColor = cc.color(r, g, b, 127);
-      var _area$rect = area.rect,
-          rx = _area$rect.x,
-          ry = _area$rect.y,
-          rw = _area$rect.width,
-          rh = _area$rect.height;
-      var w = rw / bgW * baseW;
-      var h = rh / bgH * baseH;
-      var x = rx / bgW * baseW - baseW / 2;
-      var y = baseH - ry / bgH * baseH - h - baseH / 2; // w *= scaleX
-      // h *= scaleY
-      // x *= scaleX
-      // y *= scaleY
-      // const p = boxDebugger.convertToNodeSpaceAR(cc.v2(x,y));
-      // x = p.x;
-      // y = p.y;
-
-      lblNode.x = x;
-      lblNode.y = y + h; // dn.scaleX = scaleX;
-      // dn.scaleY = scaleY;
-      // dn.scale = area.mapScale; // minScale; // this._mapScaleMax * area.mapScale; // ;
-
-      console.log('[debug]', area.skeJsonData.name, x, y, w, h);
-      grap.fillRect(x, y, w, h);
-      grap.stroke();
-    });
+      try {
+        t();
+      } catch (t) {
+        throw this.clear(), t;
+      } finally {
+        this.processingEvent = !1;
+      }
+    }, t;
+  }(),
+      Bt = new Map(),
+      Jt = 0,
+      qt = function qt() {
+    return "x:".concat(Jt++);
   },
-  addPreloadAnima: function addPreloadAnima() {},
-  preload: function preload() {
-    var _this4 = this;
+      $t = function $t(t, e) {
+    return Bt.set(t, e), t;
+  },
+      Xt = function Xt(t) {
+    return Bt.get(t);
+  },
+      Ht = function Ht(t) {
+    Bt["delete"](t);
+  };
 
-    var preloadArr = this._imageResList.concat(this._audioResList).concat(this._animaResList); // console.log(preloadArr);
+  function Gt() {
+    return "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : "undefined" != typeof window ? window : "undefined" != typeof global ? global : void 0;
+  }
 
+  function Kt(t) {
+    if (Gt()) {
+      var e = function () {
+        var t = Gt();
+        if (t && "__xstate__" in t) return t.__xstate__;
+      }();
 
-    cc.assetManager.loadAny(preloadArr, null, function (f, t, item) {// console.log(f, t, item)
-    }, function (err, data) {
-      // console.log(err, data);
-      var ground = cc.find("Canvas/frame-border/ground");
-      var groundBg = cc.find("Canvas/frame-border/ground/bg");
-      groundBg.active = false;
-      var baseRect = _this4.data.bgItem.rect;
-      (0, _util.getSpriteFrimeByUrl)(_this4.data.bgItem.url, function (sf) {
-        var gs = groundBg.getComponent(cc.Sprite);
-        gs.spriteFrame = sf;
-        groundBg.active = true;
-        var dbCount = 0;
-        var finishDbCount = 0;
+      e && e.register(t);
+    }
+  }
 
-        for (var _iterator3 = _createForOfIteratorHelperLoose(_this4.data.hotZoneItemArr), _step3; !(_step3 = _iterator3()).done;) {
-          var block = _step3.value;
+  function Qt(t, n) {
+    void 0 === n && (n = {});
+    var r,
+        i = t.initialState,
+        o = new Set(),
+        a = [],
+        s = !1,
+        c = (r = {
+      id: n.id,
+      send: function send(e) {
+        a.push(e), function () {
+          if (!s) {
+            for (s = !0; a.length > 0;) {
+              var e = a.shift();
+              i = t.transition(i, e, u), o.forEach(function (t) {
+                return t.next(i);
+              });
+            }
 
-          if (block.gIdx == '0' || block.gIdx == '1') {
-            dbCount++;
+            s = !1;
           }
-        }
-
-        for (var _iterator4 = _createForOfIteratorHelperLoose(_this4.data.hotZoneItemArr), _step4; !(_step4 = _iterator4()).done;) {
-          var _block = _step4.value;
-
-          if (_block.gIdx == '2') {
-            (function () {
-              var s1 = (ground.width / _block.imgSizeW + ground.height / _block.imgSizeH) / 2;
-              var node = new cc.Node();
-              node.parent = ground;
-              var spr = node.addComponent(cc.Sprite);
-              (0, _util.getSpriteFrimeByUrl)(_block.pic_url, function (sf) {
-                spr.spriteFrame = sf;
-                node.scale = s1;
-              });
-            })();
+        }();
+      },
+      getSnapshot: function getSnapshot() {
+        return i;
+      },
+      subscribe: function subscribe(t, e, n) {
+        var r = z(t, e, n);
+        return o.add(r), r.next(i), {
+          unsubscribe: function unsubscribe() {
+            o["delete"](r);
           }
+        };
+      }
+    }, _e({
+      subscribe: function subscribe() {
+        return {
+          unsubscribe: function unsubscribe() {}
+        };
+      },
+      id: "anonymous",
+      getSnapshot: function getSnapshot() {}
+    }, r)),
+        u = {
+      parent: n.parent,
+      self: c,
+      id: n.id || "anonymous",
+      observers: o
+    };
+    return i = t.start ? t.start(u) : i, c;
+  }
 
-          if (_block.gIdx == '0' || _block.gIdx == '1') {
-            (function () {
-              var n = new cc.Node();
-              n.scale = 0.25;
-              n.parent = ground;
-              n.active = false;
+  var Wt,
+      Yt = {
+    sync: !1,
+    autoForward: !1
+  };
+  (Wt = t.InterpreterStatus || (t.InterpreterStatus = {}))[Wt.NotStarted = 0] = "NotStarted", Wt[Wt.Running = 1] = "Running", Wt[Wt.Stopped = 2] = "Stopped";
 
-              if (_block.animType == 'spine') {
-                var skeleton = n.addComponent(sp.Skeleton);
-                n.isSpine = true;
-                (0, _util.loadSpine)(skeleton, _block.texPngData.name, {
-                  tex: _block.texPngData.url,
-                  atlas: _block.texJsonData.url,
-                  ske: _block.skeJsonData.url
-                }).then(function (_ref) {
-                  var width = _ref.width,
-                      height = _ref.height;
-                  n.width = width;
-                  n.height = height;
-                  n.active = true; // db.playAnimation('null', 0);
-                  // skeleton.setToSetupPose();
+  var Zt = function () {
+    function n(r, i) {
+      var o = this;
+      void 0 === i && (i = n.defaultOptions), this.machine = r, this.scheduler = new Ut(), this.delayedEventsMap = {}, this.listeners = new Set(), this.contextListeners = new Set(), this.stopListeners = new Set(), this.doneListeners = new Set(), this.eventListeners = new Set(), this.sendListeners = new Set(), this.initialized = !1, this.status = t.InterpreterStatus.NotStarted, this.children = new Map(), this.forwardTo = new Set(), this.init = this.start, this.send = function (e, n) {
+        if (T(e)) return o.batch(e), o.state;
+        var r = L(V(e, n));
+        if (o.status === t.InterpreterStatus.Stopped) return o.state;
+        if (o.status !== t.InterpreterStatus.Running && !o.options.deferEvents) throw new Error('Event "'.concat(r.name, '" was sent to uninitialized service "').concat(o.machine.id, '". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.\nEvent: ').concat(JSON.stringify(r.data)));
+        return o.scheduler.schedule(function () {
+          o.forward(r);
+          var t = o.nextState(r);
+          o.update(t, r);
+        }), o._state;
+      }, this.sendTo = function (n, r) {
+        var i,
+            a = o.parent && (r === t.SpecialTargets.Parent || o.parent.id === r),
+            s = a ? o.parent : A(r) ? o.children.get(r) || Xt(r) : (i = r) && "function" == typeof i.send ? r : void 0;
+        if (s) "machine" in s ? s.send(_e(_e({}, n), {
+          name: n.name === at ? "".concat(At(o.id)) : n.name,
+          origin: o.sessionId
+        })) : s.send(n.data);else if (!a) throw new Error("Unable to send event to child '".concat(r, "' from service '").concat(o.id, "'."));
+      };
 
-                  skeleton.setAnimation(0, 'enlarge', true);
+      var a = _e(_e({}, n.defaultOptions), i),
+          s = a.clock,
+          c = a.logger,
+          u = a.parent,
+          h = a.id,
+          f = void 0 !== h ? h : r.id;
 
-                  _this4._allAnimationNodes.push(n);
+      this.id = f, this.logger = c, this.clock = s, this.parent = u, this.options = a, this.scheduler = new Ut({
+        deferEvents: this.options.deferEvents
+      }), this.sessionId = qt();
+    }
 
-                  finishDbCount++;
-                  console.log(finishDbCount, dbCount);
+    return Object.defineProperty(n.prototype, "initialState", {
+      get: function get() {
+        var t = this;
+        return this._initialState ? this._initialState : jt(this, function () {
+          return t._initialState = t.machine.initialState, t._initialState;
+        });
+      },
+      enumerable: !1,
+      configurable: !0
+    }), Object.defineProperty(n.prototype, "state", {
+      get: function get() {
+        return this._state;
+      },
+      enumerable: !1,
+      configurable: !0
+    }), n.prototype.execute = function (t, e) {
+      var n, i;
 
-                  if (finishDbCount == dbCount) {
-                    _this4.loadEnd();
-                  }
-                })["catch"](function () {
-                  finishDbCount++;
-                  console.log(finishDbCount, dbCount);
+      try {
+        for (var o = r(t.actions), a = o.next(); !a.done; a = o.next()) {
+          var s = a.value;
+          this.exec(s, t, e);
+        }
+      } catch (t) {
+        n = {
+          error: t
+        };
+      } finally {
+        try {
+          a && !a.done && (i = o["return"]) && i.call(o);
+        } finally {
+          if (n) throw n.error;
+        }
+      }
+    }, n.prototype.update = function (t, e) {
+      var n,
+          i,
+          o,
+          a,
+          s,
+          c,
+          u,
+          h,
+          f = this;
+      if (t._sessionid = this.sessionId, this._state = t, this.options.execute && this.execute(this.state), this.children.forEach(function (t) {
+        f.state.children[t.id] = t;
+      }), this.devTools && this.devTools.send(e.data, t), t.event) try {
+        for (var l = r(this.eventListeners), d = l.next(); !d.done; d = l.next()) {
+          (0, d.value)(t.event);
+        }
+      } catch (t) {
+        n = {
+          error: t
+        };
+      } finally {
+        try {
+          d && !d.done && (i = l["return"]) && i.call(l);
+        } finally {
+          if (n) throw n.error;
+        }
+      }
 
-                  if (finishDbCount == dbCount) {
-                    _this4.loadEnd();
-                  }
-                });
-              } else {
-                var db = n.addComponent(dragonBones.ArmatureDisplay);
-                (0, _util.loadDragonBones)(db, {
-                  tex: _block.texPngData.url,
-                  atlas: _block.texJsonData.url,
-                  ske: _block.skeJsonData.url
-                }).then(function (_ref2) {
-                  var width = _ref2.width,
-                      height = _ref2.height;
-                  n.width = width;
-                  n.height = height;
-                  n.active = true;
-                  db.playAnimation('null', 0);
+      try {
+        for (var p = r(this.listeners), v = p.next(); !v.done; v = p.next()) {
+          (0, v.value)(t, t.event);
+        }
+      } catch (t) {
+        o = {
+          error: t
+        };
+      } finally {
+        try {
+          v && !v.done && (a = p["return"]) && a.call(p);
+        } finally {
+          if (o) throw o.error;
+        }
+      }
 
-                  _this4._allAnimationNodes.push(n);
+      try {
+        for (var y = r(this.contextListeners), g = y.next(); !g.done; g = y.next()) {
+          (0, g.value)(this.state.context, this.state.history ? this.state.history.context : void 0);
+        }
+      } catch (t) {
+        s = {
+          error: t
+        };
+      } finally {
+        try {
+          g && !g.done && (c = y["return"]) && c.call(y);
+        } finally {
+          if (s) throw s.error;
+        }
+      }
 
-                  finishDbCount++;
-                  console.log(finishDbCount, dbCount);
+      var m = H(t.configuration || [], this.machine);
 
-                  if (finishDbCount == dbCount) {
-                    _this4.loadEnd();
-                  }
-                })["catch"](function () {
-                  finishDbCount++;
-                  console.log(finishDbCount, dbCount);
-
-                  if (finishDbCount == dbCount) {
-                    _this4.loadEnd();
-                  }
-                });
-              }
-
-              if (_block.gIdx == '0') {
-                var rectInfo = {
-                  node: n,
-                  audio_url: _block.audio_url,
-                  rect: {
-                    x: _block.rect.x / baseRect.width,
-                    y: _block.rect.y / baseRect.height,
-                    width: _block.rect.width / baseRect.width,
-                    height: _block.rect.height / baseRect.height
-                  }
-                };
-
-                _this4._figurePointRectArray.push(rectInfo); // this.addRectNodeListener(block);
-
-
-                if (_block.labelText) {
-                  var k = +_block.labelText * 1000;
+      if (this.state.configuration && m) {
+        var S = t.configuration.find(function (t) {
+          return "final" === t.type && t.parent === f.machine;
+        }),
+            w = S && S.doneData ? x(S.doneData, t.context, e) : void 0;
 
-                  if (!isNaN(k)) {
-                    _this4._hintsNodeList.push({
-                      node: n,
-                      after: k
-                    });
-                  }
-                }
-              }
-            })();
+        try {
+          for (var b = r(this.doneListeners), _ = b.next(); !_.done; _ = b.next()) {
+            (0, _.value)(Nt(this.id, w));
+          }
+        } catch (t) {
+          u = {
+            error: t
+          };
+        } finally {
+          try {
+            _ && !_.done && (h = b["return"]) && h.call(b);
+          } finally {
+            if (u) throw u.error;
           }
         }
-      }); // console.log(this.data);
 
-      console.log('resource perload finish'); // <<<<<<< HEAD
-      // =======
-      // 			if (window && window["air"]) {
-      // 				// cc.find('Canvas').opacity = 0;
-      // 				window.air.onCourseInScreen = (next) => {
-      // 					// cc.find('Canvas').opacity = 255;
-      // 					this.loadEnd();
-      // 					next();
-      // 				}
-      // 				window.air.hideAirClassLoading();
-      // 			} else {
-      // 				this.loadEnd();
-      // 			}
-      // >>>>>>> 2d461e1910571bcfc6ad4dc93c2cedafc20923ea
+        this.stop();
+      }
+    }, n.prototype.onTransition = function (e) {
+      return this.listeners.add(e), this.status === t.InterpreterStatus.Running && e(this.state, this.state.event), this;
+    }, n.prototype.subscribe = function (e, n, r) {
+      var i,
+          o = this;
+      if (!e) return {
+        unsubscribe: function unsubscribe() {}
+      };
+      var a = r;
+      return "function" == typeof e ? i = e : (i = e.next.bind(e), a = e.complete.bind(e)), this.listeners.add(i), this.status === t.InterpreterStatus.Running && i(this.state), a && this.onDone(a), {
+        unsubscribe: function unsubscribe() {
+          i && o.listeners["delete"](i), a && o.doneListeners["delete"](a);
+        }
+      };
+    }, n.prototype.onEvent = function (t) {
+      return this.eventListeners.add(t), this;
+    }, n.prototype.onSend = function (t) {
+      return this.sendListeners.add(t), this;
+    }, n.prototype.onChange = function (t) {
+      return this.contextListeners.add(t), this;
+    }, n.prototype.onStop = function (t) {
+      return this.stopListeners.add(t), this;
+    }, n.prototype.onDone = function (t) {
+      return this.doneListeners.add(t), this;
+    }, n.prototype.off = function (t) {
+      return this.listeners["delete"](t), this.eventListeners["delete"](t), this.sendListeners["delete"](t), this.stopListeners["delete"](t), this.doneListeners["delete"](t), this.contextListeners["delete"](t), this;
+    }, n.prototype.start = function (e) {
+      var n = this;
+      if (this.status === t.InterpreterStatus.Running) return this;
+      $t(this.sessionId, this), this.initialized = !0, this.status = t.InterpreterStatus.Running;
+      var r = void 0 === e ? this.initialState : jt(this, function () {
+        return !A(t = e) && "value" in t && "history" in t ? n.machine.resolveState(e) : n.machine.resolveState(kt.from(e, n.machine.context));
+        var t;
+      });
+      return this.options.devTools && this.attachDev(), this.scheduler.initialize(function () {
+        n.update(r, ht);
+      }), this;
+    }, n.prototype.stop = function () {
+      var e,
+          n,
+          i,
+          o,
+          a,
+          c,
+          u,
+          h,
+          f,
+          l,
+          d = this;
 
-      cc.debug.setDisplayStats(false);
-    });
-  },
-  loadEnd: function loadEnd() {
-    if (window && window["air"] && window["air"].hideAirClassLoading) {
-      window["air"].hideAirClassLoading();
-    }
+      try {
+        for (var p = r(this.listeners), v = p.next(); !v.done; v = p.next()) {
+          var y = v.value;
+          this.listeners["delete"](y);
+        }
+      } catch (t) {
+        e = {
+          error: t
+        };
+      } finally {
+        try {
+          v && !v.done && (n = p["return"]) && n.call(p);
+        } finally {
+          if (e) throw e.error;
+        }
+      }
 
-    this.initData(); // this.initAudio();
-    // this.initView();
+      try {
+        for (var g = r(this.stopListeners), m = g.next(); !m.done; m = g.next()) {
+          (y = m.value)(), this.stopListeners["delete"](y);
+        }
+      } catch (t) {
+        i = {
+          error: t
+        };
+      } finally {
+        try {
+          m && !m.done && (o = g["return"]) && o.call(g);
+        } finally {
+          if (i) throw i.error;
+        }
+      }
 
-    this.initBg(); // this.initListener();
+      try {
+        for (var S = r(this.contextListeners), x = S.next(); !x.done; x = S.next()) {
+          y = x.value;
+          this.contextListeners["delete"](y);
+        }
+      } catch (t) {
+        a = {
+          error: t
+        };
+      } finally {
+        try {
+          x && !x.done && (c = S["return"]) && c.call(S);
+        } finally {
+          if (a) throw a.error;
+        }
+      }
 
-    this.debugGraphics();
-    this.createStateMachine();
-  },
-  _cantouch: null,
-  initData: function initData() {
-    // 所有全局变量 默认都是null 
-    this._cantouch = true;
-  },
-  // audioBtn: null,
-  // initAudio() {
-  // 	const audioNode = cc.find('Canvas/res/audio');
-  // 	const getAudioByResName = (resName) => {
-  // 		return audioNode.getChildByName(resName).getComponent(cc.AudioSource);
-  // 	}
-  // 	this.audioBtn = getAudioByResName('btn');
-  // },
-  // initView() {
-  // 	// this.initBg();
-  // 	// this.initPic();
-  // 	// this.initBtn();
-  // 	this.initIcon();
-  // },
-  addRectNodeListener: function addRectNodeListener(data) {
-    var bg = cc.find("Canvas/frame-border/ground/bg");
-    var rate = bg.scale * bg.width / this.data.bgItem.rect.width;
-    var rectNode = new cc.Node();
-    rectNode.name = 'rect' + data.index;
-    bg.addChild(rectNode);
-    var ctx = rectNode.addComponent(cc.Graphics); // 红色矩形
+      try {
+        for (var w = r(this.doneListeners), b = w.next(); !b.done; b = w.next()) {
+          y = b.value;
+          this.doneListeners["delete"](y);
+        }
+      } catch (t) {
+        u = {
+          error: t
+        };
+      } finally {
+        try {
+          b && !b.done && (h = w["return"]) && h.call(w);
+        } finally {
+          if (u) throw u.error;
+        }
+      }
 
-    ctx.lineWidth = 4;
-    ctx.strokeColor = cc.Color.BLACK;
-    ctx.fillColor = cc.Color.WHITE.setA(100);
-    var scale = rate / bg.scaleY;
-    rectNode.width = data.rect.width * scale;
-    rectNode.height = data.rect.height * scale;
-    rectNode.x = -bg.width / 2 + data.rect.x * scale;
-    rectNode.y = bg.height / 2 - data.rect.height * scale - data.rect.y * scale;
-    rectNode.anchorX = rectNode.anchorY = 0; // if (pageData.bgItem.isShowDebugLine) {
+      if (!this.initialized) return this;
+      this.state.configuration.forEach(function (t) {
+        var e, n;
 
-    ctx.rect(0, 0, rectNode.width, rectNode.height); // }
+        try {
+          for (var i = r(t.definition.exit), o = i.next(); !o.done; o = i.next()) {
+            var a = o.value;
+            d.exec(a, d.state);
+          }
+        } catch (t) {
+          e = {
+            error: t
+          };
+        } finally {
+          try {
+            o && !o.done && (n = i["return"]) && n.call(i);
+          } finally {
+            if (e) throw e.error;
+          }
+        }
+      }), this.children.forEach(function (t) {
+        N(t.stop) && t.stop();
+      });
 
-    ctx.stroke();
-    ctx.fill();
-  },
-  initBg: function initBg() {
-    var bgNode = cc.find('Canvas/bg');
-    bgNode.scale = this._mapScaleMax;
-    console.log('this._mapScaleMax', this._mapScaleMax);
-  },
-
-  /*initBtn() {
-  		this.curPage = 0;
-  	const bottomPart = cc.find('Canvas/bottomPart');
-  	bottomPart.zIndex = 5; // 提高层级
-  		bottomPart.x = bottomPart.parent.width / 2;
-  	bottomPart.y = -bottomPart.parent.height / 2;
-  		const leftBtnNode = bottomPart.getChildByName('btn_left');
-  	//节点中添加了button组件 则可以添加click事件监听
-  	leftBtnNode.on('click', () => {
-  		if (!this._cantouch) {
-  			return;
-  		}
-  		if (this.curPage == 0) {
-  			return;
-  		}
-  		this.curPage = 0
-  		this.leftMove();
-  			// 游戏结束时需要调用这个方法通知系统作业完成
-  		onHomeworkFinish();
-  			cc.audioEngine.play(this.audioBtn.clip, false, 0.8)
-  	})
-  		const rightBtnNode = bottomPart.getChildByName('btn_right');
-  	//节点中添加了button组件 则可以添加click事件监听
-  	rightBtnNode.on('click', () => {
-  		if (!this._cantouch) {
-  			return;
-  		}
-  		if (this.curPage == 1) {
-  			return;
-  		}
-  			this.curPage = 1
-  		this.rightMove();
-  			cc.audioEngine.play(this.audioBtn.clip, false, 0.5)
-  	})
-  },*/
-  // update (dt) {},
-  _timeoutIds: null,
-  _intervalIds: null,
-  // 生命周期
-  onDestroy: function onDestroy() {
-    console.log('op15 onDestroy');
-
-    this._timeoutIds.forEach(function (id) {
-      clearTimeout(id);
-    });
-
-    this._intervalIds.forEach(function (id) {
-      clearInterval(id);
-    });
-
-    this.gameMachineService.stopChild();
-    this.gameMachineService.stop();
-
-    if (window.courseware && window.courseware.closeOsmoFingerRead) {
-      if (this.isOpenedOsmoFingerRead) {
-        window.courseware.closeOsmoFingerRead();
+      try {
+        for (var _ = r(s(this.delayedEventsMap)), E = _.next(); !E.done; E = _.next()) {
+          var T = E.value;
+          this.clock.clearTimeout(this.delayedEventsMap[T]);
+        }
+      } catch (t) {
+        f = {
+          error: t
+        };
+      } finally {
+        try {
+          E && !E.done && (l = _["return"]) && l.call(_);
+        } finally {
+          if (f) throw f.error;
+        }
       }
-    }
-  }
-});
-
-cc._RF.pop();
-                    }
-                    if (nodeEnv) {
-                        __define(__module.exports, __require, __module);
-                    }
-                    else {
-                        __quick_compile_project__.registerModuleFunc(__filename, function () {
-                            __define(__module.exports, __require, __module);
-                        });
-                    }
-                })();
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9PUDE1L3NjZW5lL09QMTUuanMiXSwibmFtZXMiOlsicHVyZSIsImFjdGlvbnMiLCJzZW5kIiwicmFpc2UiLCJzZW5kUGFyZW50IiwiY2MiLCJDbGFzcyIsIkNvbXBvbmVudCIsInByb3BlcnRpZXMiLCJyaWdodEF1ZGlvIiwidHlwZSIsIkF1ZGlvQ2xpcCIsIndyb25nQXVkaW8iLCJsb2dvQ2F0IiwiTm9kZSIsInBsYXlBbmkiLCJpZHgiLCJuYW1lIiwib3B0aW9ucyIsInRpbWVzIiwiY2IiLCJjYWxsYmFjayIsIm5vZGUiLCJfZmlndXJlUG9pbnRSZWN0QXJyYXkiLCJkcmFnb25EaXNwbGF5IiwiZ2V0Q29tcG9uZW50IiwiZHJhZ29uQm9uZXMiLCJBcm1hdHVyZURpc3BsYXkiLCJzdGF0ZSIsInBsYXlBbmltYXRpb24iLCJvbkxvYWQiLCJfdGltZW91dElkcyIsIl9pbnRlcnZhbElkcyIsImluaXRTY2VuZURhdGEiLCJpbml0U2l6ZSIsIndpbmRvdyIsImNjYyIsIl9pbWFnZVJlc0xpc3QiLCJfYXVkaW9SZXNMaXN0IiwiX2FuaW1hUmVzTGlzdCIsIl9sYXN0RmluZ2VyUG9zaXRpb24iLCJfaGludHNOb2RlTGlzdCIsIl9hbGxBbmltYXRpb25Ob2RlcyIsInBvcyIsImRpcnR5IiwiX2Rlc2lnblNpemUiLCJfZnJhbWVTaXplIiwiX21hcFNjYWxlTWluIiwiX21hcFNjYWxlTWF4IiwiX2NvY29zU2NhbGUiLCJzY3JlZW5fc2l6ZSIsInZpZXciLCJnZXRGcmFtZVNpemUiLCJ3aWR0aCIsImhlaWdodCIsImRlc2lnbl9zaXplIiwiQ2FudmFzIiwiaW5zdGFuY2UiLCJkZXNpZ25SZXNvbHV0aW9uIiwiZiIsImZpdEhlaWdodCIsImZpdFdpZHRoIiwiZnJhbWVTaXplIiwiZ2V0RGVzaWduUmVzb2x1dGlvblNpemUiLCJzeCIsIndpblNpemUiLCJzeSIsIk1hdGgiLCJtaW4iLCJtYXgiLCJjcmVhdGVTdGF0ZU1hY2hpbmUiLCJjaGVjayIsInRhcmdldCIsImNvbmQiLCJjdHgiLCJldnQiLCJjb25zb2xlIiwibG9nIiwicXVlc3Rpb25JbmRleCIsInF1ZXN0aW9uc0NvdW50IiwiUXVlc3Rpb25TdGF0ZSIsImlkIiwiaW5pdGlhbCIsInN0YXRlcyIsImhpbnQiLCJpbnZva2UiLCJzcmMiLCJldmVudCIsInF1ZXN0aW9uUGxheVRpbWVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJxdWVzdGlvbnMiLCJhdWRpb191cmwiLCJvbkRvbmUiLCJvbkVycm9yIiwiYW5zd2VyIiwiYWZ0ZXIiLCJjb250ZXh0Iiwib25SZWNlaXZlIiwic2V0SW50ZXJ2YWwiLCJyZWdpb24iLCJyZXN1bHQiLCJjaGVja0luUmVnaW9uIiwicmVjdCIsInB1c2giLCJjbGVhckludGVydmFsIiwib24iLCJSSUdIVCIsIldST05HIiwicmlnaHQiLCJhbiIsImFjdGl2ZSIsImRkTG9nb0NhdCIsIm9uY2UiLCJFdmVudE9iamVjdCIsIkNPTVBMRVRFIiwid3JvbmciLCJtYXhRdWVzdGlvblRyeVRpbWVzIiwid3JvbmdFZmZlY3QiLCJpbmNsdWRlcyIsImRhdGEiLCJpc1NwaW5lIiwic2tlbGV0b24iLCJzcCIsIlNrZWxldG9uIiwic2V0VG9TZXR1cFBvc2UiLCJzZXRUaW1lb3V0Iiwic2V0QW5pbWF0aW9uIiwiUXVlc3Rpb25zQXJyYXlTdGF0dXMiLCJwbGF5IiwibmV4dCIsIkNIRUNLIiwibGVuZ3RoIiwiYmVnaW4iLCJjb3Vyc2V3YXJlIiwib3Blbk9zbW9GaW5nZXJSZWFkIiwiaXNPcGVuZWRPc21vRmluZ2VyUmVhZCIsImJlZ2luX2F1ZGlvIiwiZ3VpZGUiLCJndWlkZV9hdWRpbyIsInBsYXlpbmciLCJlbnRyeSIsImFzc2V0TWFuYWdlciIsImxvYWRSZW1vdGUiLCJwbGF5aW5nX2F1ZGlvIiwiZXJyIiwiYXVkaW9DbGlwIiwiYXVkaW9FbmdpbmUiLCJwbGF5TXVzaWMiLCJmb3JFYWNoIiwiYmxvY2siLCJleGl0Iiwic3RvcE11c2ljIiwiTkVYVCIsImVuZCIsImNsb3NlT3Ntb0ZpbmdlclJlYWQiLCJlbmRfYXVkaW8iLCJpIiwidCIsImsiLCJfYXJtYXR1cmVLZXkiLCJhZGRFdmVudExpc3RlbmVyIiwiYmVnaW5fc2VwX3RpbWUiLCJnYW1lTWFjaGluZSIsImdhbWVNYWNoaW5lU2VydmljZSIsIm9uVHJhbnNpdGlvbiIsInN0YXJ0IiwiZ2V0RGF0YSIsImJpbmQiLCJnZXREZWZhdWx0RGF0YSIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsInByZWxvYWRJdGVtIiwiYWlyIiwib3Ntb0ZpbmdlclJlYWRDYWxsYmFjayIsInJlc3VsdE9iaiIsImZpbmdlcl9wb3NfaW5fcGFnZSIsInAiLCJ4IiwieSIsImRlYnVnUG9pbnRlciIsImlzRGVidWciLCJyIiwidyIsImgiLCJmdW5jIiwibWlkZGxlTGF5ZXIiLCJmaW5kIiwibWlkZGxlTGF5ZXJDb21wb25lbnQiLCJhZGRQcmVsb2FkSW1hZ2UiLCJhZGRQcmVsb2FkQXVkaW8iLCJhZGRQcmVsb2FkQW5pbWEiLCJwcmVsb2FkIiwidXJsIiwiYmdJdGVtIiwiaG90Wm9uZUl0ZW1BcnIiLCJxIiwiZ0lkeCIsInRleFBuZ0RhdGEiLCJwaWNfdXJsIiwicHJlcGFyZUF1ZGlvQ2xpcCIsImtleSIsIndyb25nX2F1ZGlvIiwicmlnaHRfYXVkaW8iLCJ3cm9uZ19hdWRpbzEiLCJ3cm9uZ19hdWRpbzIiLCJib3hEZWJ1Z2dlciIsIlBPSU5URVJfTk9ERSIsInBhcmVudCIsImFkZENvbXBvbmVudCIsIkdyYXBoaWNzIiwiZ3JhcCIsImNsZWFyIiwiZ3JvdW5kIiwiYmFzZVciLCJiYXNlSCIsInB4IiwicHkiLCJwbiIsImZpbGxDb2xvciIsImNvbG9yIiwiY2lyY2xlIiwiZmlsbCIsInN0cm9rZSIsImRlYnVnR3JhcGhpY3MiLCJjYW52YXMiLCJiZ1ciLCJiZ0giLCJzY2FsZVgiLCJzY2FsZVkiLCJhZGRlZCIsImFyZWEiLCJkbiIsImxibE5vZGUiLCJsYmwiLCJMYWJlbCIsInN0cmluZyIsInNrZUpzb25EYXRhIiwic3Vic3RyaW5nIiwiZyIsImIiLCJyeCIsInJ5IiwicnciLCJyaCIsImZpbGxSZWN0IiwicHJlbG9hZEFyciIsImNvbmNhdCIsImxvYWRBbnkiLCJpdGVtIiwiZ3JvdW5kQmciLCJiYXNlUmVjdCIsInNmIiwiZ3MiLCJTcHJpdGUiLCJzcHJpdGVGcmFtZSIsImRiQ291bnQiLCJmaW5pc2hEYkNvdW50IiwiczEiLCJpbWdTaXplVyIsImltZ1NpemVIIiwic3ByIiwic2NhbGUiLCJuIiwiYW5pbVR5cGUiLCJ0ZXgiLCJhdGxhcyIsInRleEpzb25EYXRhIiwic2tlIiwidGhlbiIsImxvYWRFbmQiLCJkYiIsInJlY3RJbmZvIiwibGFiZWxUZXh0IiwiaXNOYU4iLCJkZWJ1ZyIsInNldERpc3BsYXlTdGF0cyIsImhpZGVBaXJDbGFzc0xvYWRpbmciLCJpbml0RGF0YSIsImluaXRCZyIsIl9jYW50b3VjaCIsImFkZFJlY3ROb2RlTGlzdGVuZXIiLCJiZyIsInJhdGUiLCJyZWN0Tm9kZSIsImluZGV4IiwiYWRkQ2hpbGQiLCJsaW5lV2lkdGgiLCJzdHJva2VDb2xvciIsIkNvbG9yIiwiQkxBQ0siLCJXSElURSIsInNldEEiLCJhbmNob3JYIiwiYW5jaG9yWSIsImJnTm9kZSIsIm9uRGVzdHJveSIsImNsZWFyVGltZW91dCIsInN0b3BDaGlsZCIsInN0b3AiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7SUFDUUEsT0FBb0NDLGdCQUFwQ0Q7SUFBT0UsT0FBNkJELGdCQUE3QkM7SUFBTUMsUUFBdUJGLGdCQUF2QkU7SUFBT0MsYUFBZ0JILGdCQUFoQkc7QUFHNUJDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBRVIsYUFBU0QsRUFBRSxDQUFDRSxTQUZKO0FBSVJDLEVBQUFBLFVBQVUsRUFBRTtBQUNYO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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RSxJQWpsQ0w7QUFrbENSQyxFQUFBQSxZQUFZLEVBQUUsSUFsbENOO0FBbWxDUjtBQUNBMFEsRUFBQUEsU0FwbENRLHVCQW9sQ0k7QUFDWDlOLElBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLGdCQUFaOztBQUNBLFNBQUs5QyxXQUFMLENBQWlCdUgsT0FBakIsQ0FBeUIsVUFBQXJFLEVBQUUsRUFBSTtBQUM5QjBOLE1BQUFBLFlBQVksQ0FBQzFOLEVBQUQsQ0FBWjtBQUNBLEtBRkQ7O0FBR0EsU0FBS2pELFlBQUwsQ0FBa0JzSCxPQUFsQixDQUEwQixVQUFBckUsRUFBRSxFQUFJO0FBQy9CeUIsTUFBQUEsYUFBYSxDQUFDekIsRUFBRCxDQUFiO0FBQ0EsS0FGRDs7QUFHQSxTQUFLb0Ysa0JBQUwsQ0FBd0J1SSxTQUF4QjtBQUNBLFNBQUt2SSxrQkFBTCxDQUF3QndJLElBQXhCOztBQUNBLFFBQUcxUSxNQUFNLENBQUNvRyxVQUFQLElBQXFCcEcsTUFBTSxDQUFDb0csVUFBUCxDQUFrQnFCLG1CQUExQyxFQUErRDtBQUM5RCxVQUFJLEtBQUtuQixzQkFBVCxFQUFpQztBQUNoQ3RHLFFBQUFBLE1BQU0sQ0FBQ29HLFVBQVAsQ0FBa0JxQixtQkFBbEI7QUFDQTtBQUNEO0FBQ0Q7QUFubUNPLENBQVQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG9uSG9tZXdvcmtGaW5pc2gsIFJhbmRvbUludCwgcGxheUF1ZGlvQnlVcmwsIGxvYWREcmFnb25Cb25lcywgZ2V0U3ByaXRlRnJpbWVCeVVybCwgbG9hZFNwaW5lIH0gZnJvbSBcIi4uL3NjcmlwdC91dGlsXCI7XG5pbXBvcnQgeyBkZWZhdWx0RGF0YSB9IGZyb20gXCIuLi9zY3JpcHQvZGVmYXVsdERhdGFcIjtcbmltcG9ydCB7IGFzc2lnbiwgY3JlYXRlTWFjaGluZSwgaW50ZXJwcmV0LCBhY3Rpb25zLCBmb3J3YXJkVG8sIG1hdGNoZXNTdGF0ZSAgfSBmcm9tIFwiLi4vc2NyaXB0L3hzdGF0ZVwiO1xuY29uc3QgeyBwdXJlICwgc2VuZCwgcmFpc2UsIHNlbmRQYXJlbnQgIH0gPSBhY3Rpb25zO1xuXG5cbmNjLkNsYXNzKHtcblxuXHRleHRlbmRzOiBjYy5Db21wb25lbnQsXG5cblx0cHJvcGVydGllczoge1xuXHRcdC8qYW50OiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGFwcGxlOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGJpcmQ6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0Y2FyOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGNhdDoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRjb3c6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0ZHVjazoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRlZ2c6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0ZmFybWVyOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGZpc2g6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0Z2lybDoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRoZW46IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0aG91c2U6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sKi9cblx0XHRyaWdodEF1ZGlvOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuQXVkaW9DbGlwLFxuXHRcdH0sXG5cdFx0d3JvbmdBdWRpbzoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLkF1ZGlvQ2xpcCxcblx0XHR9LFxuXHRcdGxvZ29DYXQ6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlXG5cdFx0fVxuXG5cdH0sXG5cblx0cGxheUFuaShpZHgsIG5hbWUsIG9wdGlvbnMpIHtcblx0XHRjb25zdCB0aW1lcyA9IChvcHRpb25zICYmIG9wdGlvbnMudGltZXMpIHx8IDE7XG5cdFx0Y29uc3QgY2IgPSAob3B0aW9ucyAmJiBvcHRpb25zLmNhbGxiYWNrKSB8fCBudWxsO1xuXHRcdC8vIGNvbnN0IGNhdCA9IGNjLmZpbmQoYENhbnZhcy9mcmFtZS1ib3JkZXIvZ3JvdW5kLyR7bm9kZX1gKTtcblx0XHRjb25zdCBub2RlID0gdGhpcy5fZmlndXJlUG9pbnRSZWN0QXJyYXlbaWR4XS5ub2RlXG5cdFx0dmFyIGRyYWdvbkRpc3BsYXkgPSBub2RlLmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpO1xuXG5cdFx0Y29uc3Qgc3RhdGUgPSBkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24obmFtZSwgdGltZXMpO1xuXHRcdC8vIGRyYWdvbkRpc3BsYXkuYWRkRXZlbnRMaXN0ZW5lcihkcmFnb25Cb25lcy5FdmVudE9iamVjdC5DT01QTEVURSwgKGV2ZW50KSA9PiB7XG5cdFx0Ly8gXHQvL1RPRE8g6L+Z6YeM5YaZ6Kem5Y+R5LqL5Lu2XG5cdFx0Ly8gXHQvL2V2ZW50Lm5hbWXkuLrkuovku7blkI3np7Bcblx0XHQvLyBcdGNvbnNvbGUubG9nKGV2ZW50Lm5hbWUpXG5cdFx0Ly8gfSwgdGhpcyk7XG5cdFx0Ly8gYW5pbWF0aW9uRGlzcGxheS5hZGRFdmVudExpc3RlbmVyKGRyYWdvbkJvbmVzLkV2ZW50T2JqZWN0LkNPTVBMRVRFLCBjb21wbGV0ZUNhbGxiYWNrKTtcblx0XHRyZXR1cm4gc3RhdGU7XG5cdH0sXG5cdC8vIOeUn+WRveWRqOacnyBvbkxvYWRcblx0b25Mb2FkKCkge1xuXHRcdHRoaXMuX3RpbWVvdXRJZHMgPSBbXTtcblx0XHR0aGlzLl9pbnRlcnZhbElkcyA9IFtdO1xuXHRcdHRoaXMuaW5pdFNjZW5lRGF0YSgpO1xuXHRcdHRoaXMuaW5pdFNpemUoKTtcblx0XHR3aW5kb3cuY2NjID0gdGhpcztcblx0fSxcblxuXHRfaW1hZ2VSZXNMaXN0OiBudWxsLFxuXHRfYXVkaW9SZXNMaXN0OiBudWxsLFxuXHRfYW5pbWFSZXNMaXN0OiBudWxsLFxuXG5cdF9sYXN0RmluZ2VyUG9zaXRpb246IG51bGwsXG5cblx0X2hpbnRzTm9kZUxpc3QgOiBudWxsLFxuXHRfZmlndXJlUG9pbnRSZWN0QXJyYXk6IG51bGwsXG5cblx0X2FsbEFuaW1hdGlvbk5vZGVzOiBudWxsLFxuXG5cdGluaXRTY2VuZURhdGEoKSB7XG5cdFx0dGhpcy5faW1hZ2VSZXNMaXN0ID0gW107XG5cdFx0dGhpcy5fYXVkaW9SZXNMaXN0ID0gW107XG5cdFx0dGhpcy5fYW5pbWFSZXNMaXN0ID0gW107XG5cblx0XHR0aGlzLl9hbGxBbmltYXRpb25Ob2RlcyA9IFtdO1xuXHRcdHRoaXMuX2hpbnRzTm9kZUxpc3QgPSBbXTtcblx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb249IHtcblx0XHRcdHBvczogbnVsbCxcblx0XHRcdGRpcnR5OiBmYWxzZVxuXHRcdH07XG5cdFx0dGhpcy5fZmlndXJlUG9pbnRSZWN0QXJyYXkgPSBbXTtcblx0fSxcblxuXHRfZGVzaWduU2l6ZTogbnVsbCwgIC8vIOiuvuiuoeWIhui+qOeOh1xuXHRfZnJhbWVTaXplOiBudWxsLCAgLy8g5bGP5bmV5YiG6L6o546HXG5cdF9tYXBTY2FsZU1pbjogbnVsbCwgIC8vIOWcuuaZr+S4reW4uOeUqOe8qeaUvu+8iOWPluWkp+WAvO+8iVxuXHRfbWFwU2NhbGVNYXg6IG51bGwsICAvLyDlnLrmma/kuK3luLjnlKjnvKnmlL7vvIjlj5blsI/lgLzvvIlcblx0X2NvY29zU2NhbGU6IG51bGwsICAvLyBjb2NvcyDoh6rnvKnmlL4g77yI6L6D5bCR55So5Yiw77yJXG5cdFxuXHRpbml0U2l6ZSgpIHtcblx0XHQvLyDms6jmhI9jYy53aW5TaXpl5Y+q5pyJ5Zyo6YCC6YWN5ZCOKOS/ruaUuWZpdEhlaWdodC9maXRXaWR0aOWQjinmiY3og73ojrflj5bliLDmraPnoa7nmoTlgLws5Zug5q2k5L2/55SoY2MuZ2V0RnJhbWVTaXplKCnmnaXojrflj5bliJ3lp4vnmoTlsY/luZXlpKflsI9cblx0XHRsZXQgc2NyZWVuX3NpemUgPSBjYy52aWV3LmdldEZyYW1lU2l6ZSgpLndpZHRoIC8gY2Mudmlldy5nZXRGcmFtZVNpemUoKS5oZWlnaHRcblx0XHRsZXQgZGVzaWduX3NpemUgPSBjYy5DYW52YXMuaW5zdGFuY2UuZGVzaWduUmVzb2x1dGlvbi53aWR0aCAvIGNjLkNhbnZhcy5pbnN0YW5jZS5kZXNpZ25SZXNvbHV0aW9uLmhlaWdodFxuXHRcdGxldCBmID0gc2NyZWVuX3NpemUgPj0gZGVzaWduX3NpemVcblx0XHRjYy5DYW52YXMuaW5zdGFuY2UuZml0SGVpZ2h0ID0gZlxuXHRcdGNjLkNhbnZhcy5pbnN0YW5jZS5maXRXaWR0aCA9ICFmXG5cblx0XHRjb25zdCBmcmFtZVNpemUgPSBjYy52aWV3LmdldEZyYW1lU2l6ZSgpO1xuXHRcdHRoaXMuX2ZyYW1lU2l6ZSA9IGZyYW1lU2l6ZTtcblxuXHRcdHRoaXMuX2Rlc2lnblNpemUgPSBjYy52aWV3LmdldERlc2lnblJlc29sdXRpb25TaXplKCk7XG5cblx0XHRsZXQgc3ggPSBjYy53aW5TaXplLndpZHRoIC8gZnJhbWVTaXplLndpZHRoO1xuXHRcdGxldCBzeSA9IGNjLndpblNpemUuaGVpZ2h0IC8gZnJhbWVTaXplLmhlaWdodDtcblx0XHR0aGlzLl9jb2Nvc1NjYWxlID0gTWF0aC5taW4oc3gsIHN5KTtcblxuXHRcdHN4ID0gZnJhbWVTaXplLndpZHRoIC8gdGhpcy5fZGVzaWduU2l6ZS53aWR0aDtcblx0XHRzeSA9IGZyYW1lU2l6ZS5oZWlnaHQgLyB0aGlzLl9kZXNpZ25TaXplLmhlaWdodDtcblx0XHR0aGlzLl9tYXBTY2FsZU1pbiA9IE1hdGgubWluKHN4LCBzeSkgKiB0aGlzLl9jb2Nvc1NjYWxlO1xuXHRcdHRoaXMuX21hcFNjYWxlTWF4ID0gTWF0aC5tYXgoc3gsIHN5KSAqIHRoaXMuX2NvY29zU2NhbGU7XG5cdH0sXG5cdGNyZWF0ZVN0YXRlTWFjaGluZSgpe1xuXHRcdGNvbnN0IGNoZWNrID0gIFtcblx0XHRcdFx0XHRcdFx0eyB0YXJnZXQ6ICcjZ2FtZS5lbmQnLCBjb25kOiAoY3R4LCBldnQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnW2Fuc3dlciBORVhUXSBjaGVjayBpZiBlbmQnLCBjdHgucXVlc3Rpb25JbmRleCA+PSBjdHgucXVlc3Rpb25zQ291bnQgLSAxKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gY3R4LnF1ZXN0aW9uSW5kZXggPj0gY3R4LnF1ZXN0aW9uc0NvdW50IC0xXG5cblx0XHRcdFx0XHRcdFx0fSB9LFxuICAgICAgICBcdFx0XHRcdFx0eyB0YXJnZXQ6ICdoaW50JyB9IC8vIHJlZW50ZXIgJ2hpbnQnIHN0YXRlXG5cdFx0XHRcdFx0XHRdXG5cdFx0Y29uc3QgUXVlc3Rpb25TdGF0ZSA9IHtcblx0XHRcdGlkOiAncXVlc3Rpb24nLFxuXHRcdFx0aW5pdGlhbDogJ2hpbnQnLFxuXHRcdFx0c3RhdGVzOiB7XG5cdFx0XHRcdGhpbnQ6IHtcblx0XHRcdFx0XHRpbnZva2U6IHtcblx0XHRcdFx0XHRcdHNyYzogKGN0eCwgZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYFtoaW50XSBwbGF5IHF1ZXN0aW9uICR7Y3R4LnF1ZXN0aW9uSW5kZXh9OiAke2N0eC5xdWVzdGlvblBsYXlUaW1lcyB9IGF1ZGlvYCk7XG5cdFx0XHRcdFx0XHRcdGN0eC5xdWVzdGlvblBsYXlUaW1lcyArPSAxO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0cGxheUF1ZGlvQnlVcmwoY3R4LnF1ZXN0aW9uc1tjdHgucXVlc3Rpb25JbmRleF0uYXVkaW9fdXJsLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnaGludCBmaW5pc2gnKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoKVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25Eb25lOiAnYW5zd2VyJyxcblx0XHRcdFx0XHRcdG9uRXJyb3I6ICdhbnN3ZXInXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhbnN3ZXI6IHtcblx0XHRcdFx0XHRhZnRlcjoge1xuXHRcdFx0XHRcdFx0ODAwMDogW1xuICAgICAgICBcdFx0XHRcdFx0eyBcblx0XHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICd3cm9uZycsXG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdH0gLy8gcmVlbnRlciAnaGludCcgc3RhdGVcblx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0aW52b2tlOiB7XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdHNyYzogKGNvbnRleHQsIGV2ZW50KSA9PiAoY2FsbGJhY2ssIG9uUmVjZWl2ZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ1thbnN3ZXJdIHRoaW5raW5nIGFuZCBwbGF5aW5nJyk7XG5cdFx0XHRcdFx0XHRcdC8vIGNoZWNrIGV2ZXJ5IHNlY29uZFxuXHRcdFx0XHRcdFx0XHRjb25zdCBpZCA9IHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcImFhYWFhYVwiKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5kaXJ0eSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjb25zdCByZWdpb24gPSBjb250ZXh0LnF1ZXN0aW9uc1tjb250ZXh0LnF1ZXN0aW9uSW5kZXhdO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuY2hlY2tJblJlZ2lvbihyZWdpb24ucmVjdCk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnW0dlbmlzZSBKU10gY2hlY2tJblJlZ2lvbicgKyByZXN1bHQpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FsbGJhY2soJ1JJR0hUJylcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FsbGJhY2soJ1dST05HJylcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0sIDMwMCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2ludGVydmFsSWRzLnB1c2goaWQpO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHQvLyBQZXJmb3JtIGNsZWFudXBcblx0XHRcdFx0XHRcdFx0cmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaWQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0b246IHtcblx0XHRcdFx0XHRcdFJJR0hUOiB7XG5cdFx0XHRcdFx0XHRcdHRhcmdldDogJ3JpZ2h0Jyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRXUk9ORzoge1xuXHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICd3cm9uZycsXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRcblx0XHRcdFx0cmlnaHQ6IHtcblx0XHRcdFx0XHRpbnZva2U6IHtcblx0XHRcdFx0XHRcdHNyYzogKGNvbnRleHQsIGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5wb3MgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24uZGlydHkgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnYW5zd2VyIHJpZ2h0Jyk7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gdGhpcy5wbGF5QW5pKGNvbnRleHQucXVlc3Rpb25JbmRleCwgJ25vcm1hbCcpXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgYW4gPSBjb250ZXh0LnF1ZXN0aW9uc1tjb250ZXh0LnF1ZXN0aW9uSW5kZXhdLm5vZGU7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2luIHJpZ2h0ICcgKyAodHlwZW9mIGFuKSlcblx0XHRcdFx0XHRcdFx0XHRhbi5hY3RpdmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRyYWdvbkRpc3BsYXkgPSBhbi5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdFx0XHRkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24oJ25vcm1hbCcsIDApO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRkTG9nb0NhdCA9IHRoaXMubG9nb0NhdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KVxuXHRcdFx0XHRcdFx0XHRcdGRkTG9nb0NhdC5wbGF5QW5pbWF0aW9uKCdyaWdodCcsIDEpXG5cdFx0XHRcdFx0XHRcdFx0ZGRMb2dvQ2F0Lm9uY2UoZHJhZ29uQm9uZXMuRXZlbnRPYmplY3QuQ09NUExFVEUsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2dvQ2F0LmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpLnBsYXlBbmltYXRpb24oJ25vcm1hbCcsIDApXG5cdFx0XHRcdFx0XHRcdFx0fSwgdGhpcylcblxuXHRcdFx0XHRcdFx0XHRcdHBsYXlBdWRpb0J5VXJsKHRoaXMucmlnaHRBdWRpbywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgpXG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25Eb25lOiB7XG5cdFx0XHRcdFx0XHRcdHRhcmdldDogJyNRdWVzdGlvbnNBcnJheS5uZXh0Jyxcblx0XHRcdFx0XHRcdFx0YWN0aW9uczogcmFpc2UoJ0NIRUNLJylcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRvbkVycm9yOiB7XG5cdFx0XHRcdFx0XHRcdHRhcmdldDogJyNRdWVzdGlvbnNBcnJheS5uZXh0Jyxcblx0XHRcdFx0XHRcdFx0YWN0aW9uczogcmFpc2UoJ0NIRUNLJylcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHdyb25nOntcblx0XHRcdFx0XHRpbnZva2U6IHtcblx0XHRcdFx0XHRcdHNyYzogKGNvbnRleHQsIGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5wb3MgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24uZGlydHkgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnYW5zd2VyIHdyb25nJywgY29udGV4dC5xdWVzdGlvbkluZGV4LCBjb250ZXh0LnF1ZXN0aW9uUGxheVRpbWVzICwgY29udGV4dC5tYXhRdWVzdGlvblRyeVRpbWVzKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBkZExvZ29DYXQgPSB0aGlzLmxvZ29DYXQuZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSlcblx0XHRcdFx0XHRcdFx0XHRkZExvZ29DYXQucGxheUFuaW1hdGlvbignd3JvbmcnLCAxKVxuXHRcdFx0XHRcdFx0XHRcdGRkTG9nb0NhdC5vbmNlKGRyYWdvbkJvbmVzLkV2ZW50T2JqZWN0LkNPTVBMRVRFLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMubG9nb0NhdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KS5wbGF5QW5pbWF0aW9uKCdub3JtYWwnLCAwKVxuXHRcdFx0XHRcdFx0XHRcdH0sIHRoaXMpO1xuXHRcdFx0XHRcdFx0XHRcdGxldCB3cm9uZ0VmZmVjdCA9IHRoaXMud3JvbmdBdWRpbztcblx0XHRcdFx0XHRcdFx0XHQvLyDnrKzkuIDlkoznrKzkuozpopjnmoTmj5DnpLrpn7Ncblx0XHRcdFx0XHRcdFx0XHRpZiAoWzAsIDFdLmluY2x1ZGVzKGNvbnRleHQucXVlc3Rpb25JbmRleCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHdyb25nRWZmZWN0ID0gdGhpcy5kYXRhW2B3cm9uZ19hdWRpbyR7Y29udGV4dC5xdWVzdGlvblBsYXlUaW1lc31gXVxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyDpnZ7nrKzkuIDlkoznrKzkuozpopjvvIzlubbkuJTlgZrnrKzkuozpgY3nmoTmj5DnpLrpn7Ncblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjb250ZXh0LnF1ZXN0aW9uUGxheVRpbWVzID09IDIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3JvbmdFZmZlY3QgPSB0aGlzLmRhdGFbYHdyb25nX2F1ZGlvJHtjb250ZXh0LnF1ZXN0aW9uUGxheVRpbWVzfWBdXG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoY29udGV4dC5xdWVzdGlvblBsYXlUaW1lcyA+PSBjb250ZXh0Lm1heFF1ZXN0aW9uVHJ5VGltZXMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGFuID0gY29udGV4dC5xdWVzdGlvbnNbY29udGV4dC5xdWVzdGlvbkluZGV4XS5ub2RlO1xuXHRcdFx0XHRcdFx0XHRcdFx0YW4uYWN0aXZlID0gdHJ1ZTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFuLmlzU3BpbmUpIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBza2VsZXRvbiA9IGFuLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldFRvU2V0dXBQb3NlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldEFuaW1hdGlvbigwLCAnbm9ybWFsJywgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sIDEpO1xuXHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRyYWdvbkRpc3BsYXkgPSBhbi5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdub3JtYWwnLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ3Nob3cgYW5pbWF0aW9uJywgYW4uYWN0aXZlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0cGxheUF1ZGlvQnlVcmwod3JvbmdFZmZlY3QsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjb250ZXh0LnF1ZXN0aW9uUGxheVRpbWVzID49IGNvbnRleHQubWF4UXVlc3Rpb25UcnlUaW1lcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zdCBhbiA9IGNvbnRleHQucXVlc3Rpb25zW2NvbnRleHQucXVlc3Rpb25JbmRleF0ubm9kZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW4uYWN0aXZlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc3QgZHJhZ29uRGlzcGxheSA9IGFuLmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24oJ25vcm1hbCcsIDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygnc2hvdyBhbmltYXRpb24nLCBhbi5hY3RpdmUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZWplY3QoKVxuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgpXG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25Eb25lOiB7XG5cdFx0XHRcdFx0XHRcdHRhcmdldDogJ2hpbnQnLFxuXHRcdFx0XHRcdFx0XHQvLyBhY3Rpb25zOiByYWlzZSgnQ0hFQ0snKVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG9uRXJyb3I6IHtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnI1F1ZXN0aW9uc0FycmF5Lm5leHQnLFxuXHRcdFx0XHRcdFx0XHRhY3Rpb25zOiByYWlzZSgnQ0hFQ0snKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgUXVlc3Rpb25zQXJyYXlTdGF0dXMgPSB7XG5cdFx0XHRpZDogJ1F1ZXN0aW9uc0FycmF5Jyxcblx0XHRcdGluaXRpYWw6ICdwbGF5Jyxcblx0XHRcdHN0YXRlczoge1xuXHRcdFx0XHRwbGF5OiB7XG5cdFx0XHRcdFx0Li4uUXVlc3Rpb25TdGF0ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRuZXh0OiB7XG5cdFx0XHRcdFx0b246IHtcblx0XHRcdFx0XHRcdENIRUNLOiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICcjZ2FtZS5lbmQnLFxuXHRcdFx0XHRcdFx0XHRcdGNvbmQ6IChjdHgsIGV2dCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3R4LnF1ZXN0aW9uSW5kZXggKz0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdGN0eC5xdWVzdGlvblBsYXlUaW1lcyA9IDBcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCcjZ2FtZS5lbmQnLCAgY3R4LnF1ZXN0aW9uSW5kZXggPj0gY3R4LnF1ZXN0aW9uc0NvdW50IClcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBjdHgucXVlc3Rpb25JbmRleCA+PSBjdHgucXVlc3Rpb25zQ291bnRcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHt0YXJnZXQ6ICdwbGF5J31cblx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRcblx0XHRjb25zdCBzdGF0ZSA9IHtcblx0XHRcdGlkOiAnZ2FtZScsXG5cdFx0XHRpbml0aWFsOiAnYmVnaW4nLFxuXHRcdFx0Y29udGV4dDoge1xuXHRcdFx0XHRxdWVzdGlvbkluZGV4OiAwLFxuXHRcdFx0XHRxdWVzdGlvblBsYXlUaW1lczogMCxcblx0XHRcdFx0bWF4UXVlc3Rpb25UcnlUaW1lczogMixcblx0XHRcdFx0cXVlc3Rpb25zQ291bnQ6IHRoaXMuX2ZpZ3VyZVBvaW50UmVjdEFycmF5Lmxlbmd0aCxcblx0XHRcdFx0cXVlc3Rpb25zOiB0aGlzLl9maWd1cmVQb2ludFJlY3RBcnJheSxcblx0XHRcdH0sXG5cdFx0XHRzdGF0ZXM6IHtcblx0XHRcdFx0YmVnaW46IHtcblx0XHRcdFx0XHRpbnZva2U6IHtcblx0XHRcdFx0XHRcdHNyYzogKGN0eCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2FtZSBiZWdpbiAxJyk7XG5cdFx0XHRcdFx0XHRcdGlmKHdpbmRvdy5jb3Vyc2V3YXJlICYmIHdpbmRvdy5jb3Vyc2V3YXJlLm9wZW5Pc21vRmluZ2VyUmVhZCkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaXNPcGVuZWRPc21vRmluZ2VyUmVhZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LmNvdXJzZXdhcmUub3Blbk9zbW9GaW5nZXJSZWFkKHtcblx0XHRcdFx0XHRcdFx0XHRcdFwicGFnZV9pZFwiOiAyNyxcblx0XHRcdFx0XHRcdFx0XHRcdFwiYm9va19pZFwiOiBcIm9wdzFcIlxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dmFyIGRyYWdvbkRpc3BsYXkgPSB0aGlzLmxvZ29DYXQuZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHN0YXRlID0gZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdiZWdpbicsIDApO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cGxheUF1ZGlvQnlVcmwodGhpcy5kYXRhLmJlZ2luX2F1ZGlvLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2FtZSBiZWdpbiBhdWRpbyBmaW5pc2gnKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoKVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG9uRG9uZTogICdndWlkZScsXG5cdFx0XHRcdFx0XHRvbkVycm9yOiAnZ3VpZGUnXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRcblx0XHRcdFx0Z3VpZGU6e1xuXHRcdFx0XHRcdGludm9rZToge1xuXHRcdFx0XHRcdFx0c3JjOiAoY3R4KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSxyZWplY3QpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRwbGF5QXVkaW9CeVVybCh0aGlzLmRhdGEuZ3VpZGVfYXVkaW8sICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnYW1lIGd1aWRlIGF1ZGlvIGZpbmlzaCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVqZWN0KClcblx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRvbkRvbmU6ICAncGxheWluZycsXG5cdFx0XHRcdFx0XHRvbkVycm9yOiAncGxheWluZydcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRwbGF5aW5nOiB7XG5cdFx0XHRcdFx0ZW50cnk6IChjdHgpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdlbnRyeSBwbGF5IHN0YWdlJyk7XG5cdFx0XHRcdFx0XHR2YXIgZHJhZ29uRGlzcGxheSA9IHRoaXMubG9nb0NhdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdGNvbnN0IHN0YXRlID0gZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdub3JtYWwnLCAwKTtcblx0XHRcdFx0XHRcdGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHRoaXMuZGF0YS5wbGF5aW5nX2F1ZGlvLCAoZXJyLCBhdWRpb0NsaXApID0+IHtcblx0XHRcdFx0XHRcdFx0Y2MuYXVkaW9FbmdpbmUucGxheU11c2ljKGF1ZGlvQ2xpcCwgdHJ1ZSwgMC44KTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0Y3R4LnF1ZXN0aW9ucy5mb3JFYWNoKChibG9jaykgPT4ge1xuXHRcdFx0XHRcdFx0XHRibG9jay5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRleGl0OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZXhpdCBwbGF5IHN0YWdlJyk7XG5cdFx0XHRcdFx0XHRjYy5hdWRpb0VuZ2luZS5zdG9wTXVzaWMoKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG9uOiB7XG5cdFx0XHRcdFx0XHRORVhUOiAnZW5kJ1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Ly8gLi4uUXVlc3Rpb25zU3RhdGVzXG5cdFx0XHRcdFx0Li4uUXVlc3Rpb25zQXJyYXlTdGF0dXNcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW5kOiB7XG5cdFx0XHRcdFx0XHRlbnRyeTogKGN0eCwgZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2dhbWUgZW5kJyk7XG5cdFx0XHRcdFx0XHRcdHZhciBkcmFnb25EaXNwbGF5ID0gdGhpcy5sb2dvQ2F0LmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzdGF0ZSA9IGRyYWdvbkRpc3BsYXkucGxheUFuaW1hdGlvbignZmluaXNoJywgMCk7XG5cdFx0XHRcdFx0XHRcdGlmKHdpbmRvdy5jb3Vyc2V3YXJlICYmIHdpbmRvdy5jb3Vyc2V3YXJlLmNsb3NlT3Ntb0ZpbmdlclJlYWQpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmlzT3BlbmVkT3Ntb0ZpbmdlclJlYWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cuY291cnNld2FyZS5jbG9zZU9zbW9GaW5nZXJSZWFkKClcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRwbGF5QXVkaW9CeVVybCh0aGlzLmRhdGEuZW5kX2F1ZGlvLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2dhbWUgZmluaXNoJyk7XG5cdFx0XHRcdFx0XHRcdFx0b25Ib21ld29ya0ZpbmlzaCgpO1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHQvLyByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIFx0XHRjb25zb2xlLmxvZygnaGludCBmaW5pc2gnKTtcblx0XHRcdFx0XHRcdFx0Ly8gXHRcdHJlc29sdmUoKVxuXHRcdFx0XHRcdFx0XHQvLyBcdH0sIDIwMDApXG5cdFx0XHRcdFx0XHRcdC8vIH0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XG5cdFx0XHRcdH0sXG5cdFx0XHR9XG5cdFx0fTtcblx0XHRjb25zdCBhZnRlciA9IHt9O1xuXHRcdGZvcihsZXQgaSA9IDAgO2kgIDwgdGhpcy5faGludHNOb2RlTGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgdCA9IHRoaXMuX2hpbnRzTm9kZUxpc3RbaV0ubm9kZTtcblx0XHRcdGNvbnN0IGsgPSB0aGlzLl9oaW50c05vZGVMaXN0W2ldLmFmdGVyO1xuXHRcdFx0YWZ0ZXJba109IHtcblx0XHRcdFx0YWN0aW9uczogKCkgPT4ge1xuXG5cdFx0XHRcdFx0aWYgKHQuaXNTcGluZSkge1xuXG5cdFx0XHRcdFx0XHRjb25zdCBza2VsZXRvbiA9IHQuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKTtcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0c2tlbGV0b24uc2V0VG9TZXR1cFBvc2UoKTtcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRza2VsZXRvbi5zZXRBbmltYXRpb24oMCwgJ2VubGFyZ2UnLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHR9LCAxKTtcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0Ly8gc2tlbGV0b24uYW5pbWF0aW9uID0gc2tlbGV0b24uYW5pbWF0aW9uTmFtZXNbMF07XG5cblx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRjb25zdCBkcmFnb25EaXNwbGF5ID0gdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdGRyYWdvbkRpc3BsYXkucGxheUFuaW1hdGlvbignZW5sYXJnZScsIDEpO1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZHJhZ29uRGlzcGxheS5fYXJtYXR1cmVLZXksICdlbmxhcmdlJylcblx0XHRcdFx0XHRcdGRyYWdvbkRpc3BsYXkuYWRkRXZlbnRMaXN0ZW5lcihkcmFnb25Cb25lcy5FdmVudE9iamVjdC5DT01QTEVURSwgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIFRPRE8g6L+Z6YeM5YaZ6Kem5Y+R5LqL5Lu2XG5cdFx0XHRcdFx0XHRcdC8vIGV2ZW50Lm5hbWXkuLrkuovku7blkI3np7Bcblx0XHRcdFx0XHRcdFx0Ly8gZXZlbnQuYXJtYXR1cmUuYW5pbWF0aW9uLnBsYXkoJ25vcm1hbCcsIDApO1xuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhldmVudC5hbmltYXRpb25TdGF0ZS5uYW1lLCBkcmFnb25EaXNwbGF5Ll9hcm1hdHVyZUtleSwgJ2VuZCcpXG5cdFx0XHRcdFx0XHR9LCB0aGlzKTtcblx0XHRcdFx0XHR9XG5cblxuXG5cdFx0XHRcdFx0Ly8gY29uc3QgZHJhZ29uRGlzcGxheSA9IHQuZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSk7XG5cdFx0XHRcdFx0Ly8gZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdlbmxhcmdlJywgMSk7XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZHJhZ29uRGlzcGxheS5fYXJtYXR1cmVLZXksICdlbmxhcmdlJylcblx0XHRcdFx0XHQvLyBkcmFnb25EaXNwbGF5LmFkZEV2ZW50TGlzdGVuZXIoZHJhZ29uQm9uZXMuRXZlbnRPYmplY3QuQ09NUExFVEUsIChldmVudCkgPT4ge1xuXHRcdFx0XHRcdC8vIFx0Ly9UT0RPIOi/memHjOWGmeinpuWPkeS6i+S7tlxuXHRcdFx0XHRcdC8vIFx0Ly9ldmVudC5uYW1l5Li65LqL5Lu25ZCN56ewXG5cdFx0XHRcdFx0Ly8gXHRldmVudC5hcm1hdHVyZS5hbmltYXRpb24ucGxheSgnbm9ybWFsJywgMCk7XG5cdFx0XHRcdFx0Ly8gXHRjb25zb2xlLmxvZyhldmVudC5hbmltYXRpb25TdGF0ZS5uYW1lLCBkcmFnb25EaXNwbGF5Ll9hcm1hdHVyZUtleSwgJ2VuZCcpXG5cdFx0XHRcdFx0Ly8gfSwgdGhpcyk7XG5cdFx0XHRcdH0gXG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICh0aGlzLmRhdGEuYmVnaW5fc2VwX3RpbWUpIHtcblx0XHRcdGNvbnN0IHQgPSArdGhpcy5kYXRhLmJlZ2luX3NlcF90aW1lICogMTAwMDtcblx0XHRcdGFmdGVyW3RdID0ge1xuXHRcdFx0XHRhY3Rpb25zOiAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ2dhbWUgYmVnaW4gMicpO1xuXG5cdFx0XHRcdFx0Zm9yKGxldCBpID0gMCA7aSAgPCB0aGlzLl9hbGxBbmltYXRpb25Ob2Rlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0Y29uc3QgdCA9IHRoaXMuX2FsbEFuaW1hdGlvbk5vZGVzW2ldO1xuXHRcdFx0XHRcdFx0aWYgKHQuaXNTcGluZSkge1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gdC5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnc2tlbGV0b246ICcsIHNrZWxldG9uKTtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldFRvU2V0dXBQb3NlKCk7XG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldEFuaW1hdGlvbigwLCAnbm9ybWFsJywgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdH0sIDEpO1xuXHRcdFx0XHRcdFx0XHRcblxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnc2tlbGV0b24gMjI6ICcsIHNrZWxldG9uKTtcblxuXHRcdFx0XHRcdFx0XHQvLyBza2VsZXRvbi5hbmltYXRpb24gPSBza2VsZXRvbi5hbmltYXRpb25OYW1lc1swXTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgZHJhZ29uRGlzcGxheSA9IHQuZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSk7XG5cdFx0XHRcdFx0XHRcdGRyYWdvbkRpc3BsYXkucGxheUFuaW1hdGlvbignbm9ybWFsJywgMCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHRcdHN0YXRlLnN0YXRlcy5iZWdpbi5hZnRlciA9IGFmdGVyO1xuXG5cblxuXHRcdGNvbnN0IGdhbWVNYWNoaW5lID0gY3JlYXRlTWFjaGluZShzdGF0ZSk7XG5cdFx0d2luZG93LmdhbWVNYWNoaW5lID0gZ2FtZU1hY2hpbmU7XG5cdFx0dGhpcy5nYW1lTWFjaGluZVNlcnZpY2UgPSBpbnRlcnByZXQoZ2FtZU1hY2hpbmUpLm9uVHJhbnNpdGlvbigoc3RhdGUpID0+IHtcblx0XHQvLyBjb25zb2xlLmxvZygxLCBzdGF0ZS52YWx1ZSwgc3RhdGUuY29udGV4dCk7XG5cdFx0fSk7XG5cdFx0dGhpcy5nYW1lTWFjaGluZVNlcnZpY2Uuc3RhcnQoKTtcblx0XHRpZiAod2luZG93LmdhbWVNYWNoaW5lU2VydmljZSkge1xuXHRcdFx0d2luZG93LmdhbWVNYWNoaW5lU2VydmljZSA9IGdhbWVNYWNoaW5lU2VydmljZTtcblx0XHR9XG5cblxuXHR9LFxuXG5cdFxuXG5cblxuXHQvLyDnlJ/lkb3lkajmnJ8gc3RhcnRcblx0c3RhcnQoKSB7XG5cdFx0bGV0IGdldERhdGEgPSB0aGlzLmdldERhdGEuYmluZCh0aGlzKTtcblx0XHRpZiAod2luZG93ICYmIHdpbmRvdy5jb3Vyc2V3YXJlKSB7XG5cdFx0XHRnZXREYXRhID0gd2luZG93LmNvdXJzZXdhcmUuZ2V0RGF0YTtcblx0XHR9XG5cblx0XHRnZXREYXRhKChkYXRhKSA9PiB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygnZGF0YTonLCBkYXRhKTtcblx0XHRcdHRoaXMuZGF0YSA9IGRhdGEgfHwgdGhpcy5nZXREZWZhdWx0RGF0YSgpO1xuXHRcdFx0dGhpcy5kYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKVxuXHRcdFx0XG5cdFx0XHR0aGlzLnByZWxvYWRJdGVtKClcblx0XHR9KTtcblx0XHR3aW5kb3cuYWlyID0gd2luZG93LmFpciB8fCB7fVxuXHRcdGlmICh3aW5kb3cuYWlyKSB7XG5cdFx0XHR3aW5kb3cuYWlyLm9zbW9GaW5nZXJSZWFkQ2FsbGJhY2sgPSAocmVzdWx0KSA9PiB7XG5cdFx0XHRcdGlmICghdGhpcy5nYW1lTWFjaGluZVNlcnZpY2UpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gY29uc3Qgc3QgPSB0aGlzLmdhbWVNYWNoaW5lU2VydmljZS5zdGF0ZS52YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lID09ICdPYmplY3QnIFxuXHRcdFx0XHQvLyAmJiB0aGlzLmdhbWVNYWNoaW5lU2VydmljZS5zdGF0ZS52YWx1ZVsncGxheWluZyddXG5cdFx0XHRcdC8vICYmIHRoaXMuZ2FtZU1hY2hpbmVTZXJ2aWNlLnN0YXRlLnZhbHVlWydwbGF5aW5nJ10uY29uc3RydWN0b3IubmFtZSA9PSAnT2JqZWN0J1xuXHRcdFx0XHQvLyAmJiB0aGlzLmdhbWVNYWNoaW5lU2VydmljZS5zdGF0ZS52YWx1ZVsncGxheWluZyddWydwbGF5J11cblx0XHRcdFx0Ly8gJiYgdGhpcy5nYW1lTWFjaGluZVNlcnZpY2Uuc3RhdGUudmFsdWVbJ3BsYXlpbmcnXVsncGxheSddID09ICdhbnN3ZXInXG5cdFx0XHRcdC8vIGlmIChzdCkge1xuXHRcdFx0XHQvLyB9XG5cdFx0XHRcdGNvbnN0IHJlc3VsdE9iaiA9IEpTT04ucGFyc2UocmVzdWx0KTtcblx0XHRcdFx0Y29uc29sZS5sb2coJ1tHZW5pc2UgSlNdICcrIEpTT04uc3RyaW5naWZ5KHJlc3VsdE9iai5maW5nZXJfcG9zX2luX3BhZ2UpKVxuXHRcdFx0XHRjb25zdCBwID0gcmVzdWx0T2JqLmZpbmdlcl9wb3NfaW5fcGFnZTtcblx0XHRcdFx0aWYgKHAueCA9PSAtMSB8fCBwLnkgPT0gLTEpIHtcblx0XHRcdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24ucG9zID0gbnVsbDtcblx0XHRcdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24uZGlydHkgPSBmYWxzZTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uID0ge1xuXHRcdFx0XHRcdHBvczp7XG5cdFx0XHRcdFx0XHR4OiBwLngsXG5cdFx0XHRcdFx0XHR5OiBwLnlcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGRpcnR5OiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5kZWJ1Z1BvaW50ZXIocC54LCBwLnkpXG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuaXNEZWJ1ZyA9IGZhbHNlO1xuXHRcdFxuXHR9LFxuXHRjaGVja0luUmVnaW9uKHIpIHtcblx0XHRjb25zb2xlLmxvZygncn5+fjogJywgcik7XG5cdFx0aWYgKCF0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24gJiYgIXRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5wb3MpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRjb25zdCBwID0gdGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uID8gdGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uLnBvcyB8fCB7eDowLCB5OjB9IDoge3g6MCwgeTowfTtcblx0XHRjb25zdCB3ID0gcC54ID4gci54ICYmIHAueCA8IChyLnggKyByLndpZHRoKTtcblx0XHRjb25zdCBoID0gcC55ID4gci55ICYmIHAueSA8IChyLnkgKyByLmhlaWdodCk7XG5cdFx0cmV0dXJuIHcgJiYgaDtcblxuXHR9LFxuXG5cdGdldERhdGEoZnVuYykge1xuXHRcdGlmICh3aW5kb3cgJiYgd2luZG93LmNvdXJzZXdhcmUpIHtcblx0XHRcdHdpbmRvdy5jb3Vyc2V3YXJlLmdldERhdGEoZnVuYywgJ3NjZW5lJyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgbWlkZGxlTGF5ZXIgPSBjYy5maW5kKCdtaWRkbGVMYXllcicpO1xuXHRcdGlmIChtaWRkbGVMYXllcikge1xuXHRcdFx0Y29uc3QgbWlkZGxlTGF5ZXJDb21wb25lbnQgPSBtaWRkbGVMYXllci5nZXRDb21wb25lbnQoJ21pZGRsZUxheWVyJyk7XG5cdFx0XHRtaWRkbGVMYXllckNvbXBvbmVudC5nZXREYXRhKGZ1bmMpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGZ1bmModGhpcy5nZXREZWZhdWx0RGF0YSgpKTtcblx0fSxcblxuXHRnZXREZWZhdWx0RGF0YSgpIHtcblx0XHRyZXR1cm4gIHtcImJlZ2luX2F1ZGlvXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzNkMzA3YTAyNjYzZTFjZDY2N2I3Yzk1MTM0MGVjOThiLm1wM1wiLFwiYmVnaW5fc2VwX3RpbWVcIjoxLFwiZ3VpZGVfYXVkaW9cIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2QzMDdhMDI2NjNlMWNkNjY3YjdjOTUxMzQwZWM5OGIubXAzXCIsXCJwbGF5aW5nX2F1ZGlvXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzNkMzA3YTAyNjYzZTFjZDY2N2I3Yzk1MTM0MGVjOThiLm1wM1wiLFwicmlnaHRfYXVkaW9cIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2QzMDdhMDI2NjNlMWNkNjY3YjdjOTUxMzQwZWM5OGIubXAzXCIsXCJ3cm9uZ19hdWRpb1wiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zZDMwN2EwMjY2M2UxY2Q2NjdiN2M5NTEzNDBlYzk4Yi5tcDNcIixcIndyb25nX2F1ZGlvMVwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zZDMwN2EwMjY2M2UxY2Q2NjdiN2M5NTEzNDBlYzk4Yi5tcDNcIixcIndyb25nX2F1ZGlvMlwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zZDMwN2EwMjY2M2UxY2Q2NjdiN2M5NTEzNDBlYzk4Yi5tcDNcIixcImVuZF9hdWRpb1wiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zZDMwN2EwMjY2M2UxY2Q2NjdiN2M5NTEzNDBlYzk4Yi5tcDNcIixcImJnSXRlbVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS84NGVjNmVkYzIwYmNlYWFhOWRiZTgyNDA5MmI2ODYwZC5wbmdcIixcInJlY3RcIjp7XCJ4XCI6NzM2Ljk1LFwieVwiOjAsXCJ3aWR0aFwiOjU5OS4wOSxcImhlaWdodFwiOjc3NX19LFwiaG90Wm9uZUl0ZW1BcnJcIjpbe1wiaWRcIjpcIjE2NTkzMzM2NDU1NzNcIixcImluZGV4XCI6MCxcImF1ZGlvX3VybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS81YTFhMjY3MDg0NWJmZTc2NjYyZTg2ZDlhM2E2OWY4MS5tcDNcIixcIml0ZW1UeXBlXCI6XCJyZWN0XCIsXCJmb250U2NhbGVcIjoxLjYxOTUzMTI1LFwiaW1nU2NhbGVcIjoxLFwiaW1nU2l6ZVdcIjowLFwiaW1nU2l6ZUhcIjowLFwibWFwU2NhbGVcIjoxLjYxOTUzMTI1LFwiZHJhZ0RvdFwiOntcInhcIjoxMDM2LjUsXCJ5XCI6Mzg3LjV9LFwiZ0lkeFwiOlwiMVwiLFwibGFiZWxUZXh0XCI6XCIxXCIsXCJwb3NYXCI6ODg3LjUsXCJwb3NZXCI6MTY1LjUsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8xMzNhMWY2MDcxOWVkMjYyNDdlMzVkYzAyMmQ4Mjg2Mi5qc29uXCIsXCJuYW1lXCI6XCJzcGluZWJveS1wcm8uanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2UwOTQ1YjgyNjVlYTNiODA1M2FmYjgxNGM2Yjg0OWQzLmF0bGFzXCIsXCJuYW1lXCI6XCJzcGluZWJveS1wcm8uYXRsYXNcIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzUxNzU1M2Y1MDIyNDkxNTE0OGY5ZWZjNWI3NTU2Nzk4LnBuZ1wiLFwibmFtZVwiOlwic3BpbmVib3ktcHJvLnBuZ1wifSxcImFuaW1UeXBlXCI6XCJzcGluZVwiLFwicmVjdFwiOntcInhcIjo0OC4wNSxcInlcIjo2NS41LFwid2lkdGhcIjoyMDUsXCJoZWlnaHRcIjoyMDB9fSx7XCJpZFwiOlwiMTY1OTMzNDA5ODkzMFwiLFwiaW5kZXhcIjoxLFwiYXVkaW9fdXJsXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzE2ZWIwNmE2YmViOWU0ZmE3N2M5YjVkMmQ2NDNhYjI5Lm1wM1wiLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjEuNjE5NTMxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjEuNjE5NTMxMjUsXCJkcmFnRG90XCI6e1wieFwiOjEwMzYuNSxcInlcIjozODcuNX0sXCJnSWR4XCI6XCIwXCIsXCJsYWJlbFRleHRcIjpcIjFcIixcInBvc1hcIjoxMjEyLjUsXCJwb3NZXCI6NjQzLjUsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS82NzlmZWQyNmRhYTQ2NDgxOWQ1NTNkZTYzMzFiMzU1Mi5qc29uXCIsXCJuYW1lXCI6XCJhbGllbi1wcm8uanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzY1ZDgyMTRjNmI1YzVkMDQ5NmUxN2FkYjA0MDgyNzZhLmF0bGFzXCIsXCJuYW1lXCI6XCJhbGllbi1wcm8uYXRsYXNcIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2EzMTliMzcyODk5MjM5MzI1YjkwYmI0ZWMwN2I0OTcwLnBuZ1wiLFwibmFtZVwiOlwiYWxpZW4tcHJvLnBuZ1wifSxcImFuaW1UeXBlXCI6XCJzcGluZVwiLFwicmVjdFwiOntcInhcIjozNzUuNTYsXCJ5XCI6NTQzLjUsXCJ3aWR0aFwiOjIwMCxcImhlaWdodFwiOjIwMH19XX1cblx0XHQvLyByZXR1cm4gZGVmYXVsdERhdGE7XG5cdH0sXG5cblx0cHJlbG9hZEl0ZW0oKSB7XG5cdFx0dGhpcy5hZGRQcmVsb2FkSW1hZ2UoKTtcblx0XHR0aGlzLmFkZFByZWxvYWRBdWRpbygpO1xuXHRcdHRoaXMuYWRkUHJlbG9hZEFuaW1hKCk7XG5cdFx0dGhpcy5wcmVsb2FkKCk7XG5cdH0sXG5cblxuXHRhZGRQcmVsb2FkSW1hZ2UoKSB7XG5cblx0XHR0aGlzLl9pbWFnZVJlc0xpc3QucHVzaCh7IHVybDogdGhpcy5kYXRhLmJnSXRlbS51cmx9KTtcblxuXHRcdGZvciAoY29uc3QgcSBvZiB0aGlzLmRhdGEuaG90Wm9uZUl0ZW1BcnIpIHtcblx0XHRcdGlmIChxLmdJZHggPT0nMCcpIHtcblx0XHRcdFx0dGhpcy5faW1hZ2VSZXNMaXN0LnB1c2goeyB1cmw6IHEudGV4UG5nRGF0YS51cmx9KTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHEuZ0lkeCA9PScxJykge1xuXHRcdFx0XHR0aGlzLl9pbWFnZVJlc0xpc3QucHVzaCh7IHVybDogcS50ZXhQbmdEYXRhLnVybCB9KTtcblx0XHRcdH1cblx0XHRcdGlmIChxLmdJZHggPT0nMicpIHtcblx0XHRcdFx0dGhpcy5faW1hZ2VSZXNMaXN0LnB1c2goeyB1cmw6IHEucGljX3VybH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0cHJlcGFyZUF1ZGlvQ2xpcCh1cmwsIGtleSkge1xuXHRcdGlmICh1cmwpIHtcblx0XHRcdGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHVybCwgKGVyciwgYXVkaW9DbGlwKSA9PiB7XG5cdFx0XHRcdGlmIChhdWRpb0NsaXApIHtcblx0XHRcdFx0XHR0aGlzW2tleV0gPSBhdWRpb0NsaXA7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblx0YWRkUHJlbG9hZEF1ZGlvKCkge1xuXG5cdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS5iZWdpbl9hdWRpbyB9KTtcblx0XHQvLyB0aGlzLnByZXBhcmVBdWRpb0NsaXAodGhpcy5kYXRhLmJlZ2luX2F1ZGlvMSwgJ2JlZ2luX2F1ZGlvMScpXG5cdFx0Ly8gdGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS5iZWdpbl9hdWRpbzIgfSk7XG5cdFx0Ly8gdGhpcy5wcmVwYXJlQXVkaW9DbGlwKHRoaXMuZGF0YS5iZWdpbl9hdWRpbzIsICdiZWdpbl9hdWRpbzInKVxuXHRcdHRoaXMuX2F1ZGlvUmVzTGlzdC5wdXNoKHsgdXJsOiB0aGlzLmRhdGEuZ3VpZGVfYXVkaW8gfSk7XG5cdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS5wbGF5aW5nX2F1ZGlvIH0pO1xuXHRcdGlmICh0aGlzLmRhdGEud3JvbmdfYXVkaW8pIHtcblx0XHRcdHRoaXMuX2F1ZGlvUmVzTGlzdC5wdXNoKHsgdXJsOiB0aGlzLmRhdGEud3JvbmdfYXVkaW8gfSk7XG5cdFx0XHR0aGlzLndyb25nQXVkaW8gPSB0aGlzLmRhdGEud3JvbmdfYXVkaW9cblx0XHR9XG5cdFx0aWYgKHRoaXMuZGF0YS5yaWdodF9hdWRpbykge1xuXHRcdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS5yaWdodF9hdWRpbyB9KTtcblx0XHRcdHRoaXMucmlnaHRBdWRpbyA9IHRoaXMuZGF0YS5yaWdodF9hdWRpb1xuXHRcdH1cblx0XHR0aGlzLl9hdWRpb1Jlc0xpc3QucHVzaCh7IHVybDogdGhpcy5kYXRhLndyb25nX2F1ZGlvMSB9KTtcblx0XHR0aGlzLl9hdWRpb1Jlc0xpc3QucHVzaCh7IHVybDogdGhpcy5kYXRhLndyb25nX2F1ZGlvMiB9KTtcblx0XHR0aGlzLl9hdWRpb1Jlc0xpc3QucHVzaCh7IHVybDogdGhpcy5kYXRhLmVuZF9hdWRpbyB9KTtcblxuXG5cdFx0Zm9yIChjb25zdCBxIG9mIHRoaXMuZGF0YS5ob3Rab25lSXRlbUFycikge1xuXHRcdFx0aWYgKHEuZ0lkeCA9PScwJykge1xuXHRcdFx0XHR0aGlzLl9hdWRpb1Jlc0xpc3QucHVzaCh7IHVybDogcS5hdWRpb191cmwgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRkZWJ1Z1BvaW50ZXIoKSB7XG5cdFx0Y29uc3QgYm94RGVidWdnZXIgPSBjYy5maW5kKCdDYW52YXMvYm94LWRlYnVnZ2VyJyk7XG5cdFx0aWYgKCF0aGlzLmlzRGVidWcpIHtcblx0XHRcdGJveERlYnVnZ2VyLmFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoIXRoaXMuUE9JTlRFUl9OT0RFKSB7XG5cdFx0XHR0aGlzLlBPSU5URVJfTk9ERSA9IG5ldyBjYy5Ob2RlKCk7XG5cdFx0XHR0aGlzLlBPSU5URVJfTk9ERS5wYXJlbnQgPSBib3hEZWJ1Z2dlcjtcblx0XHRcdHRoaXMuUE9JTlRFUl9OT0RFLm5hbWUgPSAnUE9JTlRFUl9OT0RFJ1xuXHRcdFx0dGhpcy5QT0lOVEVSX05PREUuYWRkQ29tcG9uZW50KGNjLkdyYXBoaWNzKTtcblx0XHR9XG5cdFx0Y29uc3QgZ3JhcCA9IHRoaXMuUE9JTlRFUl9OT0RFLmdldENvbXBvbmVudChjYy5HcmFwaGljcyk7XG5cdFx0Z3JhcC5jbGVhcigpO1xuXHRcdGNvbnN0IGdyb3VuZCA9IGNjLmZpbmQoJ0NhbnZhcy9mcmFtZS1ib3JkZXIvZ3JvdW5kJyk7XG5cdFx0Y29uc3Qge3dpZHRoOiBiYXNlVywgaGVpZ2h0OiBiYXNlSH0gPSBncm91bmQ7XG5cdFx0Y29uc3Qge3g6IHB4LCB5OiBweX0gPSB0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24ucG9zO1xuXHRcdGxldCB4ID0gYmFzZVcgKiBweCAtIGJhc2VXIC8gMjtcblx0XHRsZXQgeSA9IGJhc2VIIC0gKGJhc2VIICogcHkpIC0gYmFzZUggLyAyIC0gMTY7XG5cdFx0Y29uc3QgcG4gPSBuZXcgY2MuTm9kZSgpO1xuXHRcdFxuXHRcdGdyYXAuZmlsbENvbG9yPWNjLmNvbG9yKDI1NSwgMCwgMCk7XG5cdFx0Z3JhcC5jaXJjbGUoeCwgeSwgMzIpO1xuXHRcdGdyYXAuZmlsbCgpO1xuXHRcdGdyYXAuc3Ryb2tlKCk7XG5cdH0sXG5cdGRlYnVnR3JhcGhpY3MoKSB7XG5cdFx0Y29uc3QgYm94RGVidWdnZXIgPSBjYy5maW5kKCdDYW52YXMvYm94LWRlYnVnZ2VyJyk7XG5cdFx0aWYgKCF0aGlzLmlzRGVidWcpIHtcblx0XHRcdGJveERlYnVnZ2VyLmFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRib3hEZWJ1Z2dlci5hY3RpdmUgPSB0cnVlO1xuXHRcdGNvbnNvbGUubG9nKCdzaG93IGRlYnVnIGdyYXBoaWNzJyk7XG5cdFx0Y29uc3QgZ3JvdW5kID0gY2MuZmluZCgnQ2FudmFzL2ZyYW1lLWJvcmRlci9ncm91bmQnKTtcblx0XHRjb25zdCBjYW52YXMgPSBjYy5maW5kKCdDYW52YXMnKTtcblx0XHRjb25zdCB7d2lkdGg6IGJhc2VXLCBoZWlnaHQ6IGJhc2VIfSA9IGdyb3VuZDtcblx0XHRjb25zdCB7d2lkdGg6IGJnVywgaGVpZ2h0OiBiZ0h9ID0gdGhpcy5kYXRhLmJnSXRlbS5yZWN0XG5cdFx0Y29uc3Qgc2NhbGVYID0gYmdXIC8gYmFzZVc7XG5cdFx0Y29uc3Qgc2NhbGVZID0gYmdIIC8gYmFzZUg7XG5cdFx0bGV0IGFkZGVkICA9ZmFsc2Vcblx0XHR0aGlzLmRhdGEuaG90Wm9uZUl0ZW1BcnIuZm9yRWFjaChhcmVhID0+IHtcblx0XHRcdFxuXHRcdFx0aWYgKGFkZGVkKSB7XG5cdFx0XHRcdC8vIHJldHVyblxuXHRcdFx0fVxuXHRcdFx0aWYgKGFyZWEuZ0lkeCAhPSAnMCcpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0YWRkZWQgPSB0cnVlO1xuXHRcdFx0Y29uc3QgZG4gPSBuZXcgY2MuTm9kZSgpO1xuXHRcdFx0Y29uc3QgbGJsTm9kZSA9IG5ldyBjYy5Ob2RlKCk7XG5cdFx0XHRsYmxOb2RlLnBhcmVudCA9IGRuXG5cdFx0XHRjb25zdCBsYmwgPSBsYmxOb2RlLmFkZENvbXBvbmVudChjYy5MYWJlbCk7XG5cdFx0XHRsYmxOb2RlLmNvbG9yID0gY2MuY29sb3IoMCwwLDApXG5cdFx0XHRsYmwuc3RyaW5nID0gYXJlYS5za2VKc29uRGF0YS5uYW1lLnN1YnN0cmluZygwLCBhcmVhLnNrZUpzb25EYXRhLm5hbWUubGVuZ3RoIC0gOSlcblx0XHRcdGRuLm5hbWUgPSBsYmwuc3RyaW5nO1xuXHRcdFx0ZG4ucGFyZW50ID0gYm94RGVidWdnZXI7XG5cdFx0XHRkbi53aWR0aCA9IGJhc2VXO1xuXHRcdFx0ZG4uaGVpZ2h0ID0gYmFzZUg7XG5cdFx0XHRcblx0XHRcdGNvbnN0IGdyYXAgPSBkbi5hZGRDb21wb25lbnQoY2MuR3JhcGhpY3MpO1xuXHRcdFx0Y29uc3QgciA9IFJhbmRvbUludCgxLDI1NSlcblx0XHRcdGNvbnN0IGcgPSBSYW5kb21JbnQoMSwyNTUpXG5cdFx0XHRjb25zdCBiID0gUmFuZG9tSW50KDEsMjU1KVxuXHRcdFx0Z3JhcC5maWxsQ29sb3I9Y2MuY29sb3IociwgZywgYiwgMTI3KTtcblx0XHRcdGNvbnN0IHt4OiByeCwgeTogcnksIHdpZHRoOiBydywgaGVpZ2h0OiByaH0gPSAgYXJlYS5yZWN0O1xuXHRcdFx0bGV0IHcgPSAocncgLyBiZ1cpICogYmFzZVc7XG5cdFx0XHRsZXQgaCA9IChyaCAvIGJnSCkgKiBiYXNlSDtcblx0XHRcdGxldCB4ID0gKHJ4IC8gYmdXKSAqIGJhc2VXIC0gYmFzZVcgLyAyO1xuXHRcdFx0bGV0IHkgPSBiYXNlSCAtICgocnkgLyBiZ0gpICogYmFzZUgpIC0gaCAtIGJhc2VIIC8gMjtcblx0XHRcdC8vIHcgKj0gc2NhbGVYXG5cdFx0XHQvLyBoICo9IHNjYWxlWVxuXHRcdFx0Ly8geCAqPSBzY2FsZVhcblx0XHRcdC8vIHkgKj0gc2NhbGVZXG4gICAgICAgICAgICAvLyBjb25zdCBwID0gYm94RGVidWdnZXIuY29udmVydFRvTm9kZVNwYWNlQVIoY2MudjIoeCx5KSk7XG5cdFx0XHQvLyB4ID0gcC54O1xuXHRcdFx0Ly8geSA9IHAueTtcblx0XHRcdGxibE5vZGUueCA9IHg7XG5cdFx0XHRsYmxOb2RlLnkgPSB5ICsgaDtcblx0XHRcdC8vIGRuLnNjYWxlWCA9IHNjYWxlWDtcblx0XHRcdC8vIGRuLnNjYWxlWSA9IHNjYWxlWTtcblx0XHRcdC8vIGRuLnNjYWxlID0gYXJlYS5tYXBTY2FsZTsgLy8gbWluU2NhbGU7IC8vIHRoaXMuX21hcFNjYWxlTWF4ICogYXJlYS5tYXBTY2FsZTsgLy8gO1xuXHRcdFx0Y29uc29sZS5sb2coJ1tkZWJ1Z10nLCBhcmVhLnNrZUpzb25EYXRhLm5hbWUsIHgsIHksIHcsIGgpO1xuXHRcdFx0Z3JhcC5maWxsUmVjdCh4LCB5LCB3LCBoKTtcblx0XHRcdGdyYXAuc3Ryb2tlKCk7XG5cdFx0XHRcblx0XHR9KTtcblxuXHR9LFxuXHRhZGRQcmVsb2FkQW5pbWEoKSB7XG5cblx0fSxcblxuXHRwcmVsb2FkKCkge1xuXG5cdFx0Y29uc3QgcHJlbG9hZEFyciA9IHRoaXMuX2ltYWdlUmVzTGlzdC5jb25jYXQodGhpcy5fYXVkaW9SZXNMaXN0KS5jb25jYXQodGhpcy5fYW5pbWFSZXNMaXN0KTtcblx0XHQvLyBjb25zb2xlLmxvZyhwcmVsb2FkQXJyKTtcblx0XHRjYy5hc3NldE1hbmFnZXIubG9hZEFueShwcmVsb2FkQXJyLCBudWxsLCAoZiwgdCwgaXRlbSkgPT4ge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZiwgdCwgaXRlbSlcblx0XHR9LCAoZXJyLCBkYXRhKSA9PiB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIsIGRhdGEpO1xuXHRcdFx0Y29uc3QgZ3JvdW5kID0gY2MuZmluZChgQ2FudmFzL2ZyYW1lLWJvcmRlci9ncm91bmRgKTtcblx0XHRcdGNvbnN0IGdyb3VuZEJnID0gY2MuZmluZChgQ2FudmFzL2ZyYW1lLWJvcmRlci9ncm91bmQvYmdgKTtcblx0XHRcdGdyb3VuZEJnLmFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0Y29uc3QgYmFzZVJlY3QgPSB0aGlzLmRhdGEuYmdJdGVtLnJlY3Q7XG5cdFx0XHRnZXRTcHJpdGVGcmltZUJ5VXJsKHRoaXMuZGF0YS5iZ0l0ZW0udXJsLCAoc2YpID0+IHtcblx0XHRcdFx0Y29uc3QgZ3MgPSBncm91bmRCZy5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcblx0XHRcdFx0Z3Muc3ByaXRlRnJhbWUgPSBzZjtcblx0XHRcdFx0Z3JvdW5kQmcuYWN0aXZlID0gdHJ1ZTtcblxuXHRcdFx0XHRsZXQgZGJDb3VudCA9IDA7XG5cdFx0XHRcdGxldCBmaW5pc2hEYkNvdW50ID0gMFxuXHRcdFx0XHRmb3IoY29uc3QgYmxvY2sgb2YgdGhpcy5kYXRhLmhvdFpvbmVJdGVtQXJyKSB7XG5cdFx0XHRcdFx0aWYgKGJsb2NrLmdJZHggPT0gJzAnIHx8IGJsb2NrLmdJZHggPT0gJzEnKSB7XG5cdFx0XHRcdFx0XHRkYkNvdW50Kys7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcihjb25zdCBibG9jayBvZiB0aGlzLmRhdGEuaG90Wm9uZUl0ZW1BcnIpIHtcblxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdGlmIChibG9jay5nSWR4ID09ICcyJykge1xuXHRcdFx0XHRcdFx0Y29uc3QgczEgPSAoKGdyb3VuZC53aWR0aCAgLyBibG9jay5pbWdTaXplVykgKyAoZ3JvdW5kLmhlaWdodCAgLyBibG9jay5pbWdTaXplSCkpIC8gMlxuXHRcdFx0XHRcdFx0Y29uc3Qgbm9kZSA9IG5ldyBjYy5Ob2RlKCk7XG5cdFx0XHRcdFx0XHRub2RlLnBhcmVudCA9IGdyb3VuZDtcblx0XHRcdFx0XHRcdGNvbnN0IHNwciA9IG5vZGUuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSk7XG5cdFx0XHRcdFx0XHRnZXRTcHJpdGVGcmltZUJ5VXJsKGJsb2NrLnBpY191cmwsIChzZikgPT4ge1xuXHRcdFx0XHRcdFx0c3ByLnNwcml0ZUZyYW1lID0gc2Y7XG5cdFx0XHRcdFx0XHRub2RlLnNjYWxlID0gczE7XG5cdFx0XHRcdFx0XHR9KVxuXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChibG9jay5nSWR4ID09ICcwJyB8fCBibG9jay5nSWR4ID09ICcxJykge1xuXG5cdFx0XHRcdFx0XHRjb25zdCBuID0gbmV3IGNjLk5vZGUoKTtcblx0XHRcdFx0XHRcdG4uc2NhbGUgPSAwLjI1O1xuXHRcdFx0XHRcdFx0bi5wYXJlbnQgPSBncm91bmQ7XG5cdFx0XHRcdFx0XHRuLmFjdGl2ZSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHRpZiAoYmxvY2suYW5pbVR5cGUgPT0gJ3NwaW5lJykge1xuXHRcdFx0XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gbi5hZGRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xuXHRcdFx0XHRcdFx0XHRuLmlzU3BpbmUgPSB0cnVlO1xuXG5cdFx0XHRcdFx0XHRcdGxvYWRTcGluZShza2VsZXRvbiwgYmxvY2sudGV4UG5nRGF0YS5uYW1lLCB7XG5cdFx0XHRcdFx0XHRcdFx0dGV4OiBibG9jay50ZXhQbmdEYXRhLnVybCwgXG5cdFx0XHRcdFx0XHRcdFx0YXRsYXM6IGJsb2NrLnRleEpzb25EYXRhLnVybCxcblx0XHRcdFx0XHRcdFx0XHRza2U6IGJsb2NrLnNrZUpzb25EYXRhLnVybCxcblx0XHRcdFx0XHRcdFx0fSkudGhlbigoe3dpZHRoLCBoZWlnaHR9KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bi53aWR0aCA9IHdpZHRoO1xuXHRcdFx0XHRcdFx0XHRcdG4uaGVpZ2h0ID0gaGVpZ2h0O1x0XG5cdFx0XHRcdFx0XHRcdFx0bi5hY3RpdmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdC8vIGRiLnBsYXlBbmltYXRpb24oJ251bGwnLCAwKTtcblx0XHRcdFx0XHRcdFx0XHQvLyBza2VsZXRvbi5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldEFuaW1hdGlvbigwLCAnZW5sYXJnZScsIHRydWUpO1x0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5fYWxsQW5pbWF0aW9uTm9kZXMucHVzaChuKTtcblx0XHRcdFx0XHRcdFx0XHRmaW5pc2hEYkNvdW50Kys7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZmluaXNoRGJDb3VudCwgZGJDb3VudClcblx0XHRcdFx0XHRcdFx0XHRpZiAoZmluaXNoRGJDb3VudCA9PSBkYkNvdW50KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pLmNhdGNoKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRmaW5pc2hEYkNvdW50Kys7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZmluaXNoRGJDb3VudCwgZGJDb3VudClcblx0XHRcdFx0XHRcdFx0XHRpZiAoZmluaXNoRGJDb3VudCA9PSBkYkNvdW50KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGRiID0gbi5hZGRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblxuXHRcdFx0XHRcdFx0XHRsb2FkRHJhZ29uQm9uZXMoZGIsIHtcblx0XHRcdFx0XHRcdFx0XHR0ZXg6IGJsb2NrLnRleFBuZ0RhdGEudXJsLCBcblx0XHRcdFx0XHRcdFx0XHRhdGxhczogYmxvY2sudGV4SnNvbkRhdGEudXJsLFxuXHRcdFx0XHRcdFx0XHRcdHNrZTogYmxvY2suc2tlSnNvbkRhdGEudXJsLFxuXHRcdFx0XHRcdFx0XHR9KS50aGVuKCh7d2lkdGgsIGhlaWdodH0pID0+IHtcblx0XHRcdFx0XHRcdFx0XHRuLndpZHRoID0gd2lkdGg7XG5cdFx0XHRcdFx0XHRcdFx0bi5oZWlnaHQgPSBoZWlnaHQ7XHRcblx0XHRcdFx0XHRcdFx0XHRuLmFjdGl2ZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0ZGIucGxheUFuaW1hdGlvbignbnVsbCcsIDApO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuX2FsbEFuaW1hdGlvbk5vZGVzLnB1c2gobik7XG5cdFx0XHRcdFx0XHRcdFx0ZmluaXNoRGJDb3VudCsrO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGZpbmlzaERiQ291bnQsIGRiQ291bnQpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGZpbmlzaERiQ291bnQgPT0gZGJDb3VudCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkRW5kKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KS5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0ZmluaXNoRGJDb3VudCsrO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGZpbmlzaERiQ291bnQsIGRiQ291bnQpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGZpbmlzaERiQ291bnQgPT0gZGJDb3VudCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkRW5kKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XG5cblx0XHRcdFx0XHRcdGlmIChibG9jay5nSWR4ID09ICcwJykge1xuXHRcdFx0XHRcdFx0XHRjb25zdCByZWN0SW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0XHRub2RlOiBuLFxuXHRcdFx0XHRcdFx0XHRcdGF1ZGlvX3VybDogYmxvY2suYXVkaW9fdXJsICxcblx0XHRcdFx0XHRcdFx0XHRyZWN0OiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR4OiBibG9jay5yZWN0LnggLyBiYXNlUmVjdC53aWR0aCxcblx0XHRcdFx0XHRcdFx0XHRcdHk6IGJsb2NrLnJlY3QueSAvIGJhc2VSZWN0LmhlaWdodCxcblx0XHRcdFx0XHRcdFx0XHRcdHdpZHRoOiBibG9jay5yZWN0LndpZHRoIC8gYmFzZVJlY3Qud2lkdGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ6IGJsb2NrLnJlY3QuaGVpZ2h0IC8gYmFzZVJlY3QuaGVpZ2h0LFxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fZmlndXJlUG9pbnRSZWN0QXJyYXkucHVzaChyZWN0SW5mbyk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gdGhpcy5hZGRSZWN0Tm9kZUxpc3RlbmVyKGJsb2NrKTtcblx0XHRcblx0XHRcdFx0XHRcdFx0aWYgKGJsb2NrLmxhYmVsVGV4dCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGsgPSArYmxvY2subGFiZWxUZXh0ICogMTAwMDtcblx0XHRcdFx0XHRcdFx0XHRpZighaXNOYU4oaykpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuX2hpbnRzTm9kZUxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGU6IG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFmdGVyOiBrXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0XG5cdFx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEpO1xuXHRcdFx0Y29uc29sZS5sb2coJ3Jlc291cmNlIHBlcmxvYWQgZmluaXNoJyk7XG5cbi8vIDw8PDw8PDwgSEVBRFxuLy8gPT09PT09PVxuLy8gXHRcdFx0aWYgKHdpbmRvdyAmJiB3aW5kb3dbXCJhaXJcIl0pIHtcbi8vIFx0XHRcdFx0Ly8gY2MuZmluZCgnQ2FudmFzJykub3BhY2l0eSA9IDA7XG4vLyBcdFx0XHRcdHdpbmRvdy5haXIub25Db3Vyc2VJblNjcmVlbiA9IChuZXh0KSA9PiB7XG4vLyBcdFx0XHRcdFx0Ly8gY2MuZmluZCgnQ2FudmFzJykub3BhY2l0eSA9IDI1NTtcbi8vIFx0XHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcbi8vIFx0XHRcdFx0XHRuZXh0KCk7XG4vLyBcdFx0XHRcdH1cbi8vIFx0XHRcdFx0d2luZG93LmFpci5oaWRlQWlyQ2xhc3NMb2FkaW5nKCk7XG4vLyBcdFx0XHR9IGVsc2Uge1xuLy8gXHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcbi8vIFx0XHRcdH1cbi8vID4+Pj4+Pj4gMmQ0NjFlMTkxMDU3MWJjZmM2YWQ0ZGM5M2MyY2VkYWZjMjA5MjNlYVxuXG5cdFx0XHRjYy5kZWJ1Zy5zZXREaXNwbGF5U3RhdHMoZmFsc2UpO1xuXHRcdH0pO1xuXHR9LFxuXG5cblx0bG9hZEVuZCgpIHtcblx0XHRpZiAod2luZG93ICYmIHdpbmRvd1tcImFpclwiXSAmJiB3aW5kb3dbXCJhaXJcIl0uaGlkZUFpckNsYXNzTG9hZGluZykge1xuXHRcdFx0d2luZG93W1wiYWlyXCJdLmhpZGVBaXJDbGFzc0xvYWRpbmcoKTtcblx0XHR9XG5cdFx0dGhpcy5pbml0RGF0YSgpO1xuXHRcdC8vIHRoaXMuaW5pdEF1ZGlvKCk7XG5cdFx0Ly8gdGhpcy5pbml0VmlldygpO1xuXHRcdHRoaXMuaW5pdEJnKCk7XG5cdFx0Ly8gdGhpcy5pbml0TGlzdGVuZXIoKTtcblx0XHR0aGlzLmRlYnVnR3JhcGhpY3MoKTtcblx0XHR0aGlzLmNyZWF0ZVN0YXRlTWFjaGluZSgpO1xuXHR9LFxuXG5cdF9jYW50b3VjaDogbnVsbCxcblx0aW5pdERhdGEoKSB7XG5cdFx0Ly8g5omA5pyJ5YWo5bGA5Y+Y6YePIOm7mOiupOmDveaYr251bGwgXG5cdFx0dGhpcy5fY2FudG91Y2ggPSB0cnVlO1xuXHR9LFxuXG5cdC8vIGF1ZGlvQnRuOiBudWxsLFxuXHQvLyBpbml0QXVkaW8oKSB7XG5cdC8vIFx0Y29uc3QgYXVkaW9Ob2RlID0gY2MuZmluZCgnQ2FudmFzL3Jlcy9hdWRpbycpO1xuXG5cdC8vIFx0Y29uc3QgZ2V0QXVkaW9CeVJlc05hbWUgPSAocmVzTmFtZSkgPT4ge1xuXHQvLyBcdFx0cmV0dXJuIGF1ZGlvTm9kZS5nZXRDaGlsZEJ5TmFtZShyZXNOYW1lKS5nZXRDb21wb25lbnQoY2MuQXVkaW9Tb3VyY2UpO1xuXHQvLyBcdH1cblxuXHQvLyBcdHRoaXMuYXVkaW9CdG4gPSBnZXRBdWRpb0J5UmVzTmFtZSgnYnRuJyk7XG5cblx0Ly8gfSxcblxuXG5cdC8vIGluaXRWaWV3KCkge1xuXG5cdC8vIFx0Ly8gdGhpcy5pbml0QmcoKTtcblx0Ly8gXHQvLyB0aGlzLmluaXRQaWMoKTtcblx0Ly8gXHQvLyB0aGlzLmluaXRCdG4oKTtcblx0Ly8gXHR0aGlzLmluaXRJY29uKCk7XG5cdC8vIH0sXG5cblx0YWRkUmVjdE5vZGVMaXN0ZW5lcihkYXRhKSB7XG5cblxuXHRcdGNvbnN0IGJnID0gY2MuZmluZChgQ2FudmFzL2ZyYW1lLWJvcmRlci9ncm91bmQvYmdgKTtcblxuXHRcdGNvbnN0IHJhdGUgPSAoYmcuc2NhbGUgKiBiZy53aWR0aCkgLyB0aGlzLmRhdGEuYmdJdGVtLnJlY3Qud2lkdGg7XG5cblx0XHRjb25zdCByZWN0Tm9kZSA9IG5ldyBjYy5Ob2RlKCk7XG5cdFx0cmVjdE5vZGUubmFtZSA9ICdyZWN0JyArIGRhdGEuaW5kZXg7XG5cdFx0YmcuYWRkQ2hpbGQocmVjdE5vZGUpO1xuXG5cblx0XHRjb25zdCBjdHggPSByZWN0Tm9kZS5hZGRDb21wb25lbnQoY2MuR3JhcGhpY3MpO1xuXHRcdC8vIOe6ouiJsuefqeW9olxuXHRcdGN0eC5saW5lV2lkdGggPSA0O1xuXHRcdGN0eC5zdHJva2VDb2xvciA9IGNjLkNvbG9yLkJMQUNLO1xuXHRcdGN0eC5maWxsQ29sb3IgPSBjYy5Db2xvci5XSElURS5zZXRBKDEwMCk7XG5cblx0XHRjb25zdCBzY2FsZSA9IHJhdGUgLyBiZy5zY2FsZVk7XG5cblx0XHRyZWN0Tm9kZS53aWR0aCA9IGRhdGEucmVjdC53aWR0aCAqIHNjYWxlO1xuXHRcdHJlY3ROb2RlLmhlaWdodCA9IGRhdGEucmVjdC5oZWlnaHQgKiBzY2FsZTtcblx0XHRyZWN0Tm9kZS54ID0gLWJnLndpZHRoIC8gMiArIGRhdGEucmVjdC54ICogc2NhbGU7XG5cdFx0cmVjdE5vZGUueSA9IGJnLmhlaWdodCAvIDIgLSBkYXRhLnJlY3QuaGVpZ2h0ICogc2NhbGUgLSBkYXRhLnJlY3QueSAqIHNjYWxlO1xuXG5cdFx0cmVjdE5vZGUuYW5jaG9yWCA9IHJlY3ROb2RlLmFuY2hvclkgPSAwO1xuXG5cblx0XHQvLyBpZiAocGFnZURhdGEuYmdJdGVtLmlzU2hvd0RlYnVnTGluZSkge1xuXHRcdFx0Y3R4LnJlY3QoMCwgMCwgcmVjdE5vZGUud2lkdGgsIHJlY3ROb2RlLmhlaWdodCk7XG5cdFx0Ly8gfVxuXHRcdGN0eC5zdHJva2UoKTtcblx0XHRjdHguZmlsbCgpO1xuXG5cdH0sXG5cblx0aW5pdEJnKCkge1xuXHRcdGNvbnN0IGJnTm9kZSA9IGNjLmZpbmQoJ0NhbnZhcy9iZycpO1xuXHRcdGJnTm9kZS5zY2FsZSA9IHRoaXMuX21hcFNjYWxlTWF4O1xuXHRcdGNvbnNvbGUubG9nKCd0aGlzLl9tYXBTY2FsZU1heCcsIHRoaXMuX21hcFNjYWxlTWF4KTtcblx0fSxcblxuXHRcblx0XG5cblx0Lyppbml0QnRuKCkge1xuXG5cdFx0dGhpcy5jdXJQYWdlID0gMDtcblx0XHRjb25zdCBib3R0b21QYXJ0ID0gY2MuZmluZCgnQ2FudmFzL2JvdHRvbVBhcnQnKTtcblx0XHRib3R0b21QYXJ0LnpJbmRleCA9IDU7IC8vIOaPkOmrmOWxgue6p1xuXG5cdFx0Ym90dG9tUGFydC54ID0gYm90dG9tUGFydC5wYXJlbnQud2lkdGggLyAyO1xuXHRcdGJvdHRvbVBhcnQueSA9IC1ib3R0b21QYXJ0LnBhcmVudC5oZWlnaHQgLyAyO1xuXG5cdFx0Y29uc3QgbGVmdEJ0bk5vZGUgPSBib3R0b21QYXJ0LmdldENoaWxkQnlOYW1lKCdidG5fbGVmdCcpO1xuXHRcdC8v6IqC54K55Lit5re75Yqg5LqGYnV0dG9u57uE5Lu2IOWImeWPr+S7pea3u+WKoGNsaWNr5LqL5Lu255uR5ZCsXG5cdFx0bGVmdEJ0bk5vZGUub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLl9jYW50b3VjaCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5jdXJQYWdlID09IDApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5jdXJQYWdlID0gMFxuXHRcdFx0dGhpcy5sZWZ0TW92ZSgpO1xuXG5cdFx0XHQvLyDmuLjmiI/nu5PmnZ/ml7bpnIDopoHosIPnlKjov5nkuKrmlrnms5XpgJrnn6Xns7vnu5/kvZzkuJrlrozmiJBcblx0XHRcdG9uSG9tZXdvcmtGaW5pc2goKTtcblxuXHRcdFx0Y2MuYXVkaW9FbmdpbmUucGxheSh0aGlzLmF1ZGlvQnRuLmNsaXAsIGZhbHNlLCAwLjgpXG5cdFx0fSlcblxuXHRcdGNvbnN0IHJpZ2h0QnRuTm9kZSA9IGJvdHRvbVBhcnQuZ2V0Q2hpbGRCeU5hbWUoJ2J0bl9yaWdodCcpO1xuXHRcdC8v6IqC54K55Lit5re75Yqg5LqGYnV0dG9u57uE5Lu2IOWImeWPr+S7pea3u+WKoGNsaWNr5LqL5Lu255uR5ZCsXG5cdFx0cmlnaHRCdG5Ob2RlLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdGlmICghdGhpcy5fY2FudG91Y2gpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuY3VyUGFnZSA9PSAxKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5jdXJQYWdlID0gMVxuXHRcdFx0dGhpcy5yaWdodE1vdmUoKTtcblxuXHRcdFx0Y2MuYXVkaW9FbmdpbmUucGxheSh0aGlzLmF1ZGlvQnRuLmNsaXAsIGZhbHNlLCAwLjUpXG5cdFx0fSlcblx0fSwqL1xuXG5cblxuXG5cdC8vIHVwZGF0ZSAoZHQpIHt9LFxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblx0X3RpbWVvdXRJZHM6IG51bGwsXG5cdF9pbnRlcnZhbElkczogbnVsbCxcblx0Ly8g55Sf5ZG95ZGo5pyfXG5cdG9uRGVzdHJveSgpIHtcblx0XHRjb25zb2xlLmxvZygnb3AxNSBvbkRlc3Ryb3knKTtcblx0XHR0aGlzLl90aW1lb3V0SWRzLmZvckVhY2goaWQgPT4ge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KGlkKTtcblx0XHR9KTtcblx0XHR0aGlzLl9pbnRlcnZhbElkcy5mb3JFYWNoKGlkID0+IHtcblx0XHRcdGNsZWFySW50ZXJ2YWwoaWQpO1xuXHRcdH0pO1xuXHRcdHRoaXMuZ2FtZU1hY2hpbmVTZXJ2aWNlLnN0b3BDaGlsZCgpO1xuXHRcdHRoaXMuZ2FtZU1hY2hpbmVTZXJ2aWNlLnN0b3AoKTtcblx0XHRpZih3aW5kb3cuY291cnNld2FyZSAmJiB3aW5kb3cuY291cnNld2FyZS5jbG9zZU9zbW9GaW5nZXJSZWFkKSB7XG5cdFx0XHRpZiAodGhpcy5pc09wZW5lZE9zbW9GaW5nZXJSZWFkKSB7XG5cdFx0XHRcdHdpbmRvdy5jb3Vyc2V3YXJlLmNsb3NlT3Ntb0ZpbmdlclJlYWQoKVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXG5cblxuXG59KTtcbiJdfQ==
-//------QC-SOURCE-SPLIT------
 
-                (function() {
-                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
-                    var __module = nodeEnv ? module : {exports:{}};
-                    var __filename = 'preview-scripts/assets/OP15/script/xstate.js';
-                    var __require = nodeEnv ? function (request) {
-                        return cc.require(request);
-                    } : function (request) {
-                        return __quick_compile_project__.require(request, __filename);
-                    };
-                    function __define (exports, require, module) {
-                        if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}(function (global){
-"use strict";
-cc._RF.push(module, 'ccc6ebxJZFI24GNYY/uty5V', 'xstate');
-// OP15/script/xstate.js
+      return this.scheduler.clear(), this.initialized = !1, this.status = t.InterpreterStatus.Stopped, Ht(this.sessionId), this;
+    }, n.prototype.batch = function (n) {
+      var a = this;
+      if (this.status === t.InterpreterStatus.NotStarted && this.options.deferEvents) ;else if (this.status !== t.InterpreterStatus.Running) throw new Error("".concat(n.length, ' event(s) were sent to uninitialized service "').concat(this.machine.id, '". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.'));
+      this.scheduler.schedule(function () {
+        var t,
+            s,
+            c = a.state,
+            u = !1,
+            h = [],
+            f = function f(t) {
+          var n = L(t);
+          a.forward(n), c = jt(a, function () {
+            return a.machine.transition(c, n);
+          }), h.push.apply(h, o([], i(c.actions.map(function (t) {
+            return r = c, i = (n = t).exec, _e(_e({}, n), {
+              exec: void 0 !== i ? function () {
+                return i(r.context, r.event, {
+                  action: n,
+                  state: r,
+                  _event: r._event
+                });
+              } : void 0
+            });
+            var n, r, i;
+          })), !1)), u = u || !!c.changed;
+        };
 
-"use strict";
+        try {
+          for (var l = r(n), d = l.next(); !d.done; d = l.next()) {
+            f(d.value);
+          }
+        } catch (e) {
+          t = {
+            error: e
+          };
+        } finally {
+          try {
+            d && !d.done && (s = l["return"]) && s.call(l);
+          } finally {
+            if (t) throw t.error;
+          }
+        }
 
-!function (t, e) {
-  "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e((t = "undefined" != typeof globalThis ? globalThis : t || self).XState = {});
-}(void 0, function (t) {
-  "use strict";
-  /*! *****************************************************************************
-      Copyright (c) Microsoft Corporation.
-  
-      Permission to use, copy, modify, and/or distribute this software for any
-      purpose with or without fee is hereby granted.
-  
-      THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-      REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-      AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-      INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-      LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-      OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-      PERFORMANCE OF THIS SOFTWARE.
-      ***************************************************************************** */
+        c.changed = u, c.actions = h, a.update(c, L(n[n.length - 1]));
+      });
+    }, n.prototype.sender = function (t) {
+      return this.send.bind(this, t);
+    }, n.prototype.nextState = function (t) {
+      var e = this,
+          n = L(t);
+      if (0 === n.name.indexOf(ot) && !this.state.nextEvents.some(function (t) {
+        return 0 === t.indexOf(ot);
+      })) throw n.data.data;
+      return jt(this, function () {
+        return e.machine.transition(e.state, n);
+      });
+    }, n.prototype.forward = function (t) {
+      var e, n;
 
-  var _e = function e() {
-    return (_e = Object.assign || function (t) {
-      for (var e, n = 1, r = arguments.length; n < r; n++) {
-        for (var i in e = arguments[n]) {
-          Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
+      try {
+        for (var i = r(this.forwardTo), o = i.next(); !o.done; o = i.next()) {
+          var a = o.value,
+              s = this.children.get(a);
+          if (!s) throw new Error("Unable to forward event '".concat(t, "' from interpreter '").concat(this.id, "' to nonexistant child '").concat(a, "'."));
+          s.send(t);
+        }
+      } catch (t) {
+        e = {
+          error: t
+        };
+      } finally {
+        try {
+          o && !o.done && (n = i["return"]) && n.call(i);
+        } finally {
+          if (e) throw e.error;
         }
       }
+    }, n.prototype.defer = function (t) {
+      var e = this;
+      this.delayedEventsMap[t.id] = this.clock.setTimeout(function () {
+        t.to ? e.sendTo(t._event, t.to) : e.send(t._event);
+      }, t.delay);
+    }, n.prototype.cancel = function (t) {
+      this.clock.clearTimeout(this.delayedEventsMap[t]), delete this.delayedEventsMap[t];
+    }, n.prototype.exec = function (e, n, r) {
+      void 0 === r && (r = this.machine.options.actions);
+      var i = n.context,
+          o = n._event,
+          a = e.exec || ft(e.type, r),
+          s = N(a) ? a : a ? a.exec : e.exec;
+      if (s) try {
+        return s(i, o.data, {
+          action: e,
+          state: this.state,
+          _event: o
+        });
+      } catch (t) {
+        throw this.parent && this.parent.send({
+          type: "xstate.error",
+          data: t
+        }), t;
+      }
 
-      return t;
-    }).apply(this, arguments);
-  };
-
-  function n(t, e) {
-    var n = {};
-
-    for (var r in t) {
-      Object.prototype.hasOwnProperty.call(t, r) && e.indexOf(r) < 0 && (n[r] = t[r]);
-    }
+      switch (e.type) {
+        case Y:
+          var c = e;
+          if ("number" == typeof c.delay) return void this.defer(c);
+          c.to ? this.sendTo(c._event, c.to) : this.send(c._event);
+          break;
 
-    if (null != t && "function" == typeof Object.getOwnPropertySymbols) {
-      var i = 0;
+        case Z:
+          this.cancel(e.sendId);
+          break;
 
-      for (r = Object.getOwnPropertySymbols(t); i < r.length; i++) {
-        e.indexOf(r[i]) < 0 && Object.prototype.propertyIsEnumerable.call(t, r[i]) && (n[r[i]] = t[r[i]]);
-      }
-    }
+        case K:
+          var u = e.activity;
+          if (!this.state.activities[u.id || u.type]) break;
 
-    return n;
-  }
-
-  function r(t) {
-    var e = "function" == typeof Symbol && Symbol.iterator,
-        n = e && t[e],
-        r = 0;
-    if (n) return n.call(t);
-    if (t && "number" == typeof t.length) return {
-      next: function next() {
-        return t && r >= t.length && (t = void 0), {
-          value: t && t[r++],
-          done: !t
-        };
-      }
-    };
-    throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.");
-  }
-
-  function i(t, e) {
-    var n = "function" == typeof Symbol && t[Symbol.iterator];
-    if (!n) return t;
-    var r,
-        i,
-        o = n.call(t),
-        a = [];
-
-    try {
-      for (; (void 0 === e || e-- > 0) && !(r = o.next()).done;) {
-        a.push(r.value);
-      }
-    } catch (t) {
-      i = {
-        error: t
-      };
-    } finally {
-      try {
-        r && !r.done && (n = o["return"]) && n.call(o);
-      } finally {
-        if (i) throw i.error;
-      }
-    }
-
-    return a;
-  }
-
-  function o(t, e, n) {
-    if (n || 2 === arguments.length) for (var r, i = 0, o = e.length; i < o; i++) {
-      !r && i in e || (r || (r = Array.prototype.slice.call(e, 0, i)), r[i] = e[i]);
-    }
-    return t.concat(r || Array.prototype.slice.call(e));
-  }
-
-  var a = {};
-
-  function s(t) {
-    return Object.keys(t);
-  }
-
-  function c(t, e, n) {
-    void 0 === n && (n = ".");
-    var r = f(t, n),
-        i = f(e, n);
-    return A(i) ? !!A(r) && i === r : A(r) ? r in i : s(r).every(function (t) {
-      return t in i && c(r[t], i[t]);
-    });
-  }
-
-  function u(t) {
-    try {
-      return A(t) || "number" == typeof t ? "".concat(t) : t.type;
-    } catch (t) {
-      throw new Error("Events must be strings or objects with a string event.type property.");
-    }
-  }
-
-  function h(t, e) {
-    try {
-      return T(t) ? t : t.toString().split(e);
-    } catch (e) {
-      throw new Error("'".concat(t, "' is not a valid state path."));
-    }
-  }
-
-  function f(t, e) {
-    return "object" == typeof (n = t) && "value" in n && "context" in n && "event" in n && "_event" in n ? t.value : T(t) ? l(t) : "string" != typeof t ? t : l(h(t, e));
-    var n;
-  }
-
-  function l(t) {
-    if (1 === t.length) return t[0];
-
-    for (var e = {}, n = e, r = 0; r < t.length - 1; r++) {
-      r === t.length - 2 ? n[t[r]] = t[r + 1] : (n[t[r]] = {}, n = n[t[r]]);
-    }
-
-    return e;
-  }
-
-  function d(t, e) {
-    for (var n = {}, r = s(t), i = 0; i < r.length; i++) {
-      var o = r[i];
-      n[o] = e(t[o], o, t, i);
-    }
+          if (u.type === t.ActionTypes.Invoke) {
+            var h = M(u.src),
+                f = this.machine.options.services ? this.machine.options.services[h.type] : void 0,
+                l = u.id,
+                d = u.data,
+                p = "autoForward" in u ? u.autoForward : !!u.forward;
+            if (!f) return;
+            var v = d ? x(d, i, o) : void 0;
+            if ("string" == typeof f) return;
+            var y = N(f) ? f(i, o.data, {
+              data: v,
+              src: h,
+              meta: u.meta
+            }) : f;
+            if (!y) return;
+            var g = void 0;
+            k(y) && (y = v ? y.withContext(v) : y, g = {
+              autoForward: p
+            }), this.spawn(y, l, g);
+          } else this.spawnActivity(u);
 
-    return n;
-  }
+          break;
 
-  function p(t, e, n) {
-    var i,
-        o,
-        a = {};
+        case Q:
+          this.stopChild(e.activity.id);
+          break;
 
-    try {
-      for (var c = r(s(t)), u = c.next(); !u.done; u = c.next()) {
-        var h = u.value,
-            f = t[h];
-        n(f) && (a[h] = e(f, h, t));
-      }
-    } catch (t) {
-      i = {
-        error: t
-      };
-    } finally {
-      try {
-        u && !u.done && (o = c["return"]) && o.call(c);
-      } finally {
-        if (i) throw i.error;
+        case nt:
+          var m = e.label,
+              S = e.value;
+          m ? this.logger(m, S) : this.logger(S);
       }
-    }
-
-    return a;
-  }
-
-  var v = function v(t) {
-    return function (e) {
-      var n,
-          i,
-          o = e;
-
-      try {
-        for (var a = r(t), s = a.next(); !s.done; s = a.next()) {
-          o = o[s.value];
+    }, n.prototype.removeChild = function (t) {
+      var e;
+      this.children["delete"](t), this.forwardTo["delete"](t), null === (e = this.state) || void 0 === e || delete e.children[t];
+    }, n.prototype.stopChild = function (t) {
+      var e = this.children.get(t);
+      e && (this.removeChild(t), N(e.stop) && e.stop());
+    }, n.prototype.spawn = function (t, n, r) {
+      if (w(t)) return this.spawnPromise(Promise.resolve(t), n);
+      if (N(t)) return this.spawnCallback(t, n);
+      if (function (t) {
+        try {
+          return "function" == typeof t.send;
+        } catch (t) {
+          return !1;
         }
-      } catch (t) {
-        n = {
-          error: t
-        };
-      } finally {
+      }(o = t) && "id" in o) return this.spawnActor(t, n);
+      if (function (t) {
         try {
-          s && !s.done && (i = a["return"]) && i.call(a);
-        } finally {
-          if (n) throw n.error;
+          return "subscribe" in t && N(t.subscribe);
+        } catch (t) {
+          return !1;
         }
-      }
-
-      return o;
-    };
-  };
+      }(t)) return this.spawnObservable(t, n);
+      if (k(t)) return this.spawnMachine(t, _e(_e({}, r), {
+        id: n
+      }));
+      if (null !== (i = t) && "object" == typeof i && "transition" in i && "function" == typeof i.transition) return this.spawnBehavior(t, n);
+      throw new Error('Unable to spawn entity "'.concat(n, '" of type "').concat(typeof t, '".'));
+      var i, o;
+    }, n.prototype.spawnMachine = function (t, r) {
+      var i = this;
+      void 0 === r && (r = {});
 
-  function y(t) {
-    return t ? A(t) ? [[t]] : g(s(t).map(function (e) {
-      var n = t[e];
-      return "string" == typeof n || n && Object.keys(n).length ? y(t[e]).map(function (t) {
-        return [e].concat(t);
-      }) : [[e]];
-    })) : [[]];
-  }
+      var o = new n(t, _e(_e({}, this.options), {
+        parent: this,
+        id: r.id || t.id
+      })),
+          a = _e(_e({}, Yt), r);
 
-  function g(t) {
-    var e;
-    return (e = []).concat.apply(e, o([], i(t), !1));
-  }
+      a.sync && o.onTransition(function (t) {
+        i.send(st, {
+          state: t,
+          id: o.id
+        });
+      });
+      var s = o;
+      return this.children.set(o.id, s), a.autoForward && this.forwardTo.add(o.id), o.onDone(function (t) {
+        i.removeChild(o.id), i.send(L(t, {
+          origin: o.id
+        }));
+      }).start(), s;
+    }, n.prototype.spawnBehavior = function (t, e) {
+      var n = Qt(t, {
+        id: e,
+        parent: this
+      });
+      return this.children.set(e, n), n;
+    }, n.prototype.spawnPromise = function (t, e) {
+      var n,
+          r = this,
+          i = !1;
+      t.then(function (t) {
+        i || (n = t, r.removeChild(e), r.send(L(Nt(e, t), {
+          origin: e
+        })));
+      }, function (t) {
+        if (!i) {
+          r.removeChild(e);
+          var n = At(e, t);
 
-  function m(t) {
-    return T(t) ? t : [t];
-  }
-
-  function S(t) {
-    return void 0 === t ? [] : m(t);
-  }
-
-  function x(t, e, n) {
-    var i, o;
-    if (N(t)) return t(e, n.data);
-    var a = {};
-
-    try {
-      for (var s = r(Object.keys(t)), c = s.next(); !c.done; c = s.next()) {
-        var u = c.value,
-            h = t[u];
-        N(h) ? a[u] = h(e, n.data) : a[u] = h;
-      }
-    } catch (t) {
-      i = {
-        error: t
+          try {
+            r.send(L(n, {
+              origin: e
+            }));
+          } catch (t) {
+            r.devTools && r.devTools.send(n, r.state), r.machine.strict && r.stop();
+          }
+        }
+      });
+      var o = {
+        id: e,
+        send: function send() {},
+        subscribe: function subscribe(e, n, r) {
+          var i = z(e, n, r),
+              o = !1;
+          return t.then(function (t) {
+            o || (i.next(t), o || i.complete());
+          }, function (t) {
+            o || i.error(t);
+          }), {
+            unsubscribe: function unsubscribe() {
+              return o = !0;
+            }
+          };
+        },
+        stop: function stop() {
+          i = !0;
+        },
+        toJSON: function toJSON() {
+          return {
+            id: e
+          };
+        },
+        getSnapshot: function getSnapshot() {
+          return n;
+        }
       };
-    } finally {
+      return this.children.set(e, o), o;
+    }, n.prototype.spawnCallback = function (t, e) {
+      var n,
+          r,
+          i = this,
+          o = !1,
+          a = new Set(),
+          s = new Set();
+
       try {
-        c && !c.done && (o = s["return"]) && o.call(s);
-      } finally {
-        if (i) throw i.error;
+        r = t(function (t) {
+          n = t, s.forEach(function (e) {
+            return e(t);
+          }), o || i.send(L(t, {
+            origin: e
+          }));
+        }, function (t) {
+          a.add(t);
+        });
+      } catch (t) {
+        this.send(At(e, t));
       }
-    }
 
-    return a;
-  }
+      if (w(r)) return this.spawnPromise(r, e);
+      var c = {
+        id: e,
+        send: function send(t) {
+          return a.forEach(function (e) {
+            return e(t);
+          });
+        },
+        subscribe: function subscribe(t) {
+          return s.add(t), {
+            unsubscribe: function unsubscribe() {
+              s["delete"](t);
+            }
+          };
+        },
+        stop: function stop() {
+          o = !0, N(r) && r();
+        },
+        toJSON: function toJSON() {
+          return {
+            id: e
+          };
+        },
+        getSnapshot: function getSnapshot() {
+          return n;
+        }
+      };
+      return this.children.set(e, c), c;
+    }, n.prototype.spawnObservable = function (t, e) {
+      var n,
+          r = this,
+          i = t.subscribe(function (t) {
+        n = t, r.send(L(t, {
+          origin: e
+        }));
+      }, function (t) {
+        r.removeChild(e), r.send(L(At(e, t), {
+          origin: e
+        }));
+      }, function () {
+        r.removeChild(e), r.send(L(Nt(e), {
+          origin: e
+        }));
+      }),
+          o = {
+        id: e,
+        send: function send() {},
+        subscribe: function subscribe(e, n, r) {
+          return t.subscribe(e, n, r);
+        },
+        stop: function stop() {
+          return i.unsubscribe();
+        },
+        getSnapshot: function getSnapshot() {
+          return n;
+        },
+        toJSON: function toJSON() {
+          return {
+            id: e
+          };
+        }
+      };
+      return this.children.set(e, o), o;
+    }, n.prototype.spawnActor = function (t, e) {
+      return this.children.set(e, t), t;
+    }, n.prototype.spawnActivity = function (t) {
+      var e = this.machine.options && this.machine.options.activities ? this.machine.options.activities[t.type] : void 0;
 
-  function w(t) {
-    return t instanceof Promise || !(null === t || !N(t) && "object" != typeof t || !N(t.then));
-  }
+      if (e) {
+        var n = e(this.state.context, t);
+        this.spawnEffect(t.id, n);
+      }
+    }, n.prototype.spawnEffect = function (t, e) {
+      this.children.set(t, {
+        id: t,
+        send: function send() {},
+        subscribe: function subscribe() {
+          return {
+            unsubscribe: function unsubscribe() {}
+          };
+        },
+        stop: e || void 0,
+        getSnapshot: function getSnapshot() {},
+        toJSON: function toJSON() {
+          return {
+            id: t
+          };
+        }
+      });
+    }, n.prototype.attachDev = function () {
+      var t = Gt();
 
-  function b(t, e) {
-    var n,
-        o,
-        a = i([[], []], 2),
-        s = a[0],
-        c = a[1];
+      if (this.options.devTools && t) {
+        if (t.__REDUX_DEVTOOLS_EXTENSION__) {
+          var n = "object" == typeof this.options.devTools ? this.options.devTools : void 0;
+          this.devTools = t.__REDUX_DEVTOOLS_EXTENSION__.connect(_e(_e({
+            name: this.id,
+            autoPause: !0,
+            stateSanitizer: function stateSanitizer(t) {
+              return {
+                value: t.value,
+                context: t.context,
+                actions: t.actions
+              };
+            }
+          }, n), {
+            features: _e({
+              jump: !1,
+              skip: !1
+            }, n ? n.features : void 0)
+          }), this.machine), this.devTools.init(this.state);
+        }
 
-    try {
-      for (var u = r(t), h = u.next(); !h.done; h = u.next()) {
-        var f = h.value;
-        e(f) ? s.push(f) : c.push(f);
+        Kt(this);
       }
-    } catch (t) {
-      n = {
-        error: t
+    }, n.prototype.toJSON = function () {
+      return {
+        id: this.id
       };
-    } finally {
-      try {
-        h && !h.done && (o = u["return"]) && o.call(u);
-      } finally {
-        if (n) throw n.error;
-      }
-    }
-
-    return [s, c];
-  }
+    }, n.prototype[P] = function () {
+      return this;
+    }, n.prototype.getSnapshot = function () {
+      return this.status === t.InterpreterStatus.NotStarted ? this.initialState : this._state;
+    }, n.defaultOptions = function (t) {
+      return {
+        execute: !0,
+        deferEvents: !0,
+        clock: {
+          setTimeout: function (_setTimeout) {
+            function setTimeout(_x, _x2) {
+              return _setTimeout.apply(this, arguments);
+            }
 
-  function _(t, e) {
-    return d(t.states, function (t, n) {
-      if (t) {
-        var r = (A(e) ? void 0 : e[n]) || (t ? t.current : void 0);
-        if (r) return {
-          current: r,
-          states: _(t, r)
-        };
-      }
-    });
-  }
+            setTimeout.toString = function () {
+              return _setTimeout.toString();
+            };
 
-  function E(t, e, n, i) {
-    return t ? n.reduce(function (t, n) {
-      var o,
-          a,
-          c = n.assignment,
-          u = {
-        state: i,
-        action: n,
-        _event: e
-      },
-          h = {};
-      if (N(c)) h = c(t, e.data, u);else try {
-        for (var f = r(s(c)), l = f.next(); !l.done; l = f.next()) {
-          var d = l.value,
-              p = c[d];
-          h[d] = N(p) ? p(t, e.data, u) : p;
-        }
-      } catch (t) {
-        o = {
-          error: t
-        };
-      } finally {
-        try {
-          l && !l.done && (a = f["return"]) && a.call(f);
-        } finally {
-          if (o) throw o.error;
-        }
-      }
-      return Object.assign({}, t, h);
-    }, t) : t;
-  }
-
-  function T(t) {
-    return Array.isArray(t);
-  }
-
-  function N(t) {
-    return "function" == typeof t;
-  }
-
-  function A(t) {
-    return "string" == typeof t;
-  }
-
-  function O(t, e) {
-    if (t) return A(t) ? {
-      type: "xstate.guard",
-      name: t,
-      predicate: e ? e[t] : void 0
-    } : N(t) ? {
-      type: "xstate.guard",
-      name: t.name,
-      predicate: t
-    } : t;
-  }
-
-  var P = function () {
-    return "function" == typeof Symbol && Symbol.observable || "@@observable";
-  }();
+            return setTimeout;
+          }(function (t, e) {
+            return setTimeout(t, e);
+          }),
+          clearTimeout: function (_clearTimeout) {
+            function clearTimeout(_x3) {
+              return _clearTimeout.apply(this, arguments);
+            }
 
-  function k(t) {
-    try {
-      return "__xstatenode" in t;
-    } catch (t) {
-      return !1;
-    }
-  }
+            clearTimeout.toString = function () {
+              return _clearTimeout.toString();
+            };
 
-  var I,
-      j,
-      C = function () {
-    var t = 0;
-    return function () {
-      return (++t).toString(16);
-    };
+            return clearTimeout;
+          }(function (t) {
+            return clearTimeout(t);
+          })
+        },
+        logger: t.console.log.bind(console),
+        devTools: !1
+      };
+    }("undefined" != typeof self ? self : global), n.interpret = te, n;
   }();
 
-  function V(t, n) {
-    return A(t) || "number" == typeof t ? _e({
-      type: t
-    }, n) : t;
-  }
-
-  function L(t, n) {
-    if (!A(t) && "$$type" in t && "scxml" === t.$$type) return t;
-    var r = V(t);
-    return _e({
-      name: r.type,
-      data: r,
-      $$type: "scxml",
-      type: "external"
-    }, n);
-  }
-
-  function D(t, n) {
-    return m(n).map(function (n) {
-      return void 0 === n || "string" == typeof n || k(n) ? {
-        target: n,
-        event: t
-      } : _e(_e({}, n), {
-        event: t
-      });
-    });
-  }
-
-  function R(t, e, n, r, i) {
-    var o = t.options.guards,
-        a = {
-      state: i,
-      cond: e,
-      _event: r
-    };
-    if ("xstate.guard" === e.type) return ((null == o ? void 0 : o[e.name]) || e.predicate)(n, r.data, a);
-    var s = o[e.type];
-    if (!s) throw new Error("Guard '".concat(e.type, "' is not implemented on machine '").concat(t.id, "'."));
-    return s(n, r.data, a);
-  }
-
-  function M(t) {
-    return "string" == typeof t ? {
-      type: t
-    } : t;
-  }
-
-  function z(t, e, n) {
-    if ("object" == typeof t) return t;
-
-    var r = function r() {};
-
-    return {
-      next: t,
-      error: e || r,
-      complete: n || r
-    };
+  function te(t, e) {
+    return new Zt(t, e);
   }
 
-  (I = t.ActionTypes || (t.ActionTypes = {})).Start = "xstate.start", I.Stop = "xstate.stop", I.Raise = "xstate.raise", I.Send = "xstate.send", I.Cancel = "xstate.cancel", I.NullEvent = "", I.Assign = "xstate.assign", I.After = "xstate.after", I.DoneState = "done.state", I.DoneInvoke = "done.invoke", I.Log = "xstate.log", I.Init = "xstate.init", I.Invoke = "xstate.invoke", I.ErrorExecution = "error.execution", I.ErrorCommunication = "error.communication", I.ErrorPlatform = "error.platform", I.ErrorCustom = "xstate.error", I.Update = "xstate.update", I.Pure = "xstate.pure", I.Choose = "xstate.choose", (j = t.SpecialTargets || (t.SpecialTargets = {})).Parent = "#_parent", j.Internal = "#_internal";
-
-  var F = function F(t) {
-    return "atomic" === t.type || "final" === t.type;
+  var ee = {
+    raise: vt,
+    send: yt,
+    sendParent: gt,
+    sendUpdate: mt,
+    log: function log(t, e) {
+      return void 0 === t && (t = St), {
+        type: nt,
+        label: e,
+        expr: t
+      };
+    },
+    cancel: xt,
+    start: wt,
+    stop: bt,
+    assign: _t,
+    after: Et,
+    done: Tt,
+    respond: function respond(t, n) {
+      return yt(t, _e(_e({}, n), {
+        to: function to(t, e, n) {
+          return n._event.origin;
+        }
+      }));
+    },
+    forwardTo: Ot,
+    escalate: function escalate(n, r) {
+      return gt(function (t, e, r) {
+        return {
+          type: at,
+          data: N(n) ? n(t, e, r) : n
+        };
+      }, _e(_e({}, r), {
+        to: t.SpecialTargets.Parent
+      }));
+    },
+    choose: function choose(e) {
+      return {
+        type: t.ActionTypes.Choose,
+        conds: e
+      };
+    },
+    pure: function pure(e) {
+      return {
+        type: t.ActionTypes.Pure,
+        get: e
+      };
+    }
   };
-
-  function U(t) {
-    return s(t.states).map(function (e) {
-      return t.states[e];
-    });
-  }
-
-  function B(t) {
-    var e = [t];
-    return F(t) ? e : e.concat(g(U(t).map(B)));
-  }
-
-  function J(t, e) {
-    var n,
-        i,
-        o,
-        a,
-        s,
-        c,
-        u,
-        h,
-        f = q(new Set(t)),
-        l = new Set(e);
+  t.Interpreter = Zt, t.Machine = function (t, e, n) {
+    return void 0 === n && (n = t.context), new zt(t, e, n);
+  }, t.State = kt, t.StateNode = zt, t.actions = ee, t.assign = _t, t.createMachine = function (t, e) {
+    return new zt(t, e);
+  }, t.createSchema = function (t) {
+    return t;
+  }, t.doneInvoke = Nt, t.forwardTo = Ot, t.interpret = te, t.mapState = function (t, e) {
+    var n, i, o;
 
     try {
-      for (var d = r(l), p = d.next(); !p.done; p = d.next()) {
-        for (var v = (E = p.value).parent; v && !l.has(v);) {
-          l.add(v), v = v.parent;
-        }
+      for (var a = r(s(t)), u = a.next(); !u.done; u = a.next()) {
+        var h = u.value;
+        c(h, e) && (!o || e.length > o.length) && (o = h);
       }
     } catch (t) {
       n = {
@@ -3309,42 +3285,24 @@ cc._RF.push(module, 'ccc6ebxJZFI24GNYY/uty5V', 'xstate');
       };
     } finally {
       try {
-        p && !p.done && (i = d["return"]) && i.call(d);
+        u && !u.done && (i = a["return"]) && i.call(a);
       } finally {
         if (n) throw n.error;
       }
     }
 
-    var y = q(l);
+    return t[o];
+  }, t.matchState = function (t, e, n) {
+    var o,
+        a,
+        s = kt.from(t, t instanceof kt ? t.context : void 0);
 
     try {
-      for (var g = r(l), m = g.next(); !m.done; m = g.next()) {
-        if ("compound" !== (E = m.value).type || y.get(E) && y.get(E).length) {
-          if ("parallel" === E.type) try {
-            for (var S = (s = void 0, r(U(E))), x = S.next(); !x.done; x = S.next()) {
-              var w = x.value;
-              "history" !== w.type && (l.has(w) || (l.add(w), f.get(w) ? f.get(w).forEach(function (t) {
-                return l.add(t);
-              }) : w.initialStateNodes.forEach(function (t) {
-                return l.add(t);
-              })));
-            }
-          } catch (t) {
-            s = {
-              error: t
-            };
-          } finally {
-            try {
-              x && !x.done && (c = S["return"]) && c.call(S);
-            } finally {
-              if (s) throw s.error;
-            }
-          }
-        } else f.get(E) ? f.get(E).forEach(function (t) {
-          return l.add(t);
-        }) : E.initialStateNodes.forEach(function (t) {
-          return l.add(t);
-        });
+      for (var c = r(e), u = c.next(); !u.done; u = c.next()) {
+        var h = i(u.value, 2),
+            f = h[0],
+            l = h[1];
+        if (s.matches(f)) return l(s);
       }
     } catch (t) {
       o = {
@@ -3352,2478 +3310,3021 @@ cc._RF.push(module, 'ccc6ebxJZFI24GNYY/uty5V', 'xstate');
       };
     } finally {
       try {
-        m && !m.done && (a = g["return"]) && a.call(g);
+        u && !u.done && (a = c["return"]) && a.call(c);
       } finally {
         if (o) throw o.error;
       }
     }
 
-    try {
-      for (var b = r(l), _ = b.next(); !_.done; _ = b.next()) {
-        var E;
+    return n(s);
+  }, t.matchesState = c, t.send = yt, t.sendParent = gt, t.sendUpdate = mt, t.spawn = function (t, n) {
+    var r = function (t) {
+      return A(t) ? _e(_e({}, Yt), {
+        name: t
+      }) : _e(_e(_e({}, Yt), {
+        name: C()
+      }), t);
+    }(n);
 
-        for (v = (E = _.value).parent; v && !l.has(v);) {
-          l.add(v), v = v.parent;
-        }
-      }
-    } catch (t) {
-      u = {
-        error: t
-      };
-    } finally {
-      try {
-        _ && !_.done && (h = b["return"]) && h.call(b);
-      } finally {
-        if (u) throw u.error;
-      }
-    }
+    return function (e) {
+      return e ? e.spawn(t, r.name, r) : Vt(t, r.name);
+    }(It[It.length - 1]);
+  }, Object.defineProperty(t, "__esModule", {
+    value: !0
+  });
+});
 
-    return l;
-  }
+cc._RF.pop();
 
-  function q(t) {
-    var e,
-        n,
-        i = new Map();
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+                    }
+                    if (nodeEnv) {
+                        __define(__module.exports, __require, __module);
+                    }
+                    else {
+                        __quick_compile_project__.registerModuleFunc(__filename, function () {
+                            __define(__module.exports, __require, __module);
+                        });
+                    }
+                })();
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hc3NldHMvT1AxNS9zY3JpcHQveHN0YXRlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLENBQUMsVUFBUyxDQUFULEVBQVcsQ0FBWCxFQUFhO0FBQUMsY0FBVSxPQUFPLE9BQWpCLElBQTBCLGVBQWEsT0FBTyxNQUE5QyxHQUFxRCxDQUFDLENBQUMsT0FBRCxDQUF0RCxHQUFnRSxjQUFZLE9BQU8sTUFBbkIsSUFBMkIsTUFBTSxDQUFDLEdBQWxDLEdBQXNDLE1BQU0sQ0FBQyxDQUFDLFNBQUQsQ0FBRCxFQUFhLENBQWIsQ0FBNUMsR0FBNEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLGVBQWEsT0FBTyxVQUFwQixHQUErQixVQUEvQixHQUEwQyxDQUFDLElBQUUsSUFBaEQsRUFBc0QsTUFBdEQsR0FBNkQsRUFBOUQsQ0FBN0g7QUFBK0wsQ0FBN00sU0FBb04sVUFBUyxDQUFULEVBQVc7QUFBQztBQUNqTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUFvRixNQUFJLEVBQUMsR0FBQyxhQUFVO0FBQUMsV0FBTSxDQUFDLEVBQUMsR0FBQyxNQUFNLENBQUMsTUFBUCxJQUFlLFVBQVMsQ0FBVCxFQUFXO0FBQUMsV0FBSSxJQUFJLENBQUosRUFBTSxDQUFDLEdBQUMsQ0FBUixFQUFVLENBQUMsR0FBQyxTQUFTLENBQUMsTUFBMUIsRUFBaUMsQ0FBQyxHQUFDLENBQW5DLEVBQXFDLENBQUMsRUFBdEM7QUFBeUMsYUFBSSxJQUFJLENBQVIsSUFBYSxDQUFDLEdBQUMsU0FBUyxDQUFDLENBQUQsQ0FBeEI7QUFBNEIsVUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxJQUFoQyxDQUFxQyxDQUFyQyxFQUF1QyxDQUF2QyxNQUE0QyxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUssQ0FBQyxDQUFDLENBQUQsQ0FBbEQ7QUFBNUI7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LEVBQUosQ0FBRixFQUFVO0FBQUMsUUFBQSxJQUFJLEVBQUM7QUFBTixPQUFWLENBQU4sR0FBMEIsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRCxFQUFJLEVBQUosQ0FBRixFQUFVO0FBQUMsUUFBQSxJQUFJLEVBQUMsQ0FBQztBQUFQLE9BQVYsQ0FBRixFQUF3QixDQUF4QixDQUFsQztBQUE2RCxLQUF6RSxDQUEwRSxDQUExRSxDQUFOOztBQUFtRixXQUFPLFVBQVMsQ0FBVCxFQUFXO0FBQUMsYUFBTyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUYsQ0FBUSxDQUFSLEVBQVUsQ0FBQyxDQUFDLElBQVosRUFBaUIsQ0FBakIsQ0FBRCxHQUFxQixFQUFFLENBQUMsQ0FBRCxFQUFHLENBQUMsQ0FBQyxJQUFMLENBQS9CO0FBQTBDLEtBQXRELENBQXVELEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBSCxHQUFVLENBQVgsQ0FBekQsQ0FBUDtBQUErRSxHQUFuakMsRUFBb2pDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLENBQXRCLEVBQXdCLFlBQXhCLEVBQXFDO0FBQUMsSUFBQSxLQUFLLEVBQUMsQ0FBQztBQUFSLEdBQXJDLENBQXBqQztBQUFxbUMsQ0FkaGdwRCxDQUFEIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIhZnVuY3Rpb24odCxlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9lKGV4cG9ydHMpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW1wiZXhwb3J0c1wiXSxlKTplKCh0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dHx8c2VsZikuWFN0YXRlPXt9KX0odGhpcywoZnVuY3Rpb24odCl7XCJ1c2Ugc3RyaWN0XCI7XG4vKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxuICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cblxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcbiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcbiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG4gICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcbiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL3ZhciBlPWZ1bmN0aW9uKCl7cmV0dXJuKGU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIGkgaW4gZT1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJih0W2ldPWVbaV0pO3JldHVybiB0fSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBuKHQsZSl7dmFyIG49e307Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJmUuaW5kZXhPZihyKTwwJiYobltyXT10W3JdKTtpZihudWxsIT10JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7aTxyLmxlbmd0aDtpKyspZS5pbmRleE9mKHJbaV0pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0LHJbaV0pJiYobltyW2ldXT10W3JbaV1dKX1yZXR1cm4gbn1mdW5jdGlvbiByKHQpe3ZhciBlPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLG49ZSYmdFtlXSxyPTA7aWYobilyZXR1cm4gbi5jYWxsKHQpO2lmKHQmJlwibnVtYmVyXCI9PXR5cGVvZiB0Lmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZyPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtyKytdLGRvbmU6IXR9fX07dGhyb3cgbmV3IFR5cGVFcnJvcihlP1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9ZnVuY3Rpb24gaSh0LGUpe3ZhciBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdO2lmKCFuKXJldHVybiB0O3ZhciByLGksbz1uLmNhbGwodCksYT1bXTt0cnl7Zm9yKDsodm9pZCAwPT09ZXx8ZS0tID4wKSYmIShyPW8ubmV4dCgpKS5kb25lOylhLnB1c2goci52YWx1ZSl9Y2F0Y2godCl7aT17ZXJyb3I6dH19ZmluYWxseXt0cnl7ciYmIXIuZG9uZSYmKG49by5yZXR1cm4pJiZuLmNhbGwobyl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXJldHVybiBhfWZ1bmN0aW9uIG8odCxlLG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcixpPTAsbz1lLmxlbmd0aDtpPG87aSsrKSFyJiZpIGluIGV8fChyfHwocj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLDAsaSkpLHJbaV09ZVtpXSk7cmV0dXJuIHQuY29uY2F0KHJ8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKX12YXIgYT17fTtmdW5jdGlvbiBzKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KX1mdW5jdGlvbiBjKHQsZSxuKXt2b2lkIDA9PT1uJiYobj1cIi5cIik7dmFyIHI9Zih0LG4pLGk9ZihlLG4pO3JldHVybiBBKGkpPyEhQShyKSYmaT09PXI6QShyKT9yIGluIGk6cyhyKS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gaSYmYyhyW3RdLGlbdF0pfSkpfWZ1bmN0aW9uIHUodCl7dHJ5e3JldHVybiBBKHQpfHxcIm51bWJlclwiPT10eXBlb2YgdD9cIlwiLmNvbmNhdCh0KTp0LnR5cGV9Y2F0Y2godCl7dGhyb3cgbmV3IEVycm9yKFwiRXZlbnRzIG11c3QgYmUgc3RyaW5ncyBvciBvYmplY3RzIHdpdGggYSBzdHJpbmcgZXZlbnQudHlwZSBwcm9wZXJ0eS5cIil9fWZ1bmN0aW9uIGgodCxlKXt0cnl7cmV0dXJuIFQodCk/dDp0LnRvU3RyaW5nKCkuc3BsaXQoZSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKFwiJ1wiLmNvbmNhdCh0LFwiJyBpcyBub3QgYSB2YWxpZCBzdGF0ZSBwYXRoLlwiKSl9fWZ1bmN0aW9uIGYodCxlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2Yobj10KSYmXCJ2YWx1ZVwiaW4gbiYmXCJjb250ZXh0XCJpbiBuJiZcImV2ZW50XCJpbiBuJiZcIl9ldmVudFwiaW4gbj90LnZhbHVlOlQodCk/bCh0KTpcInN0cmluZ1wiIT10eXBlb2YgdD90OmwoaCh0LGUpKTt2YXIgbn1mdW5jdGlvbiBsKHQpe2lmKDE9PT10Lmxlbmd0aClyZXR1cm4gdFswXTtmb3IodmFyIGU9e30sbj1lLHI9MDtyPHQubGVuZ3RoLTE7cisrKXI9PT10Lmxlbmd0aC0yP25bdFtyXV09dFtyKzFdOihuW3Rbcl1dPXt9LG49blt0W3JdXSk7cmV0dXJuIGV9ZnVuY3Rpb24gZCh0LGUpe2Zvcih2YXIgbj17fSxyPXModCksaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgbz1yW2ldO25bb109ZSh0W29dLG8sdCxpKX1yZXR1cm4gbn1mdW5jdGlvbiBwKHQsZSxuKXt2YXIgaSxvLGE9e307dHJ5e2Zvcih2YXIgYz1yKHModCkpLHU9Yy5uZXh0KCk7IXUuZG9uZTt1PWMubmV4dCgpKXt2YXIgaD11LnZhbHVlLGY9dFtoXTtuKGYpJiYoYVtoXT1lKGYsaCx0KSl9fWNhdGNoKHQpe2k9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3UmJiF1LmRvbmUmJihvPWMucmV0dXJuKSYmby5jYWxsKGMpfWZpbmFsbHl7aWYoaSl0aHJvdyBpLmVycm9yfX1yZXR1cm4gYX12YXIgdj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG4saSxvPWU7dHJ5e2Zvcih2YXIgYT1yKHQpLHM9YS5uZXh0KCk7IXMuZG9uZTtzPWEubmV4dCgpKXtvPW9bcy52YWx1ZV19fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3MmJiFzLmRvbmUmJihpPWEucmV0dXJuKSYmaS5jYWxsKGEpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gb319O2Z1bmN0aW9uIHkodCl7cmV0dXJuIHQ/QSh0KT9bW3RdXTpnKHModCkubWFwKChmdW5jdGlvbihlKXt2YXIgbj10W2VdO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBufHxuJiZPYmplY3Qua2V5cyhuKS5sZW5ndGg/eSh0W2VdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybltlXS5jb25jYXQodCl9KSk6W1tlXV19KSkpOltbXV19ZnVuY3Rpb24gZyh0KXt2YXIgZTtyZXR1cm4oZT1bXSkuY29uY2F0LmFwcGx5KGUsbyhbXSxpKHQpLCExKSl9ZnVuY3Rpb24gbSh0KXtyZXR1cm4gVCh0KT90Olt0XX1mdW5jdGlvbiBTKHQpe3JldHVybiB2b2lkIDA9PT10P1tdOm0odCl9ZnVuY3Rpb24geCh0LGUsbil7dmFyIGksbztpZihOKHQpKXJldHVybiB0KGUsbi5kYXRhKTt2YXIgYT17fTt0cnl7Zm9yKHZhciBzPXIoT2JqZWN0LmtleXModCkpLGM9cy5uZXh0KCk7IWMuZG9uZTtjPXMubmV4dCgpKXt2YXIgdT1jLnZhbHVlLGg9dFt1XTtOKGgpP2FbdV09aChlLG4uZGF0YSk6YVt1XT1ofX1jYXRjaCh0KXtpPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtjJiYhYy5kb25lJiYobz1zLnJldHVybikmJm8uY2FsbChzKX1maW5hbGx5e2lmKGkpdGhyb3cgaS5lcnJvcn19cmV0dXJuIGF9ZnVuY3Rpb24gdyh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFByb21pc2V8fCEobnVsbD09PXR8fCFOKHQpJiZcIm9iamVjdFwiIT10eXBlb2YgdHx8IU4odC50aGVuKSl9ZnVuY3Rpb24gYih0LGUpe3ZhciBuLG8sYT1pKFtbXSxbXV0sMikscz1hWzBdLGM9YVsxXTt0cnl7Zm9yKHZhciB1PXIodCksaD11Lm5leHQoKTshaC5kb25lO2g9dS5uZXh0KCkpe3ZhciBmPWgudmFsdWU7ZShmKT9zLnB1c2goZik6Yy5wdXNoKGYpfX1jYXRjaCh0KXtuPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtoJiYhaC5kb25lJiYobz11LnJldHVybikmJm8uY2FsbCh1KX1maW5hbGx5e2lmKG4pdGhyb3cgbi5lcnJvcn19cmV0dXJuW3MsY119ZnVuY3Rpb24gXyh0LGUpe3JldHVybiBkKHQuc3RhdGVzLChmdW5jdGlvbih0LG4pe2lmKHQpe3ZhciByPShBKGUpP3ZvaWQgMDplW25dKXx8KHQ/dC5jdXJyZW50OnZvaWQgMCk7aWYocilyZXR1cm57Y3VycmVudDpyLHN0YXRlczpfKHQscil9fX0pKX1mdW5jdGlvbiBFKHQsZSxuLGkpe3JldHVybiB0P24ucmVkdWNlKChmdW5jdGlvbih0LG4pe3ZhciBvLGEsYz1uLmFzc2lnbm1lbnQsdT17c3RhdGU6aSxhY3Rpb246bixfZXZlbnQ6ZX0saD17fTtpZihOKGMpKWg9Yyh0LGUuZGF0YSx1KTtlbHNlIHRyeXtmb3IodmFyIGY9cihzKGMpKSxsPWYubmV4dCgpOyFsLmRvbmU7bD1mLm5leHQoKSl7dmFyIGQ9bC52YWx1ZSxwPWNbZF07aFtkXT1OKHApP3AodCxlLmRhdGEsdSk6cH19Y2F0Y2godCl7bz17ZXJyb3I6dH19ZmluYWxseXt0cnl7bCYmIWwuZG9uZSYmKGE9Zi5yZXR1cm4pJiZhLmNhbGwoZil9ZmluYWxseXtpZihvKXRocm93IG8uZXJyb3J9fXJldHVybiBPYmplY3QuYXNzaWduKHt9LHQsaCl9KSx0KTp0fWZ1bmN0aW9uIFQodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCl9ZnVuY3Rpb24gTih0KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0fWZ1bmN0aW9uIEEodCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHR9ZnVuY3Rpb24gTyh0LGUpe2lmKHQpcmV0dXJuIEEodCk/e3R5cGU6XCJ4c3RhdGUuZ3VhcmRcIixuYW1lOnQscHJlZGljYXRlOmU/ZVt0XTp2b2lkIDB9Ok4odCk/e3R5cGU6XCJ4c3RhdGUuZ3VhcmRcIixuYW1lOnQubmFtZSxwcmVkaWNhdGU6dH06dH12YXIgUD1mdW5jdGlvbigpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLm9ic2VydmFibGV8fFwiQEBvYnNlcnZhYmxlXCJ9KCk7ZnVuY3Rpb24gayh0KXt0cnl7cmV0dXJuXCJfX3hzdGF0ZW5vZGVcImluIHR9Y2F0Y2godCl7cmV0dXJuITF9fXZhciBJLGosQz1mdW5jdGlvbigpe3ZhciB0PTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuKCsrdCkudG9TdHJpbmcoMTYpfX0oKTtmdW5jdGlvbiBWKHQsbil7cmV0dXJuIEEodCl8fFwibnVtYmVyXCI9PXR5cGVvZiB0P2Uoe3R5cGU6dH0sbik6dH1mdW5jdGlvbiBMKHQsbil7aWYoIUEodCkmJlwiJCR0eXBlXCJpbiB0JiZcInNjeG1sXCI9PT10LiQkdHlwZSlyZXR1cm4gdDt2YXIgcj1WKHQpO3JldHVybiBlKHtuYW1lOnIudHlwZSxkYXRhOnIsJCR0eXBlOlwic2N4bWxcIix0eXBlOlwiZXh0ZXJuYWxcIn0sbil9ZnVuY3Rpb24gRCh0LG4pe3JldHVybiBtKG4pLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHZvaWQgMD09PW58fFwic3RyaW5nXCI9PXR5cGVvZiBufHxrKG4pP3t0YXJnZXQ6bixldmVudDp0fTplKGUoe30sbikse2V2ZW50OnR9KX0pKX1mdW5jdGlvbiBSKHQsZSxuLHIsaSl7dmFyIG89dC5vcHRpb25zLmd1YXJkcyxhPXtzdGF0ZTppLGNvbmQ6ZSxfZXZlbnQ6cn07aWYoXCJ4c3RhdGUuZ3VhcmRcIj09PWUudHlwZSlyZXR1cm4oKG51bGw9PW8/dm9pZCAwOm9bZS5uYW1lXSl8fGUucHJlZGljYXRlKShuLHIuZGF0YSxhKTt2YXIgcz1vW2UudHlwZV07aWYoIXMpdGhyb3cgbmV3IEVycm9yKFwiR3VhcmQgJ1wiLmNvbmNhdChlLnR5cGUsXCInIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBtYWNoaW5lICdcIikuY29uY2F0KHQuaWQsXCInLlwiKSk7cmV0dXJuIHMobixyLmRhdGEsYSl9ZnVuY3Rpb24gTSh0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD97dHlwZTp0fTp0fWZ1bmN0aW9uIHoodCxlLG4pe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB0KXJldHVybiB0O3ZhciByPWZ1bmN0aW9uKCl7fTtyZXR1cm57bmV4dDp0LGVycm9yOmV8fHIsY29tcGxldGU6bnx8cn19KEk9dC5BY3Rpb25UeXBlc3x8KHQuQWN0aW9uVHlwZXM9e30pKS5TdGFydD1cInhzdGF0ZS5zdGFydFwiLEkuU3RvcD1cInhzdGF0ZS5zdG9wXCIsSS5SYWlzZT1cInhzdGF0ZS5yYWlzZVwiLEkuU2VuZD1cInhzdGF0ZS5zZW5kXCIsSS5DYW5jZWw9XCJ4c3RhdGUuY2FuY2VsXCIsSS5OdWxsRXZlbnQ9XCJcIixJLkFzc2lnbj1cInhzdGF0ZS5hc3NpZ25cIixJLkFmdGVyPVwieHN0YXRlLmFmdGVyXCIsSS5Eb25lU3RhdGU9XCJkb25lLnN0YXRlXCIsSS5Eb25lSW52b2tlPVwiZG9uZS5pbnZva2VcIixJLkxvZz1cInhzdGF0ZS5sb2dcIixJLkluaXQ9XCJ4c3RhdGUuaW5pdFwiLEkuSW52b2tlPVwieHN0YXRlLmludm9rZVwiLEkuRXJyb3JFeGVjdXRpb249XCJlcnJvci5leGVjdXRpb25cIixJLkVycm9yQ29tbXVuaWNhdGlvbj1cImVycm9yLmNvbW11bmljYXRpb25cIixJLkVycm9yUGxhdGZvcm09XCJlcnJvci5wbGF0Zm9ybVwiLEkuRXJyb3JDdXN0b209XCJ4c3RhdGUuZXJyb3JcIixJLlVwZGF0ZT1cInhzdGF0ZS51cGRhdGVcIixJLlB1cmU9XCJ4c3RhdGUucHVyZVwiLEkuQ2hvb3NlPVwieHN0YXRlLmNob29zZVwiLChqPXQuU3BlY2lhbFRhcmdldHN8fCh0LlNwZWNpYWxUYXJnZXRzPXt9KSkuUGFyZW50PVwiI19wYXJlbnRcIixqLkludGVybmFsPVwiI19pbnRlcm5hbFwiO3ZhciBGPWZ1bmN0aW9uKHQpe3JldHVyblwiYXRvbWljXCI9PT10LnR5cGV8fFwiZmluYWxcIj09PXQudHlwZX07ZnVuY3Rpb24gVSh0KXtyZXR1cm4gcyh0LnN0YXRlcykubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5zdGF0ZXNbZV19KSl9ZnVuY3Rpb24gQih0KXt2YXIgZT1bdF07cmV0dXJuIEYodCk/ZTplLmNvbmNhdChnKFUodCkubWFwKEIpKSl9ZnVuY3Rpb24gSih0LGUpe3ZhciBuLGksbyxhLHMsYyx1LGgsZj1xKG5ldyBTZXQodCkpLGw9bmV3IFNldChlKTt0cnl7Zm9yKHZhciBkPXIobCkscD1kLm5leHQoKTshcC5kb25lO3A9ZC5uZXh0KCkpZm9yKHZhciB2PShFPXAudmFsdWUpLnBhcmVudDt2JiYhbC5oYXModik7KWwuYWRkKHYpLHY9di5wYXJlbnR9Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7cCYmIXAuZG9uZSYmKGk9ZC5yZXR1cm4pJiZpLmNhbGwoZCl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXZhciB5PXEobCk7dHJ5e2Zvcih2YXIgZz1yKGwpLG09Zy5uZXh0KCk7IW0uZG9uZTttPWcubmV4dCgpKXtpZihcImNvbXBvdW5kXCIhPT0oRT1tLnZhbHVlKS50eXBlfHx5LmdldChFKSYmeS5nZXQoRSkubGVuZ3RoKXtpZihcInBhcmFsbGVsXCI9PT1FLnR5cGUpdHJ5e2Zvcih2YXIgUz0ocz12b2lkIDAscihVKEUpKSkseD1TLm5leHQoKTsheC5kb25lO3g9Uy5uZXh0KCkpe3ZhciB3PXgudmFsdWU7XCJoaXN0b3J5XCIhPT13LnR5cGUmJihsLmhhcyh3KXx8KGwuYWRkKHcpLGYuZ2V0KHcpP2YuZ2V0KHcpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBsLmFkZCh0KX0pKTp3LmluaXRpYWxTdGF0ZU5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBsLmFkZCh0KX0pKSkpfX1jYXRjaCh0KXtzPXtlcnJvcjp0fX1maW5hbGx5e3RyeXt4JiYheC5kb25lJiYoYz1TLnJldHVybikmJmMuY2FsbChTKX1maW5hbGx5e2lmKHMpdGhyb3cgcy5lcnJvcn19fWVsc2UgZi5nZXQoRSk/Zi5nZXQoRSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGwuYWRkKHQpfSkpOkUuaW5pdGlhbFN0YXRlTm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGwuYWRkKHQpfSkpfX1jYXRjaCh0KXtvPXtlcnJvcjp0fX1maW5hbGx5e3RyeXttJiYhbS5kb25lJiYoYT1nLnJldHVybikmJmEuY2FsbChnKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19dHJ5e2Zvcih2YXIgYj1yKGwpLF89Yi5uZXh0KCk7IV8uZG9uZTtfPWIubmV4dCgpKXt2YXIgRTtmb3Iodj0oRT1fLnZhbHVlKS5wYXJlbnQ7diYmIWwuaGFzKHYpOylsLmFkZCh2KSx2PXYucGFyZW50fX1jYXRjaCh0KXt1PXtlcnJvcjp0fX1maW5hbGx5e3RyeXtfJiYhXy5kb25lJiYoaD1iLnJldHVybikmJmguY2FsbChiKX1maW5hbGx5e2lmKHUpdGhyb3cgdS5lcnJvcn19cmV0dXJuIGx9ZnVuY3Rpb24gcSh0KXt2YXIgZSxuLGk9bmV3IE1hcDt0cnl7Zm9yKHZhciBvPXIodCksYT1vLm5leHQoKTshYS5kb25lO2E9by5uZXh0KCkpe3ZhciBzPWEudmFsdWU7aS5oYXMocyl8fGkuc2V0KHMsW10pLHMucGFyZW50JiYoaS5oYXMocy5wYXJlbnQpfHxpLnNldChzLnBhcmVudCxbXSksaS5nZXQocy5wYXJlbnQpLnB1c2gocykpfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYobj1vLnJldHVybikmJm4uY2FsbChvKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIGl9ZnVuY3Rpb24gJCh0LGUpe3JldHVybiBmdW5jdGlvbiB0KGUsbil7dmFyIHI9bi5nZXQoZSk7aWYoIXIpcmV0dXJue307aWYoXCJjb21wb3VuZFwiPT09ZS50eXBlKXt2YXIgaT1yWzBdO2lmKCFpKXJldHVybnt9O2lmKEYoaSkpcmV0dXJuIGkua2V5fXZhciBvPXt9O3JldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKGUpe29bZS5rZXldPXQoZSxuKX0pKSxvfSh0LHEoSihbdF0sZSkpKX1mdW5jdGlvbiBYKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWV9KSk6dCBpbnN0YW5jZW9mIFNldCYmdC5oYXMoZSl9ZnVuY3Rpb24gSCh0LGUpe3JldHVyblwiY29tcG91bmRcIj09PWUudHlwZT9VKGUpLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVyblwiZmluYWxcIj09PWUudHlwZSYmWCh0LGUpfSkpOlwicGFyYWxsZWxcIj09PWUudHlwZSYmVShlKS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIEgodCxlKX0pKX1mdW5jdGlvbiBHKHQpe3JldHVybiBuZXcgU2V0KGcodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRhZ3N9KSkpKX12YXIgSz10LkFjdGlvblR5cGVzLlN0YXJ0LFE9dC5BY3Rpb25UeXBlcy5TdG9wLFc9dC5BY3Rpb25UeXBlcy5SYWlzZSxZPXQuQWN0aW9uVHlwZXMuU2VuZCxaPXQuQWN0aW9uVHlwZXMuQ2FuY2VsLHR0PXQuQWN0aW9uVHlwZXMuTnVsbEV2ZW50LGV0PXQuQWN0aW9uVHlwZXMuQXNzaWduLG50PSh0LkFjdGlvblR5cGVzLkFmdGVyLHQuQWN0aW9uVHlwZXMuRG9uZVN0YXRlLHQuQWN0aW9uVHlwZXMuTG9nKSxydD10LkFjdGlvblR5cGVzLkluaXQsaXQ9dC5BY3Rpb25UeXBlcy5JbnZva2Usb3Q9KHQuQWN0aW9uVHlwZXMuRXJyb3JFeGVjdXRpb24sdC5BY3Rpb25UeXBlcy5FcnJvclBsYXRmb3JtKSxhdD10LkFjdGlvblR5cGVzLkVycm9yQ3VzdG9tLHN0PXQuQWN0aW9uVHlwZXMuVXBkYXRlLGN0PXQuQWN0aW9uVHlwZXMuQ2hvb3NlLHV0PXQuQWN0aW9uVHlwZXMuUHVyZSxodD1MKHt0eXBlOnJ0fSk7ZnVuY3Rpb24gZnQodCxlKXtyZXR1cm4gZSYmZVt0XXx8dm9pZCAwfWZ1bmN0aW9uIGx0KHQsbil7dmFyIHI7aWYoQSh0KXx8XCJudW1iZXJcIj09dHlwZW9mIHQpcj1OKGk9ZnQodCxuKSk/e3R5cGU6dCxleGVjOml9Oml8fHt0eXBlOnQsZXhlYzp2b2lkIDB9O2Vsc2UgaWYoTih0KSlyPXt0eXBlOnQubmFtZXx8dC50b1N0cmluZygpLGV4ZWM6dH07ZWxzZXt2YXIgaTtpZihOKGk9ZnQodC50eXBlLG4pKSlyPWUoZSh7fSx0KSx7ZXhlYzppfSk7ZWxzZSBpZihpKXt2YXIgbz1pLnR5cGV8fHQudHlwZTtyPWUoZShlKHt9LGkpLHQpLHt0eXBlOm99KX1lbHNlIHI9dH1yZXR1cm4gcn12YXIgZHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD8oVCh0KT90Olt0XSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbHQodCxlKX0pKTpbXX07ZnVuY3Rpb24gcHQodCl7dmFyIG49bHQodCk7cmV0dXJuIGUoZSh7aWQ6QSh0KT90Om4uaWR9LG4pLHt0eXBlOm4udHlwZX0pfWZ1bmN0aW9uIHZ0KGUpe3JldHVybiBBKGUpP3t0eXBlOlcsZXZlbnQ6ZX06eXQoZSx7dG86dC5TcGVjaWFsVGFyZ2V0cy5JbnRlcm5hbH0pfWZ1bmN0aW9uIHl0KHQsZSl7cmV0dXJue3RvOmU/ZS50bzp2b2lkIDAsdHlwZTpZLGV2ZW50Ok4odCk/dDpWKHQpLGRlbGF5OmU/ZS5kZWxheTp2b2lkIDAsaWQ6ZSYmdm9pZCAwIT09ZS5pZD9lLmlkOk4odCk/dC5uYW1lOnUodCl9fWZ1bmN0aW9uIGd0KG4scil7cmV0dXJuIHl0KG4sZShlKHt9LHIpLHt0bzp0LlNwZWNpYWxUYXJnZXRzLlBhcmVudH0pKX1mdW5jdGlvbiBtdCgpe3JldHVybiBndChzdCl9dmFyIFN0PWZ1bmN0aW9uKHQsZSl7cmV0dXJue2NvbnRleHQ6dCxldmVudDplfX07dmFyIHh0PWZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOlosc2VuZElkOnR9fTtmdW5jdGlvbiB3dChlKXt2YXIgbj1wdChlKTtyZXR1cm57dHlwZTp0LkFjdGlvblR5cGVzLlN0YXJ0LGFjdGl2aXR5Om4sZXhlYzp2b2lkIDB9fWZ1bmN0aW9uIGJ0KGUpe3ZhciBuPU4oZSk/ZTpwdChlKTtyZXR1cm57dHlwZTp0LkFjdGlvblR5cGVzLlN0b3AsYWN0aXZpdHk6bixleGVjOnZvaWQgMH19dmFyIF90PWZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOmV0LGFzc2lnbm1lbnQ6dH19O2Z1bmN0aW9uIEV0KGUsbil7dmFyIHI9bj9cIiNcIi5jb25jYXQobik6XCJcIjtyZXR1cm5cIlwiLmNvbmNhdCh0LkFjdGlvblR5cGVzLkFmdGVyLFwiKFwiKS5jb25jYXQoZSxcIilcIikuY29uY2F0KHIpfWZ1bmN0aW9uIFR0KGUsbil7dmFyIHI9XCJcIi5jb25jYXQodC5BY3Rpb25UeXBlcy5Eb25lU3RhdGUsXCIuXCIpLmNvbmNhdChlKSxpPXt0eXBlOnIsZGF0YTpuLHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fTtyZXR1cm4gaX1mdW5jdGlvbiBOdChlLG4pe3ZhciByPVwiXCIuY29uY2F0KHQuQWN0aW9uVHlwZXMuRG9uZUludm9rZSxcIi5cIikuY29uY2F0KGUpLGk9e3R5cGU6cixkYXRhOm4sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gcn19O3JldHVybiBpfWZ1bmN0aW9uIEF0KGUsbil7dmFyIHI9XCJcIi5jb25jYXQodC5BY3Rpb25UeXBlcy5FcnJvclBsYXRmb3JtLFwiLlwiKS5jb25jYXQoZSksaT17dHlwZTpyLGRhdGE6bix0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiByfX07cmV0dXJuIGl9ZnVuY3Rpb24gT3QodCxuKXtyZXR1cm4geXQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSxlKGUoe30sbikse3RvOnR9KSl9ZnVuY3Rpb24gUHQobixyLGEscyxjLHUpe3ZvaWQgMD09PXUmJih1PSExKTt2YXIgaD1pKHU/W1tdLGNdOmIoYywoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZT09PWV0fSkpLDIpLGY9aFswXSxsPWhbMV0sZD1mLmxlbmd0aD9FKGEscyxmLHIpOmEscD11P1thXTp2b2lkIDA7cmV0dXJuW2cobC5tYXAoKGZ1bmN0aW9uKGEpe3ZhciBjO3N3aXRjaChhLnR5cGUpe2Nhc2UgVzpyZXR1cm57dHlwZTpXLF9ldmVudDpMKGEuZXZlbnQpfTtjYXNlIFk6cmV0dXJuIGZ1bmN0aW9uKHQsbixyLGkpe3ZhciBvLGE9e19ldmVudDpyfSxzPUwoTih0LmV2ZW50KT90LmV2ZW50KG4sci5kYXRhLGEpOnQuZXZlbnQpO2lmKEEodC5kZWxheSkpe3ZhciBjPWkmJmlbdC5kZWxheV07bz1OKGMpP2MobixyLmRhdGEsYSk6Y31lbHNlIG89Tih0LmRlbGF5KT90LmRlbGF5KG4sci5kYXRhLGEpOnQuZGVsYXk7dmFyIHU9Tih0LnRvKT90LnRvKG4sci5kYXRhLGEpOnQudG87cmV0dXJuIGUoZSh7fSx0KSx7dG86dSxfZXZlbnQ6cyxldmVudDpzLmRhdGEsZGVsYXk6b30pfShhLGQscyxuLm9wdGlvbnMuZGVsYXlzKTtjYXNlIG50OnJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIGUoZSh7fSx0KSx7dmFsdWU6QSh0LmV4cHIpP3QuZXhwcjp0LmV4cHIobixyLmRhdGEse19ldmVudDpyfSl9KX0oYSxkLHMpO2Nhc2UgY3Q6aWYoISh2PW51bGw9PT0oYz1hLmNvbmRzLmZpbmQoKGZ1bmN0aW9uKHQpe3ZhciBlPU8odC5jb25kLG4ub3B0aW9ucy5ndWFyZHMpO3JldHVybiFlfHxSKG4sZSxkLHMscil9KSkpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmFjdGlvbnMpKXJldHVybltdO3ZhciBoPWkoUHQobixyLGQscyxkdChTKHYpLG4ub3B0aW9ucy5hY3Rpb25zKSx1KSwyKSxmPWhbMF0sbD1oWzFdO3JldHVybiBkPWwsbnVsbD09cHx8cC5wdXNoKGQpLGY7Y2FzZSB1dDp2YXIgdjtpZighKHY9YS5nZXQoZCxzLmRhdGEpKSlyZXR1cm5bXTt2YXIgeT1pKFB0KG4scixkLHMsZHQoUyh2KSxuLm9wdGlvbnMuYWN0aW9ucyksdSksMiksZz15WzBdLG09eVsxXTtyZXR1cm4gZD1tLG51bGw9PXB8fHAucHVzaChkKSxnO2Nhc2UgUTpyZXR1cm4gZnVuY3Rpb24oZSxuLHIpe3ZhciBpPU4oZS5hY3Rpdml0eSk/ZS5hY3Rpdml0eShuLHIuZGF0YSk6ZS5hY3Rpdml0eSxvPVwic3RyaW5nXCI9PXR5cGVvZiBpP3tpZDppfTppO3JldHVybnt0eXBlOnQuQWN0aW9uVHlwZXMuU3RvcCxhY3Rpdml0eTpvfX0oYSxkLHMpO2Nhc2UgZXQ6ZD1FKGQscyxbYV0sciksbnVsbD09cHx8cC5wdXNoKGQpO2JyZWFrO2RlZmF1bHQ6dmFyIHg9bHQoYSxuLm9wdGlvbnMuYWN0aW9ucyksdz14LmV4ZWM7aWYodyYmcCl7dmFyIGI9cC5sZW5ndGgtMTt4PWUoZSh7fSx4KSx7ZXhlYzpmdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuLTFdPWFyZ3VtZW50c1tuXTt3LmFwcGx5KHZvaWQgMCxvKFtwW2JdXSxpKGUpLCExKSl9fSl9cmV0dXJuIHh9fSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuISF0fSkpKSxkXX12YXIga3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlLG4scj10aGlzO3RoaXMuYWN0aW9ucz1bXSx0aGlzLmFjdGl2aXRpZXM9YSx0aGlzLm1ldGE9e30sdGhpcy5ldmVudHM9W10sdGhpcy52YWx1ZT10LnZhbHVlLHRoaXMuY29udGV4dD10LmNvbnRleHQsdGhpcy5fZXZlbnQ9dC5fZXZlbnQsdGhpcy5fc2Vzc2lvbmlkPXQuX3Nlc3Npb25pZCx0aGlzLmV2ZW50PXRoaXMuX2V2ZW50LmRhdGEsdGhpcy5oaXN0b3J5VmFsdWU9dC5oaXN0b3J5VmFsdWUsdGhpcy5oaXN0b3J5PXQuaGlzdG9yeSx0aGlzLmFjdGlvbnM9dC5hY3Rpb25zfHxbXSx0aGlzLmFjdGl2aXRpZXM9dC5hY3Rpdml0aWVzfHxhLHRoaXMubWV0YT0odm9pZCAwPT09KG49dC5jb25maWd1cmF0aW9uKSYmKG49W10pLG4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDAhPT1lLm1ldGEmJih0W2UuaWRdPWUubWV0YSksdH0pLHt9KSksdGhpcy5ldmVudHM9dC5ldmVudHN8fFtdLHRoaXMubWF0Y2hlcz10aGlzLm1hdGNoZXMuYmluZCh0aGlzKSx0aGlzLnRvU3RyaW5ncz10aGlzLnRvU3RyaW5ncy5iaW5kKHRoaXMpLHRoaXMuY29uZmlndXJhdGlvbj10LmNvbmZpZ3VyYXRpb24sdGhpcy50cmFuc2l0aW9ucz10LnRyYW5zaXRpb25zLHRoaXMuY2hpbGRyZW49dC5jaGlsZHJlbix0aGlzLmRvbmU9ISF0LmRvbmUsdGhpcy50YWdzPW51bGwhPT0oZT1BcnJheS5pc0FycmF5KHQudGFncyk/bmV3IFNldCh0LnRhZ3MpOnQudGFncykmJnZvaWQgMCE9PWU/ZTpuZXcgU2V0LHRoaXMubWFjaGluZT10Lm1hY2hpbmUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJuZXh0RXZlbnRzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbyhbXSxpKG5ldyBTZXQoZyhvKFtdLGkodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm93bkV2ZW50c30pKSksITEpKSkpLCExKX0oci5jb25maWd1cmF0aW9uKX19KX1yZXR1cm4gdC5mcm9tPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGUgaW5zdGFuY2VvZiB0P2UuY29udGV4dCE9PW4/bmV3IHQoe3ZhbHVlOmUudmFsdWUsY29udGV4dDpuLF9ldmVudDplLl9ldmVudCxfc2Vzc2lvbmlkOm51bGwsaGlzdG9yeVZhbHVlOmUuaGlzdG9yeVZhbHVlLGhpc3Rvcnk6ZS5oaXN0b3J5LGFjdGlvbnM6W10sYWN0aXZpdGllczplLmFjdGl2aXRpZXMsbWV0YTp7fSxldmVudHM6W10sY29uZmlndXJhdGlvbjpbXSx0cmFuc2l0aW9uczpbXSxjaGlsZHJlbjp7fX0pOmU6bmV3IHQoe3ZhbHVlOmUsY29udGV4dDpuLF9ldmVudDpodCxfc2Vzc2lvbmlkOm51bGwsaGlzdG9yeVZhbHVlOnZvaWQgMCxoaXN0b3J5OnZvaWQgMCxhY3Rpb25zOltdLGFjdGl2aXRpZXM6dm9pZCAwLG1ldGE6dm9pZCAwLGV2ZW50czpbXSxjb25maWd1cmF0aW9uOltdLHRyYW5zaXRpb25zOltdLGNoaWxkcmVuOnt9fSl9LHQuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlKX0sdC5pbmVydD1mdW5jdGlvbihlLG4pe2lmKGUgaW5zdGFuY2VvZiB0KXtpZighZS5hY3Rpb25zLmxlbmd0aClyZXR1cm4gZTt2YXIgcj1odDtyZXR1cm4gbmV3IHQoe3ZhbHVlOmUudmFsdWUsY29udGV4dDpuLF9ldmVudDpyLF9zZXNzaW9uaWQ6bnVsbCxoaXN0b3J5VmFsdWU6ZS5oaXN0b3J5VmFsdWUsaGlzdG9yeTplLmhpc3RvcnksYWN0aXZpdGllczplLmFjdGl2aXRpZXMsY29uZmlndXJhdGlvbjplLmNvbmZpZ3VyYXRpb24sdHJhbnNpdGlvbnM6W10sY2hpbGRyZW46e319KX1yZXR1cm4gdC5mcm9tKGUsbil9LHQucHJvdG90eXBlLnRvU3RyaW5ncz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYodm9pZCAwPT09dCYmKHQ9dGhpcy52YWx1ZSksdm9pZCAwPT09ZSYmKGU9XCIuXCIpLEEodCkpcmV0dXJuW3RdO3ZhciByPXModCk7cmV0dXJuIHIuY29uY2F0LmFwcGx5KHIsbyhbXSxpKHIubWFwKChmdW5jdGlvbihyKXtyZXR1cm4gbi50b1N0cmluZ3ModFtyXSxlKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiByK2UrdH0pKX0pKSksITEpKX0sdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxyPSh0LmNvbmZpZ3VyYXRpb24sdC50cmFuc2l0aW9ucyx0LnRhZ3MpLGk9KHQubWFjaGluZSxuKHQsW1wiY29uZmlndXJhdGlvblwiLFwidHJhbnNpdGlvbnNcIixcInRhZ3NcIixcIm1hY2hpbmVcIl0pKTtyZXR1cm4gZShlKHt9LGkpLHt0YWdzOkFycmF5LmZyb20ocil9KX0sdC5wcm90b3R5cGUubWF0Y2hlcz1mdW5jdGlvbih0KXtyZXR1cm4gYyh0LHRoaXMudmFsdWUpfSx0LnByb3RvdHlwZS5oYXNUYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGFncy5oYXModCl9LHQucHJvdG90eXBlLmNhbj1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gdGhpcy5tYWNoaW5lLCEhKG51bGw9PT0oZT10aGlzLm1hY2hpbmUpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnRyYW5zaXRpb24odGhpcyx0KS5jaGFuZ2VkKX0sdH0oKSxJdD1bXSxqdD1mdW5jdGlvbih0LGUpe0l0LnB1c2godCk7dmFyIG49ZSh0KTtyZXR1cm4gSXQucG9wKCksbn07ZnVuY3Rpb24gQ3QodCl7cmV0dXJue2lkOnQsc2VuZDpmdW5jdGlvbigpe30sc3Vic2NyaWJlOmZ1bmN0aW9uKCl7cmV0dXJue3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7fX19LGdldFNuYXBzaG90OmZ1bmN0aW9uKCl7fSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57aWQ6dH19fX1mdW5jdGlvbiBWdCh0LGUsbil7dmFyIHI9Q3QoZSk7aWYoci5kZWZlcnJlZD0hMCxrKHQpKXt2YXIgaT1yLnN0YXRlPWp0KHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4obj90LndpdGhDb250ZXh0KG4pOnQpLmluaXRpYWxTdGF0ZX0pKTtyLmdldFNuYXBzaG90PWZ1bmN0aW9uKCl7cmV0dXJuIGl9fXJldHVybiByfWZ1bmN0aW9uIEx0KHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXt2YXIgZT17dHlwZTp0LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHR9fTtyZXR1cm4gZX1yZXR1cm4gdH1mdW5jdGlvbiBEdCh0KXtyZXR1cm4gZShlKHt0eXBlOml0fSx0KSx7dG9KU09OOmZ1bmN0aW9uKCl7dC5vbkRvbmUsdC5vbkVycm9yO3ZhciByPW4odCxbXCJvbkRvbmVcIixcIm9uRXJyb3JcIl0pO3JldHVybiBlKGUoe30scikse3R5cGU6aXQsc3JjOkx0KHQuc3JjKX0pfX0pfXZhciBSdD17fSxNdD1mdW5jdGlvbih0KXtyZXR1cm5cIiNcIj09PXRbMF19LHp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSh0LG4sYyl7dmFyIHUsaD10aGlzO3ZvaWQgMD09PWMmJihjPVwiY29udGV4dFwiaW4gdD90LmNvbnRleHQ6dm9pZCAwKSx0aGlzLmNvbmZpZz10LHRoaXMuX2NvbnRleHQ9Yyx0aGlzLm9yZGVyPS0xLHRoaXMuX194c3RhdGVub2RlPSEwLHRoaXMuX19jYWNoZT17ZXZlbnRzOnZvaWQgMCxyZWxhdGl2ZVZhbHVlOm5ldyBNYXAsaW5pdGlhbFN0YXRlVmFsdWU6dm9pZCAwLGluaXRpYWxTdGF0ZTp2b2lkIDAsb246dm9pZCAwLHRyYW5zaXRpb25zOnZvaWQgMCxjYW5kaWRhdGVzOnt9LGRlbGF5ZWRUcmFuc2l0aW9uczp2b2lkIDB9LHRoaXMuaWRNYXA9e30sdGhpcy50YWdzPVtdLHRoaXMub3B0aW9ucz1PYmplY3QuYXNzaWduKHthY3Rpb25zOnt9LGd1YXJkczp7fSxzZXJ2aWNlczp7fSxhY3Rpdml0aWVzOnt9LGRlbGF5czp7fX0sbiksdGhpcy5wYXJlbnQ9dGhpcy5vcHRpb25zLl9wYXJlbnQsdGhpcy5rZXk9dGhpcy5jb25maWcua2V5fHx0aGlzLm9wdGlvbnMuX2tleXx8dGhpcy5jb25maWcuaWR8fFwiKG1hY2hpbmUpXCIsdGhpcy5tYWNoaW5lPXRoaXMucGFyZW50P3RoaXMucGFyZW50Lm1hY2hpbmU6dGhpcyx0aGlzLnBhdGg9dGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQucGF0aC5jb25jYXQodGhpcy5rZXkpOltdLHRoaXMuZGVsaW1pdGVyPXRoaXMuY29uZmlnLmRlbGltaXRlcnx8KHRoaXMucGFyZW50P3RoaXMucGFyZW50LmRlbGltaXRlcjpcIi5cIiksdGhpcy5pZD10aGlzLmNvbmZpZy5pZHx8byhbdGhpcy5tYWNoaW5lLmtleV0saSh0aGlzLnBhdGgpLCExKS5qb2luKHRoaXMuZGVsaW1pdGVyKSx0aGlzLnZlcnNpb249dGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQudmVyc2lvbjp0aGlzLmNvbmZpZy52ZXJzaW9uLHRoaXMudHlwZT10aGlzLmNvbmZpZy50eXBlfHwodGhpcy5jb25maWcucGFyYWxsZWw/XCJwYXJhbGxlbFwiOnRoaXMuY29uZmlnLnN0YXRlcyYmcyh0aGlzLmNvbmZpZy5zdGF0ZXMpLmxlbmd0aD9cImNvbXBvdW5kXCI6dGhpcy5jb25maWcuaGlzdG9yeT9cImhpc3RvcnlcIjpcImF0b21pY1wiKSx0aGlzLnNjaGVtYT10aGlzLnBhcmVudD90aGlzLm1hY2hpbmUuc2NoZW1hOm51bGwhPT0odT10aGlzLmNvbmZpZy5zY2hlbWEpJiZ2b2lkIDAhPT11P3U6e30sdGhpcy5kZXNjcmlwdGlvbj10aGlzLmNvbmZpZy5kZXNjcmlwdGlvbix0aGlzLmluaXRpYWw9dGhpcy5jb25maWcuaW5pdGlhbCx0aGlzLnN0YXRlcz10aGlzLmNvbmZpZy5zdGF0ZXM/ZCh0aGlzLmNvbmZpZy5zdGF0ZXMsKGZ1bmN0aW9uKHQsbil7dmFyIHIsaT1uZXcgYSh0LHtfcGFyZW50OmgsX2tleTpufSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oaC5pZE1hcCxlKCgocj17fSlbaS5pZF09aSxyKSxpLmlkTWFwKSksaX0pKTpSdDt2YXIgZj0wOyFmdW5jdGlvbiB0KGUpe3ZhciBuLGk7ZS5vcmRlcj1mKys7dHJ5e2Zvcih2YXIgbz1yKFUoZSkpLGE9by5uZXh0KCk7IWEuZG9uZTthPW8ubmV4dCgpKXt0KGEudmFsdWUpfX1jYXRjaCh0KXtuPXtlcnJvcjp0fX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYoaT1vLnJldHVybikmJmkuY2FsbChvKX1maW5hbGx5e2lmKG4pdGhyb3cgbi5lcnJvcn19fSh0aGlzKSx0aGlzLmhpc3Rvcnk9ITA9PT10aGlzLmNvbmZpZy5oaXN0b3J5P1wic2hhbGxvd1wiOnRoaXMuY29uZmlnLmhpc3Rvcnl8fCExLHRoaXMuX3RyYW5zaWVudD0hIXRoaXMuY29uZmlnLmFsd2F5c3x8ISF0aGlzLmNvbmZpZy5vbiYmKEFycmF5LmlzQXJyYXkodGhpcy5jb25maWcub24pP3RoaXMuY29uZmlnLm9uLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVyblwiXCI9PT10LmV2ZW50fSkpOlwiXCJpbiB0aGlzLmNvbmZpZy5vbiksdGhpcy5zdHJpY3Q9ISF0aGlzLmNvbmZpZy5zdHJpY3QsdGhpcy5vbkVudHJ5PVModGhpcy5jb25maWcuZW50cnl8fHRoaXMuY29uZmlnLm9uRW50cnkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGx0KHQpfSkpLHRoaXMub25FeGl0PVModGhpcy5jb25maWcuZXhpdHx8dGhpcy5jb25maWcub25FeGl0KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBsdCh0KX0pKSx0aGlzLm1ldGE9dGhpcy5jb25maWcubWV0YSx0aGlzLmRvbmVEYXRhPVwiZmluYWxcIj09PXRoaXMudHlwZT90aGlzLmNvbmZpZy5kYXRhOnZvaWQgMCx0aGlzLmludm9rZT1TKHRoaXMuY29uZmlnLmludm9rZSkubWFwKChmdW5jdGlvbih0LG4pe3ZhciByLGk7aWYoayh0KSlyZXR1cm4gaC5tYWNoaW5lLm9wdGlvbnMuc2VydmljZXM9ZSgoKHI9e30pW3QuaWRdPXQsciksaC5tYWNoaW5lLm9wdGlvbnMuc2VydmljZXMpLER0KHtzcmM6dC5pZCxpZDp0LmlkfSk7aWYoQSh0LnNyYykpcmV0dXJuIER0KGUoZSh7fSx0KSx7aWQ6dC5pZHx8dC5zcmMsc3JjOnQuc3JjfSkpO2lmKGsodC5zcmMpfHxOKHQuc3JjKSl7dmFyIG89XCJcIi5jb25jYXQoaC5pZCxcIjppbnZvY2F0aW9uW1wiKS5jb25jYXQobixcIl1cIik7cmV0dXJuIGgubWFjaGluZS5vcHRpb25zLnNlcnZpY2VzPWUoKChpPXt9KVtvXT10LnNyYyxpKSxoLm1hY2hpbmUub3B0aW9ucy5zZXJ2aWNlcyksRHQoZShlKHtpZDpvfSx0KSx7c3JjOm99KSl9dmFyIGE9dC5zcmM7cmV0dXJuIER0KGUoZSh7aWQ6YS50eXBlfSx0KSx7c3JjOmF9KSl9KSksdGhpcy5hY3Rpdml0aWVzPVModGhpcy5jb25maWcuYWN0aXZpdGllcykuY29uY2F0KHRoaXMuaW52b2tlKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBwdCh0KX0pKSx0aGlzLnRyYW5zaXRpb249dGhpcy50cmFuc2l0aW9uLmJpbmQodGhpcyksdGhpcy50YWdzPVModGhpcy5jb25maWcudGFncyl9cmV0dXJuIGEucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKCl7dGhpcy5fX2NhY2hlLnRyYW5zaXRpb25zfHxCKHRoaXMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm9ufSkpfSxhLnByb3RvdHlwZS53aXRoQ29uZmlnPWZ1bmN0aW9uKHQsbil7dmFyIHI9dGhpcy5vcHRpb25zLGk9ci5hY3Rpb25zLG89ci5hY3Rpdml0aWVzLHM9ci5ndWFyZHMsYz1yLnNlcnZpY2VzLHU9ci5kZWxheXM7cmV0dXJuIG5ldyBhKHRoaXMuY29uZmlnLHthY3Rpb25zOmUoZSh7fSxpKSx0LmFjdGlvbnMpLGFjdGl2aXRpZXM6ZShlKHt9LG8pLHQuYWN0aXZpdGllcyksZ3VhcmRzOmUoZSh7fSxzKSx0Lmd1YXJkcyksc2VydmljZXM6ZShlKHt9LGMpLHQuc2VydmljZXMpLGRlbGF5czplKGUoe30sdSksdC5kZWxheXMpfSxudWxsIT1uP246dGhpcy5jb250ZXh0KX0sYS5wcm90b3R5cGUud2l0aENvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBhKHRoaXMuY29uZmlnLHRoaXMub3B0aW9ucyx0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGEucHJvdG90eXBlLFwiY29udGV4dFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLl9jb250ZXh0KT90aGlzLl9jb250ZXh0KCk6dGhpcy5fY29udGV4dH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5wcm90b3R5cGUsXCJkZWZpbml0aW9uXCIse2dldDpmdW5jdGlvbigpe3JldHVybntpZDp0aGlzLmlkLGtleTp0aGlzLmtleSx2ZXJzaW9uOnRoaXMudmVyc2lvbixjb250ZXh0OnRoaXMuY29udGV4dCx0eXBlOnRoaXMudHlwZSxpbml0aWFsOnRoaXMuaW5pdGlhbCxoaXN0b3J5OnRoaXMuaGlzdG9yeSxzdGF0ZXM6ZCh0aGlzLnN0YXRlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVmaW5pdGlvbn0pKSxvbjp0aGlzLm9uLHRyYW5zaXRpb25zOnRoaXMudHJhbnNpdGlvbnMsZW50cnk6dGhpcy5vbkVudHJ5LGV4aXQ6dGhpcy5vbkV4aXQsYWN0aXZpdGllczp0aGlzLmFjdGl2aXRpZXN8fFtdLG1ldGE6dGhpcy5tZXRhLG9yZGVyOnRoaXMub3JkZXJ8fC0xLGRhdGE6dGhpcy5kb25lRGF0YSxpbnZva2U6dGhpcy5pbnZva2UsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbix0YWdzOnRoaXMudGFnc319LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksYS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmaW5pdGlvbn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGEucHJvdG90eXBlLFwib25cIix7Z2V0OmZ1bmN0aW9uKCl7aWYodGhpcy5fX2NhY2hlLm9uKXJldHVybiB0aGlzLl9fY2FjaGUub247dmFyIHQ9dGhpcy50cmFuc2l0aW9ucztyZXR1cm4gdGhpcy5fX2NhY2hlLm9uPXQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0W2UuZXZlbnRUeXBlXT10W2UuZXZlbnRUeXBlXXx8W10sdFtlLmV2ZW50VHlwZV0ucHVzaChlKSx0fSkse30pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcImFmdGVyXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9fY2FjaGUuZGVsYXllZFRyYW5zaXRpb25zfHwodGhpcy5fX2NhY2hlLmRlbGF5ZWRUcmFuc2l0aW9ucz10aGlzLmdldERlbGF5ZWRUcmFuc2l0aW9ucygpLHRoaXMuX19jYWNoZS5kZWxheWVkVHJhbnNpdGlvbnMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcInRyYW5zaXRpb25zXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9fY2FjaGUudHJhbnNpdGlvbnN8fCh0aGlzLl9fY2FjaGUudHJhbnNpdGlvbnM9dGhpcy5mb3JtYXRUcmFuc2l0aW9ucygpLHRoaXMuX19jYWNoZS50cmFuc2l0aW9ucyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksYS5wcm90b3R5cGUuZ2V0Q2FuZGlkYXRlcz1mdW5jdGlvbih0KXtpZih0aGlzLl9fY2FjaGUuY2FuZGlkYXRlc1t0XSlyZXR1cm4gdGhpcy5fX2NhY2hlLmNhbmRpZGF0ZXNbdF07dmFyIGU9XCJcIj09PXQsbj10aGlzLnRyYW5zaXRpb25zLmZpbHRlcigoZnVuY3Rpb24obil7dmFyIHI9bi5ldmVudFR5cGU9PT10O3JldHVybiBlP3I6cnx8XCIqXCI9PT1uLmV2ZW50VHlwZX0pKTtyZXR1cm4gdGhpcy5fX2NhY2hlLmNhbmRpZGF0ZXNbdF09bixufSxhLnByb3RvdHlwZS5nZXREZWxheWVkVHJhbnNpdGlvbnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49dGhpcy5jb25maWcuYWZ0ZXI7aWYoIW4pcmV0dXJuW107dmFyIHI9ZnVuY3Rpb24oZSxuKXt2YXIgcj1FdChOKGUpP1wiXCIuY29uY2F0KHQuaWQsXCI6ZGVsYXlbXCIpLmNvbmNhdChuLFwiXVwiKTplLHQuaWQpO3JldHVybiB0Lm9uRW50cnkucHVzaCh5dChyLHtkZWxheTplfSkpLHQub25FeGl0LnB1c2goeHQocikpLHJ9O3JldHVybihUKG4pP24ubWFwKChmdW5jdGlvbih0LG4pe3ZhciBpPXIodC5kZWxheSxuKTtyZXR1cm4gZShlKHt9LHQpLHtldmVudDppfSl9KSk6ZyhzKG4pLm1hcCgoZnVuY3Rpb24odCxpKXt2YXIgbz1uW3RdLGE9QShvKT97dGFyZ2V0Om99Om8scz1pc05hTigrdCk/dDordCxjPXIocyxpKTtyZXR1cm4gUyhhKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlKGUoe30sdCkse2V2ZW50OmMsZGVsYXk6c30pfSkpfSkpKSkubWFwKChmdW5jdGlvbihuKXt2YXIgcj1uLmRlbGF5O3JldHVybiBlKGUoe30sdC5mb3JtYXRUcmFuc2l0aW9uKG4pKSx7ZGVsYXk6cn0pfSkpfSxhLnByb3RvdHlwZS5nZXRTdGF0ZU5vZGVzPWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcztpZighdClyZXR1cm5bXTt2YXIgcj10IGluc3RhbmNlb2Yga3Q/dC52YWx1ZTpmKHQsdGhpcy5kZWxpbWl0ZXIpO2lmKEEocikpe3ZhciBpPXRoaXMuZ2V0U3RhdGVOb2RlKHIpLmluaXRpYWw7cmV0dXJuIHZvaWQgMCE9PWk/dGhpcy5nZXRTdGF0ZU5vZGVzKCgoZT17fSlbcl09aSxlKSk6W3RoaXMsdGhpcy5zdGF0ZXNbcl1dfXZhciBvPXMociksYT1vLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uZ2V0U3RhdGVOb2RlKHQpfSkpO3JldHVybiBhLnB1c2godGhpcyksYS5jb25jYXQoby5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9bi5nZXRTdGF0ZU5vZGUoZSkuZ2V0U3RhdGVOb2RlcyhyW2VdKTtyZXR1cm4gdC5jb25jYXQoaSl9KSxbXSkpfSxhLnByb3RvdHlwZS5oYW5kbGVzPWZ1bmN0aW9uKHQpe3ZhciBlPXUodCk7cmV0dXJuIHRoaXMuZXZlbnRzLmluY2x1ZGVzKGUpfSxhLnByb3RvdHlwZS5yZXNvbHZlU3RhdGU9ZnVuY3Rpb24odCl7dmFyIG49QXJyYXkuZnJvbShKKFtdLHRoaXMuZ2V0U3RhdGVOb2Rlcyh0LnZhbHVlKSkpO3JldHVybiBuZXcga3QoZShlKHt9LHQpLHt2YWx1ZTp0aGlzLnJlc29sdmUodC52YWx1ZSksY29uZmlndXJhdGlvbjpuLGRvbmU6SChuLHRoaXMpLHRhZ3M6RyhuKX0pKX0sYS5wcm90b3R5cGUudHJhbnNpdGlvbkxlYWZOb2RlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLmdldFN0YXRlTm9kZSh0KS5uZXh0KGUsbik7cmV0dXJuIHImJnIudHJhbnNpdGlvbnMubGVuZ3RoP3I6dGhpcy5uZXh0KGUsbil9LGEucHJvdG90eXBlLnRyYW5zaXRpb25Db21wb3VuZE5vZGU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXModCksaT10aGlzLmdldFN0YXRlTm9kZShyWzBdKS5fdHJhbnNpdGlvbih0W3JbMF1dLGUsbik7cmV0dXJuIGkmJmkudHJhbnNpdGlvbnMubGVuZ3RoP2k6dGhpcy5uZXh0KGUsbil9LGEucHJvdG90eXBlLnRyYW5zaXRpb25QYXJhbGxlbE5vZGU9ZnVuY3Rpb24odCxlLG4pe3ZhciBpLG8sYT17fTt0cnl7Zm9yKHZhciBjPXIocyh0KSksdT1jLm5leHQoKTshdS5kb25lO3U9Yy5uZXh0KCkpe3ZhciBoPXUudmFsdWUsZj10W2hdO2lmKGYpe3ZhciBsPXRoaXMuZ2V0U3RhdGVOb2RlKGgpLl90cmFuc2l0aW9uKGYsZSxuKTtsJiYoYVtoXT1sKX19fWNhdGNoKHQpe2k9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3UmJiF1LmRvbmUmJihvPWMucmV0dXJuKSYmby5jYWxsKGMpfWZpbmFsbHl7aWYoaSl0aHJvdyBpLmVycm9yfX12YXIgZD1zKGEpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGFbdF19KSkscD1nKGQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC50cmFuc2l0aW9uc30pKSk7aWYoIWQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQudHJhbnNpdGlvbnMubGVuZ3RoPjB9KSkpcmV0dXJuIHRoaXMubmV4dChlLG4pO3ZhciB2PWcoZC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmVudHJ5U2V0fSkpKSx5PWcocyhhKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBhW3RdLmNvbmZpZ3VyYXRpb259KSkpO3JldHVybnt0cmFuc2l0aW9uczpwLGVudHJ5U2V0OnYsZXhpdFNldDpnKGQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5leGl0U2V0fSkpKSxjb25maWd1cmF0aW9uOnksc291cmNlOmUsYWN0aW9uczpnKHMoYSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gYVt0XS5hY3Rpb25zfSkpKX19LGEucHJvdG90eXBlLl90cmFuc2l0aW9uPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gQSh0KT90aGlzLnRyYW5zaXRpb25MZWFmTm9kZSh0LGUsbik6MT09PXModCkubGVuZ3RoP3RoaXMudHJhbnNpdGlvbkNvbXBvdW5kTm9kZSh0LGUsbik6dGhpcy50cmFuc2l0aW9uUGFyYWxsZWxOb2RlKHQsZSxuKX0sYS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0LGUpe3ZhciBuLGEscyx1PXRoaXMsaD1lLm5hbWUsbD1bXSxkPVtdO3RyeXtmb3IodmFyIHA9cih0aGlzLmdldENhbmRpZGF0ZXMoaCkpLHk9cC5uZXh0KCk7IXkuZG9uZTt5PXAubmV4dCgpKXt2YXIgbT15LnZhbHVlLFM9bS5jb25kLHg9bS5pbix3PXQuY29udGV4dCxiPSF4fHwoQSh4KSYmTXQoeCk/dC5tYXRjaGVzKGYodGhpcy5nZXRTdGF0ZU5vZGVCeUlkKHgpLnBhdGgsdGhpcy5kZWxpbWl0ZXIpKTpjKGYoeCx0aGlzLmRlbGltaXRlciksdih0aGlzLnBhdGguc2xpY2UoMCwtMikpKHQudmFsdWUpKSksXz0hMTt0cnl7Xz0hU3x8Uih0aGlzLm1hY2hpbmUsUyx3LGUsdCl9Y2F0Y2godCl7dGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGV2YWx1YXRlIGd1YXJkICdcIi5jb25jYXQoUy5uYW1lfHxTLnR5cGUsXCInIGluIHRyYW5zaXRpb24gZm9yIGV2ZW50ICdcIikuY29uY2F0KGgsXCInIGluIHN0YXRlIG5vZGUgJ1wiKS5jb25jYXQodGhpcy5pZCxcIic6XFxuXCIpLmNvbmNhdCh0Lm1lc3NhZ2UpKX1pZihfJiZiKXt2b2lkIDAhPT1tLnRhcmdldCYmKGQ9bS50YXJnZXQpLGwucHVzaC5hcHBseShsLG8oW10saShtLmFjdGlvbnMpLCExKSkscz1tO2JyZWFrfX19Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7eSYmIXkuZG9uZSYmKGE9cC5yZXR1cm4pJiZhLmNhbGwocCl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fWlmKHMpe2lmKCFkLmxlbmd0aClyZXR1cm57dHJhbnNpdGlvbnM6W3NdLGVudHJ5U2V0OltdLGV4aXRTZXQ6W10sY29uZmlndXJhdGlvbjp0LnZhbHVlP1t0aGlzXTpbXSxzb3VyY2U6dCxhY3Rpb25zOmx9O3ZhciBFPWcoZC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB1LmdldFJlbGF0aXZlU3RhdGVOb2RlcyhlLHQuaGlzdG9yeVZhbHVlKX0pKSksVD0hIXMuaW50ZXJuYWw7cmV0dXJue3RyYW5zaXRpb25zOltzXSxlbnRyeVNldDpUP1tdOmcoRS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB1Lm5vZGVzRnJvbUNoaWxkKHQpfSkpKSxleGl0U2V0OlQ/W106W3RoaXNdLGNvbmZpZ3VyYXRpb246RSxzb3VyY2U6dCxhY3Rpb25zOmx9fX0sYS5wcm90b3R5cGUubm9kZXNGcm9tQ2hpbGQ9ZnVuY3Rpb24odCl7aWYodC5lc2NhcGVzKHRoaXMpKXJldHVybltdO2Zvcih2YXIgZT1bXSxuPXQ7biYmbiE9PXRoaXM7KWUucHVzaChuKSxuPW4ucGFyZW50O3JldHVybiBlLnB1c2godGhpcyksZX0sYS5wcm90b3R5cGUuZXNjYXBlcz1mdW5jdGlvbih0KXtpZih0aGlzPT09dClyZXR1cm4hMTtmb3IodmFyIGU9dGhpcy5wYXJlbnQ7ZTspe2lmKGU9PT10KXJldHVybiExO2U9ZS5wYXJlbnR9cmV0dXJuITB9LGEucHJvdG90eXBlLmdldEFjdGlvbnM9ZnVuY3Rpb24odCxlLG4sYSl7dmFyIHMsYyx1LGgsZj1KKFtdLGE/dGhpcy5nZXRTdGF0ZU5vZGVzKGEudmFsdWUpOlt0aGlzXSksbD10LmNvbmZpZ3VyYXRpb24ubGVuZ3RoP0ooZix0LmNvbmZpZ3VyYXRpb24pOmY7dHJ5e2Zvcih2YXIgZD1yKGwpLHA9ZC5uZXh0KCk7IXAuZG9uZTtwPWQubmV4dCgpKXtYKGYsbT1wLnZhbHVlKXx8dC5lbnRyeVNldC5wdXNoKG0pfX1jYXRjaCh0KXtzPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtwJiYhcC5kb25lJiYoYz1kLnJldHVybikmJmMuY2FsbChkKX1maW5hbGx5e2lmKHMpdGhyb3cgcy5lcnJvcn19dHJ5e2Zvcih2YXIgdj1yKGYpLHk9di5uZXh0KCk7IXkuZG9uZTt5PXYubmV4dCgpKXt2YXIgbTtYKGwsbT15LnZhbHVlKSYmIVgodC5leGl0U2V0LG0ucGFyZW50KXx8dC5leGl0U2V0LnB1c2gobSl9fWNhdGNoKHQpe3U9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3kmJiF5LmRvbmUmJihoPXYucmV0dXJuKSYmaC5jYWxsKHYpfWZpbmFsbHl7aWYodSl0aHJvdyB1LmVycm9yfX10LnNvdXJjZXx8KHQuZXhpdFNldD1bXSx0LmVudHJ5U2V0LnB1c2godGhpcykpO3ZhciBTPWcodC5lbnRyeVNldC5tYXAoKGZ1bmN0aW9uKHIpe3ZhciBpPVtdO2lmKFwiZmluYWxcIiE9PXIudHlwZSlyZXR1cm4gaTt2YXIgbz1yLnBhcmVudDtpZighby5wYXJlbnQpcmV0dXJuIGk7aS5wdXNoKFR0KHIuaWQsci5kb25lRGF0YSksVHQoby5pZCxyLmRvbmVEYXRhP3goci5kb25lRGF0YSxlLG4pOnZvaWQgMCkpO3ZhciBhPW8ucGFyZW50O3JldHVyblwicGFyYWxsZWxcIj09PWEudHlwZSYmVShhKS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIEgodC5jb25maWd1cmF0aW9uLGUpfSkpJiZpLnB1c2goVHQoYS5pZCkpLGl9KSkpO3QuZXhpdFNldC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBlLm9yZGVyLXQub3JkZXJ9KSksdC5lbnRyeVNldC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0Lm9yZGVyLWUub3JkZXJ9KSk7dmFyIHc9bmV3IFNldCh0LmVudHJ5U2V0KSxiPW5ldyBTZXQodC5leGl0U2V0KSxfPWkoW2coQXJyYXkuZnJvbSh3KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBvKG8oW10saSh0LmFjdGl2aXRpZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gd3QodCl9KSkpLCExKSxpKHQub25FbnRyeSksITEpfSkpKS5jb25jYXQoUy5tYXAodnQpKSxnKEFycmF5LmZyb20oYikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbyhvKFtdLGkodC5vbkV4aXQpLCExKSxpKHQuYWN0aXZpdGllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBidCh0KX0pKSksITEpfSkpKV0sMiksRT1fWzBdLFQ9X1sxXTtyZXR1cm4gZHQoVC5jb25jYXQodC5hY3Rpb25zKS5jb25jYXQoRSksdGhpcy5tYWNoaW5lLm9wdGlvbnMuYWN0aW9ucyl9LGEucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PXQmJih0PXRoaXMuaW5pdGlhbFN0YXRlKTt2YXIgcixhLHM9TChlKTtpZih0IGluc3RhbmNlb2Yga3Qpcj12b2lkIDA9PT1uP3Q6dGhpcy5yZXNvbHZlU3RhdGUoa3QuZnJvbSh0LG4pKTtlbHNle3ZhciBjPUEodCk/dGhpcy5yZXNvbHZlKGwodGhpcy5nZXRSZXNvbHZlZFBhdGgodCkpKTp0aGlzLnJlc29sdmUodCksdT1udWxsIT1uP246dGhpcy5tYWNoaW5lLmNvbnRleHQ7cj10aGlzLnJlc29sdmVTdGF0ZShrdC5mcm9tKGMsdSkpfWlmKHRoaXMuc3RyaWN0JiYhdGhpcy5ldmVudHMuaW5jbHVkZXMocy5uYW1lKSYmKGE9cy5uYW1lLCEvXihkb25lfGVycm9yKVxcLi8udGVzdChhKSkpdGhyb3cgbmV3IEVycm9yKFwiTWFjaGluZSAnXCIuY29uY2F0KHRoaXMuaWQsXCInIGRvZXMgbm90IGFjY2VwdCBldmVudCAnXCIpLmNvbmNhdChzLm5hbWUsXCInXCIpKTt2YXIgaD10aGlzLl90cmFuc2l0aW9uKHIudmFsdWUscixzKXx8e3RyYW5zaXRpb25zOltdLGNvbmZpZ3VyYXRpb246W10sZW50cnlTZXQ6W10sZXhpdFNldDpbXSxzb3VyY2U6cixhY3Rpb25zOltdfSxmPUooW10sdGhpcy5nZXRTdGF0ZU5vZGVzKHIudmFsdWUpKSxkPWguY29uZmlndXJhdGlvbi5sZW5ndGg/SihmLGguY29uZmlndXJhdGlvbik6ZjtyZXR1cm4gaC5jb25maWd1cmF0aW9uPW8oW10saShkKSwhMSksdGhpcy5yZXNvbHZlVHJhbnNpdGlvbihoLHIscyl9LGEucHJvdG90eXBlLnJlc29sdmVSYWlzZWRUcmFuc2l0aW9uPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixhPXQuYWN0aW9ucztyZXR1cm4odD10aGlzLnRyYW5zaXRpb24odCxlKSkuX2V2ZW50PW4sdC5ldmVudD1uLmRhdGEsKHI9dC5hY3Rpb25zKS51bnNoaWZ0LmFwcGx5KHIsbyhbXSxpKGEpLCExKSksdH0sYS5wcm90b3R5cGUucmVzb2x2ZVRyYW5zaXRpb249ZnVuY3Rpb24obixvLGEsYyl7dmFyIHUsaCxmPXRoaXM7dm9pZCAwPT09YSYmKGE9aHQpLHZvaWQgMD09PWMmJihjPXRoaXMubWFjaGluZS5jb250ZXh0KTt2YXIgbD1uLmNvbmZpZ3VyYXRpb24sZD0hb3x8bi50cmFuc2l0aW9ucy5sZW5ndGg+MCxwPWQ/JCh0aGlzLm1hY2hpbmUsbCk6dm9pZCAwLHY9bz9vLmhpc3RvcnlWYWx1ZT9vLmhpc3RvcnlWYWx1ZTpuLnNvdXJjZT90aGlzLm1hY2hpbmUuaGlzdG9yeVZhbHVlKG8udmFsdWUpOnZvaWQgMDp2b2lkIDAseT1vP28uY29udGV4dDpjLGc9dGhpcy5nZXRBY3Rpb25zKG4seSxhLG8pLG09bz9lKHt9LG8uYWN0aXZpdGllcyk6e307dHJ5e2Zvcih2YXIgUz1yKGcpLHc9Uy5uZXh0KCk7IXcuZG9uZTt3PVMubmV4dCgpKXt2YXIgRT13LnZhbHVlO0UudHlwZT09PUs/bVtFLmFjdGl2aXR5LmlkfHxFLmFjdGl2aXR5LnR5cGVdPUU6RS50eXBlPT09USYmKG1bRS5hY3Rpdml0eS5pZHx8RS5hY3Rpdml0eS50eXBlXT0hMSl9fWNhdGNoKHQpe3U9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3cmJiF3LmRvbmUmJihoPVMucmV0dXJuKSYmaC5jYWxsKFMpfWZpbmFsbHl7aWYodSl0aHJvdyB1LmVycm9yfX12YXIgVCxOLE89aShQdCh0aGlzLG8seSxhLGcsdGhpcy5tYWNoaW5lLmNvbmZpZy5wcmVzZXJ2ZUFjdGlvbk9yZGVyKSwyKSxQPU9bMF0saz1PWzFdLEk9aShiKFAsKGZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PT1XfHxlLnR5cGU9PT1ZJiZlLnRvPT09dC5TcGVjaWFsVGFyZ2V0cy5JbnRlcm5hbH0pKSwyKSxqPUlbMF0sQz1JWzFdLFY9UC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiB0LnR5cGU9PT1LJiYobnVsbD09PShlPXQuYWN0aXZpdHkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnR5cGUpPT09aXR9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0W2UuYWN0aXZpdHkuaWRdPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpLG89TSh0LnNyYyksYT1udWxsPT09KGk9bnVsbD09ZT92b2lkIDA6ZS5vcHRpb25zLnNlcnZpY2VzKXx8dm9pZCAwPT09aT92b2lkIDA6aVtvLnR5cGVdLHM9dC5kYXRhP3godC5kYXRhLG4scik6dm9pZCAwLGM9YT9WdChhLHQuaWQscyk6Q3QodC5pZCk7cmV0dXJuIGMubWV0YT10LGN9KGUuYWN0aXZpdHksZi5tYWNoaW5lLGssYSksdH0pLG8/ZSh7fSxvLmNoaWxkcmVuKTp7fSksTD1wP24uY29uZmlndXJhdGlvbjpvP28uY29uZmlndXJhdGlvbjpbXSxEPUgoTCx0aGlzKSxSPW5ldyBrdCh7dmFsdWU6cHx8by52YWx1ZSxjb250ZXh0OmssX2V2ZW50OmEsX3Nlc3Npb25pZDpvP28uX3Nlc3Npb25pZDpudWxsLGhpc3RvcnlWYWx1ZTpwP3Y/KFQ9dixOPXAse2N1cnJlbnQ6TixzdGF0ZXM6XyhULE4pfSk6dm9pZCAwOm8/by5oaXN0b3J5VmFsdWU6dm9pZCAwLGhpc3Rvcnk6IXB8fG4uc291cmNlP286dm9pZCAwLGFjdGlvbnM6cD9DOltdLGFjdGl2aXRpZXM6cD9tOm8/by5hY3Rpdml0aWVzOnt9LGV2ZW50czpbXSxjb25maWd1cmF0aW9uOkwsdHJhbnNpdGlvbnM6bi50cmFuc2l0aW9ucyxjaGlsZHJlbjpWLGRvbmU6RCx0YWdzOm51bGw9PW8/dm9pZCAwOm8udGFncyxtYWNoaW5lOnRoaXN9KSx6PXkhPT1rO1IuY2hhbmdlZD1hLm5hbWU9PT1zdHx8ejt2YXIgRj1SLmhpc3Rvcnk7RiYmZGVsZXRlIEYuaGlzdG9yeTt2YXIgVT0hRCYmKHRoaXMuX3RyYW5zaWVudHx8bC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5fdHJhbnNpZW50fSkpKTtpZighKGR8fFUmJlwiXCIhPT1hLm5hbWUpKXJldHVybiBSO3ZhciBCPVI7aWYoIUQpZm9yKFUmJihCPXRoaXMucmVzb2x2ZVJhaXNlZFRyYW5zaXRpb24oQix7dHlwZTp0dH0sYSkpO2oubGVuZ3RoOyl7dmFyIEo9ai5zaGlmdCgpO0I9dGhpcy5yZXNvbHZlUmFpc2VkVHJhbnNpdGlvbihCLEouX2V2ZW50LGEpfXZhciBxPUIuY2hhbmdlZHx8KEY/ISFCLmFjdGlvbnMubGVuZ3RofHx6fHx0eXBlb2YgRi52YWx1ZSE9dHlwZW9mIEIudmFsdWV8fCFmdW5jdGlvbiB0KGUsbil7aWYoZT09PW4pcmV0dXJuITA7aWYodm9pZCAwPT09ZXx8dm9pZCAwPT09bilyZXR1cm4hMTtpZihBKGUpfHxBKG4pKXJldHVybiBlPT09bjt2YXIgcj1zKGUpLGk9cyhuKTtyZXR1cm4gci5sZW5ndGg9PT1pLmxlbmd0aCYmci5ldmVyeSgoZnVuY3Rpb24ocil7cmV0dXJuIHQoZVtyXSxuW3JdKX0pKX0oQi52YWx1ZSxGLnZhbHVlKTp2b2lkIDApO3JldHVybiBCLmNoYW5nZWQ9cSxCLmhpc3Rvcnk9RixCLnRhZ3M9RyhCLmNvbmZpZ3VyYXRpb24pLEJ9LGEucHJvdG90eXBlLmdldFN0YXRlTm9kZT1mdW5jdGlvbih0KXtpZihNdCh0KSlyZXR1cm4gdGhpcy5tYWNoaW5lLmdldFN0YXRlTm9kZUJ5SWQodCk7aWYoIXRoaXMuc3RhdGVzKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byByZXRyaWV2ZSBjaGlsZCBzdGF0ZSAnXCIuY29uY2F0KHQsXCInIGZyb20gJ1wiKS5jb25jYXQodGhpcy5pZCxcIic7IG5vIGNoaWxkIHN0YXRlcyBleGlzdC5cIikpO3ZhciBlPXRoaXMuc3RhdGVzW3RdO2lmKCFlKXRocm93IG5ldyBFcnJvcihcIkNoaWxkIHN0YXRlICdcIi5jb25jYXQodCxcIicgZG9lcyBub3QgZXhpc3Qgb24gJ1wiKS5jb25jYXQodGhpcy5pZCxcIidcIikpO3JldHVybiBlfSxhLnByb3RvdHlwZS5nZXRTdGF0ZU5vZGVCeUlkPWZ1bmN0aW9uKHQpe3ZhciBlPU10KHQpP3Quc2xpY2UoXCIjXCIubGVuZ3RoKTp0O2lmKGU9PT10aGlzLmlkKXJldHVybiB0aGlzO3ZhciBuPXRoaXMubWFjaGluZS5pZE1hcFtlXTtpZighbil0aHJvdyBuZXcgRXJyb3IoXCJDaGlsZCBzdGF0ZSBub2RlICcjXCIuY29uY2F0KGUsXCInIGRvZXMgbm90IGV4aXN0IG9uIG1hY2hpbmUgJ1wiKS5jb25jYXQodGhpcy5pZCxcIidcIikpO3JldHVybiBufSxhLnByb3RvdHlwZS5nZXRTdGF0ZU5vZGVCeVBhdGg9ZnVuY3Rpb24odCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQmJk10KHQpKXRyeXtyZXR1cm4gdGhpcy5nZXRTdGF0ZU5vZGVCeUlkKHQuc2xpY2UoMSkpfWNhdGNoKHQpe31mb3IodmFyIGU9aCh0LHRoaXMuZGVsaW1pdGVyKS5zbGljZSgpLG49dGhpcztlLmxlbmd0aDspe3ZhciByPWUuc2hpZnQoKTtpZighci5sZW5ndGgpYnJlYWs7bj1uLmdldFN0YXRlTm9kZShyKX1yZXR1cm4gbn0sYS5wcm90b3R5cGUucmVzb2x2ZT1mdW5jdGlvbih0KXt2YXIgZSxuPXRoaXM7aWYoIXQpcmV0dXJuIHRoaXMuaW5pdGlhbFN0YXRlVmFsdWV8fFJ0O3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2VcInBhcmFsbGVsXCI6cmV0dXJuIGQodGhpcy5pbml0aWFsU3RhdGVWYWx1ZSwoZnVuY3Rpb24oZSxyKXtyZXR1cm4gZT9uLmdldFN0YXRlTm9kZShyKS5yZXNvbHZlKHRbcl18fGUpOlJ0fSkpO2Nhc2VcImNvbXBvdW5kXCI6aWYoQSh0KSl7dmFyIHI9dGhpcy5nZXRTdGF0ZU5vZGUodCk7cmV0dXJuXCJwYXJhbGxlbFwiPT09ci50eXBlfHxcImNvbXBvdW5kXCI9PT1yLnR5cGU/KChlPXt9KVt0XT1yLmluaXRpYWxTdGF0ZVZhbHVlLGUpOnR9cmV0dXJuIHModCkubGVuZ3RoP2QodCwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdD9uLmdldFN0YXRlTm9kZShlKS5yZXNvbHZlKHQpOlJ0fSkpOnRoaXMuaW5pdGlhbFN0YXRlVmFsdWV8fHt9O2RlZmF1bHQ6cmV0dXJuIHR8fFJ0fX0sYS5wcm90b3R5cGUuZ2V0UmVzb2x2ZWRQYXRoPWZ1bmN0aW9uKHQpe2lmKE10KHQpKXt2YXIgZT10aGlzLm1hY2hpbmUuaWRNYXBbdC5zbGljZShcIiNcIi5sZW5ndGgpXTtpZighZSl0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gZmluZCBzdGF0ZSBub2RlICdcIi5jb25jYXQodCxcIidcIikpO3JldHVybiBlLnBhdGh9cmV0dXJuIGgodCx0aGlzLmRlbGltaXRlcil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcImluaXRpYWxTdGF0ZVZhbHVlXCIse2dldDpmdW5jdGlvbigpe3ZhciB0LGU7aWYodGhpcy5fX2NhY2hlLmluaXRpYWxTdGF0ZVZhbHVlKXJldHVybiB0aGlzLl9fY2FjaGUuaW5pdGlhbFN0YXRlVmFsdWU7aWYoXCJwYXJhbGxlbFwiPT09dGhpcy50eXBlKWU9cCh0aGlzLnN0YXRlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5pdGlhbFN0YXRlVmFsdWV8fFJ0fSksKGZ1bmN0aW9uKHQpe3JldHVybiEoXCJoaXN0b3J5XCI9PT10LnR5cGUpfSkpO2Vsc2UgaWYodm9pZCAwIT09dGhpcy5pbml0aWFsKXtpZighdGhpcy5zdGF0ZXNbdGhpcy5pbml0aWFsXSl0aHJvdyBuZXcgRXJyb3IoXCJJbml0aWFsIHN0YXRlICdcIi5jb25jYXQodGhpcy5pbml0aWFsLFwiJyBub3QgZm91bmQgb24gJ1wiKS5jb25jYXQodGhpcy5rZXksXCInXCIpKTtlPUYodGhpcy5zdGF0ZXNbdGhpcy5pbml0aWFsXSk/dGhpcy5pbml0aWFsOigodD17fSlbdGhpcy5pbml0aWFsXT10aGlzLnN0YXRlc1t0aGlzLmluaXRpYWxdLmluaXRpYWxTdGF0ZVZhbHVlLHQpfWVsc2UgZT17fTtyZXR1cm4gdGhpcy5fX2NhY2hlLmluaXRpYWxTdGF0ZVZhbHVlPWUsdGhpcy5fX2NhY2hlLmluaXRpYWxTdGF0ZVZhbHVlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGEucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0U3RhdGVOb2Rlcyh0KTtyZXR1cm4gdGhpcy5yZXNvbHZlVHJhbnNpdGlvbih7Y29uZmlndXJhdGlvbjpuLGVudHJ5U2V0Om4sZXhpdFNldDpbXSx0cmFuc2l0aW9uczpbXSxzb3VyY2U6dm9pZCAwLGFjdGlvbnM6W119LHZvaWQgMCx2b2lkIDAsZSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcImluaXRpYWxTdGF0ZVwiLHtnZXQ6ZnVuY3Rpb24oKXt0aGlzLl9pbml0KCk7dmFyIHQ9dGhpcy5pbml0aWFsU3RhdGVWYWx1ZTtpZighdCl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgcmV0cmlldmUgaW5pdGlhbCBzdGF0ZSBmcm9tIHNpbXBsZSBzdGF0ZSAnXCIuY29uY2F0KHRoaXMuaWQsXCInLlwiKSk7cmV0dXJuIHRoaXMuZ2V0SW5pdGlhbFN0YXRlKHQpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcInRhcmdldFwiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdDtpZihcImhpc3RvcnlcIj09PXRoaXMudHlwZSl7dmFyIGU9dGhpcy5jb25maWc7dD1BKGUudGFyZ2V0KSYmTXQoZS50YXJnZXQpP2wodGhpcy5tYWNoaW5lLmdldFN0YXRlTm9kZUJ5SWQoZS50YXJnZXQpLnBhdGguc2xpY2UodGhpcy5wYXRoLmxlbmd0aC0xKSk6ZS50YXJnZXR9cmV0dXJuIHR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksYS5wcm90b3R5cGUuZ2V0UmVsYXRpdmVTdGF0ZU5vZGVzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49ITApLG4/XCJoaXN0b3J5XCI9PT10LnR5cGU/dC5yZXNvbHZlSGlzdG9yeShlKTp0LmluaXRpYWxTdGF0ZU5vZGVzOlt0XX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGEucHJvdG90eXBlLFwiaW5pdGlhbFN0YXRlTm9kZXNcIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gRih0aGlzKT9bdGhpc106XCJjb21wb3VuZFwiIT09dGhpcy50eXBlfHx0aGlzLmluaXRpYWw/Zyh5KHRoaXMuaW5pdGlhbFN0YXRlVmFsdWUpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZ2V0RnJvbVJlbGF0aXZlUGF0aChlKX0pKSk6W3RoaXNdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGEucHJvdG90eXBlLmdldEZyb21SZWxhdGl2ZVBhdGg9ZnVuY3Rpb24odCl7aWYoIXQubGVuZ3RoKXJldHVyblt0aGlzXTt2YXIgZT1pKHQpLG49ZVswXSxyPWUuc2xpY2UoMSk7aWYoIXRoaXMuc3RhdGVzKXRocm93IG5ldyBFcnJvcihcIkNhbm5vdCByZXRyaWV2ZSBzdWJQYXRoICdcIi5jb25jYXQobixcIicgZnJvbSBub2RlIHdpdGggbm8gc3RhdGVzXCIpKTt2YXIgbz10aGlzLmdldFN0YXRlTm9kZShuKTtpZihcImhpc3RvcnlcIj09PW8udHlwZSlyZXR1cm4gby5yZXNvbHZlSGlzdG9yeSgpO2lmKCF0aGlzLnN0YXRlc1tuXSl0aHJvdyBuZXcgRXJyb3IoXCJDaGlsZCBzdGF0ZSAnXCIuY29uY2F0KG4sXCInIGRvZXMgbm90IGV4aXN0IG9uICdcIikuY29uY2F0KHRoaXMuaWQsXCInXCIpKTtyZXR1cm4gdGhpcy5zdGF0ZXNbbl0uZ2V0RnJvbVJlbGF0aXZlUGF0aChyKX0sYS5wcm90b3R5cGUuaGlzdG9yeVZhbHVlPWZ1bmN0aW9uKHQpe2lmKHModGhpcy5zdGF0ZXMpLmxlbmd0aClyZXR1cm57Y3VycmVudDp0fHx0aGlzLmluaXRpYWxTdGF0ZVZhbHVlLHN0YXRlczpwKHRoaXMuc3RhdGVzLChmdW5jdGlvbihlLG4pe2lmKCF0KXJldHVybiBlLmhpc3RvcnlWYWx1ZSgpO3ZhciByPUEodCk/dm9pZCAwOnRbbl07cmV0dXJuIGUuaGlzdG9yeVZhbHVlKHJ8fGUuaW5pdGlhbFN0YXRlVmFsdWUpfSksKGZ1bmN0aW9uKHQpe3JldHVybiF0Lmhpc3Rvcnl9KSl9fSxhLnByb3RvdHlwZS5yZXNvbHZlSGlzdG9yeT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKFwiaGlzdG9yeVwiIT09dGhpcy50eXBlKXJldHVyblt0aGlzXTt2YXIgbj10aGlzLnBhcmVudDtpZighdCl7dmFyIGk9dGhpcy50YXJnZXQ7cmV0dXJuIGk/Zyh5KGkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uZ2V0RnJvbVJlbGF0aXZlUGF0aCh0KX0pKSk6bi5pbml0aWFsU3RhdGVOb2Rlc312YXIgbyxhLHM9KG89bi5wYXRoLGE9XCJzdGF0ZXNcIixmdW5jdGlvbih0KXt2YXIgZSxuLGk9dDt0cnl7Zm9yKHZhciBzPXIobyksYz1zLm5leHQoKTshYy5kb25lO2M9cy5uZXh0KCkpe3ZhciB1PWMudmFsdWU7aT1pW2FdW3VdfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtjJiYhYy5kb25lJiYobj1zLnJldHVybikmJm4uY2FsbChzKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIGl9KSh0KS5jdXJyZW50O3JldHVybiBBKHMpP1tuLmdldFN0YXRlTm9kZShzKV06Zyh5KHMpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuXCJkZWVwXCI9PT1lLmhpc3Rvcnk/bi5nZXRGcm9tUmVsYXRpdmVQYXRoKHQpOltuLnN0YXRlc1t0WzBdXV19KSkpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5wcm90b3R5cGUsXCJzdGF0ZUlkc1wiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9ZyhzKHRoaXMuc3RhdGVzKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LnN0YXRlc1tlXS5zdGF0ZUlkc30pKSk7cmV0dXJuW3RoaXMuaWRdLmNvbmNhdChlKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5wcm90b3R5cGUsXCJldmVudHNcIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQsZSxuLGk7aWYodGhpcy5fX2NhY2hlLmV2ZW50cylyZXR1cm4gdGhpcy5fX2NhY2hlLmV2ZW50czt2YXIgbz10aGlzLnN0YXRlcyxhPW5ldyBTZXQodGhpcy5vd25FdmVudHMpO2lmKG8pdHJ5e2Zvcih2YXIgYz1yKHMobykpLHU9Yy5uZXh0KCk7IXUuZG9uZTt1PWMubmV4dCgpKXt2YXIgaD1vW3UudmFsdWVdO2lmKGguc3RhdGVzKXRyeXtmb3IodmFyIGY9KG49dm9pZCAwLHIoaC5ldmVudHMpKSxsPWYubmV4dCgpOyFsLmRvbmU7bD1mLm5leHQoKSl7dmFyIGQ9bC52YWx1ZTthLmFkZChcIlwiLmNvbmNhdChkKSl9fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2wmJiFsLmRvbmUmJihpPWYucmV0dXJuKSYmaS5jYWxsKGYpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX19fWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e3UmJiF1LmRvbmUmJihlPWMucmV0dXJuKSYmZS5jYWxsKGMpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX1yZXR1cm4gdGhpcy5fX2NhY2hlLmV2ZW50cz1BcnJheS5mcm9tKGEpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcIm93bkV2ZW50c1wiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgU2V0KHRoaXMudHJhbnNpdGlvbnMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hKCF0LnRhcmdldCYmIXQuYWN0aW9ucy5sZW5ndGgmJnQuaW50ZXJuYWwpfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZXZlbnRUeXBlfSkpKTtyZXR1cm4gQXJyYXkuZnJvbSh0KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxhLnByb3RvdHlwZS5yZXNvbHZlVGFyZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodm9pZCAwIT09dClyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe2lmKCFBKHQpKXJldHVybiB0O3ZhciBuPXRbMF09PT1lLmRlbGltaXRlcjtpZihuJiYhZS5wYXJlbnQpcmV0dXJuIGUuZ2V0U3RhdGVOb2RlQnlQYXRoKHQuc2xpY2UoMSkpO3ZhciByPW4/ZS5rZXkrdDp0O2lmKCFlLnBhcmVudClyZXR1cm4gZS5nZXRTdGF0ZU5vZGVCeVBhdGgocik7dHJ5e3JldHVybiBlLnBhcmVudC5nZXRTdGF0ZU5vZGVCeVBhdGgocil9Y2F0Y2godCl7dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB0cmFuc2l0aW9uIGRlZmluaXRpb24gZm9yIHN0YXRlIG5vZGUgJ1wiLmNvbmNhdChlLmlkLFwiJzpcXG5cIikuY29uY2F0KHQubWVzc2FnZSkpfX0pKX0sYS5wcm90b3R5cGUuZm9ybWF0VHJhbnNpdGlvbj1mdW5jdGlvbih0KXt2YXIgbj10aGlzLHI9ZnVuY3Rpb24odCl7aWYodm9pZCAwIT09dCYmXCJcIiE9PXQpcmV0dXJuIFModCl9KHQudGFyZ2V0KSxpPVwiaW50ZXJuYWxcImluIHQ/dC5pbnRlcm5hbDohcnx8ci5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gQSh0KSYmdFswXT09PW4uZGVsaW1pdGVyfSkpLG89dGhpcy5tYWNoaW5lLm9wdGlvbnMuZ3VhcmRzLGE9dGhpcy5yZXNvbHZlVGFyZ2V0KHIpLHM9ZShlKHt9LHQpLHthY3Rpb25zOmR0KFModC5hY3Rpb25zKSksY29uZDpPKHQuY29uZCxvKSx0YXJnZXQ6YSxzb3VyY2U6dGhpcyxpbnRlcm5hbDppLGV2ZW50VHlwZTp0LmV2ZW50LHRvSlNPTjpmdW5jdGlvbigpe3JldHVybiBlKGUoe30scykse3RhcmdldDpzLnRhcmdldD9zLnRhcmdldC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblwiI1wiLmNvbmNhdCh0LmlkKX0pKTp2b2lkIDAsc291cmNlOlwiI1wiLmNvbmNhdChuLmlkKX0pfX0pO3JldHVybiBzfSxhLnByb3RvdHlwZS5mb3JtYXRUcmFuc2l0aW9ucz1mdW5jdGlvbigpe3ZhciB0LGUsYSxjPXRoaXM7aWYodGhpcy5jb25maWcub24paWYoQXJyYXkuaXNBcnJheSh0aGlzLmNvbmZpZy5vbikpYT10aGlzLmNvbmZpZy5vbjtlbHNle3ZhciB1PXRoaXMuY29uZmlnLm9uLGg9dVtcIipcIl0sZj12b2lkIDA9PT1oP1tdOmgsbD1uKHUsW1wiKlwiXSk7YT1nKHMobCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gRCh0LGxbdF0pfSkpLmNvbmNhdChEKFwiKlwiLGYpKSl9ZWxzZSBhPVtdO3ZhciBkPXRoaXMuY29uZmlnLmFsd2F5cz9EKFwiXCIsdGhpcy5jb25maWcuYWx3YXlzKTpbXSxwPXRoaXMuY29uZmlnLm9uRG9uZT9EKFN0cmluZyhUdCh0aGlzLmlkKSksdGhpcy5jb25maWcub25Eb25lKTpbXSx2PWcodGhpcy5pbnZva2UubWFwKChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gdC5vbkRvbmUmJmUucHVzaC5hcHBseShlLG8oW10saShEKFN0cmluZyhOdCh0LmlkKSksdC5vbkRvbmUpKSwhMSkpLHQub25FcnJvciYmZS5wdXNoLmFwcGx5KGUsbyhbXSxpKEQoU3RyaW5nKEF0KHQuaWQpKSx0Lm9uRXJyb3IpKSwhMSkpLGV9KSkpLHk9dGhpcy5hZnRlcixtPWcobyhvKG8obyhbXSxpKHApLCExKSxpKHYpLCExKSxpKGEpLCExKSxpKGQpLCExKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBTKHQpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGMuZm9ybWF0VHJhbnNpdGlvbih0KX0pKX0pKSk7dHJ5e2Zvcih2YXIgeD1yKHkpLHc9eC5uZXh0KCk7IXcuZG9uZTt3PXgubmV4dCgpKXt2YXIgYj13LnZhbHVlO20ucHVzaChiKX19Y2F0Y2goZSl7dD17ZXJyb3I6ZX19ZmluYWxseXt0cnl7dyYmIXcuZG9uZSYmKGU9eC5yZXR1cm4pJiZlLmNhbGwoeCl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fXJldHVybiBtfSxhfSgpO3ZhciBGdD17ZGVmZXJFdmVudHM6ITF9LFV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnByb2Nlc3NpbmdFdmVudD0hMSx0aGlzLnF1ZXVlPVtdLHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5vcHRpb25zPWUoZSh7fSxGdCksdCl9cmV0dXJuIHQucHJvdG90eXBlLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aWYodGhpcy5pbml0aWFsaXplZD0hMCx0KXtpZighdGhpcy5vcHRpb25zLmRlZmVyRXZlbnRzKXJldHVybiB2b2lkIHRoaXMuc2NoZWR1bGUodCk7dGhpcy5wcm9jZXNzKHQpfXRoaXMuZmx1c2hFdmVudHMoKX0sdC5wcm90b3R5cGUuc2NoZWR1bGU9ZnVuY3Rpb24odCl7aWYodGhpcy5pbml0aWFsaXplZCYmIXRoaXMucHJvY2Vzc2luZ0V2ZW50KXtpZigwIT09dGhpcy5xdWV1ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiRXZlbnQgcXVldWUgc2hvdWxkIGJlIGVtcHR5IHdoZW4gaXQgaXMgbm90IHByb2Nlc3NpbmcgZXZlbnRzXCIpO3RoaXMucHJvY2Vzcyh0KSx0aGlzLmZsdXNoRXZlbnRzKCl9ZWxzZSB0aGlzLnF1ZXVlLnB1c2godCl9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5xdWV1ZT1bXX0sdC5wcm90b3R5cGUuZmx1c2hFdmVudHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5xdWV1ZS5zaGlmdCgpO3Q7KXRoaXMucHJvY2Vzcyh0KSx0PXRoaXMucXVldWUuc2hpZnQoKX0sdC5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbih0KXt0aGlzLnByb2Nlc3NpbmdFdmVudD0hMDt0cnl7dCgpfWNhdGNoKHQpe3Rocm93IHRoaXMuY2xlYXIoKSx0fWZpbmFsbHl7dGhpcy5wcm9jZXNzaW5nRXZlbnQ9ITF9fSx0fSgpLEJ0PW5ldyBNYXAsSnQ9MCxxdD1mdW5jdGlvbigpe3JldHVyblwieDpcIi5jb25jYXQoSnQrKyl9LCR0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEJ0LnNldCh0LGUpLHR9LFh0PWZ1bmN0aW9uKHQpe3JldHVybiBCdC5nZXQodCl9LEh0PWZ1bmN0aW9uKHQpe0J0LmRlbGV0ZSh0KX07ZnVuY3Rpb24gR3QoKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6dm9pZCAwfWZ1bmN0aW9uIEt0KHQpe2lmKEd0KCkpe3ZhciBlPWZ1bmN0aW9uKCl7dmFyIHQ9R3QoKTtpZih0JiZcIl9feHN0YXRlX19cImluIHQpcmV0dXJuIHQuX194c3RhdGVfX30oKTtlJiZlLnJlZ2lzdGVyKHQpfX1mdW5jdGlvbiBRdCh0LG4pe3ZvaWQgMD09PW4mJihuPXt9KTt2YXIgcixpPXQuaW5pdGlhbFN0YXRlLG89bmV3IFNldCxhPVtdLHM9ITEsYz0ocj17aWQ6bi5pZCxzZW5kOmZ1bmN0aW9uKGUpe2EucHVzaChlKSxmdW5jdGlvbigpe2lmKCFzKXtmb3Iocz0hMDthLmxlbmd0aD4wOyl7dmFyIGU9YS5zaGlmdCgpO2k9dC50cmFuc2l0aW9uKGksZSx1KSxvLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5leHQoaSl9KSl9cz0hMX19KCl9LGdldFNuYXBzaG90OmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHN1YnNjcmliZTpmdW5jdGlvbih0LGUsbil7dmFyIHI9eih0LGUsbik7cmV0dXJuIG8uYWRkKHIpLHIubmV4dChpKSx7dW5zdWJzY3JpYmU6ZnVuY3Rpb24oKXtvLmRlbGV0ZShyKX19fX0sZSh7c3Vic2NyaWJlOmZ1bmN0aW9uKCl7cmV0dXJue3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7fX19LGlkOlwiYW5vbnltb3VzXCIsZ2V0U25hcHNob3Q6ZnVuY3Rpb24oKXt9fSxyKSksdT17cGFyZW50Om4ucGFyZW50LHNlbGY6YyxpZDpuLmlkfHxcImFub255bW91c1wiLG9ic2VydmVyczpvfTtyZXR1cm4gaT10LnN0YXJ0P3Quc3RhcnQodSk6aSxjfXZhciBXdCxZdD17c3luYzohMSxhdXRvRm9yd2FyZDohMX07KFd0PXQuSW50ZXJwcmV0ZXJTdGF0dXN8fCh0LkludGVycHJldGVyU3RhdHVzPXt9KSlbV3QuTm90U3RhcnRlZD0wXT1cIk5vdFN0YXJ0ZWRcIixXdFtXdC5SdW5uaW5nPTFdPVwiUnVubmluZ1wiLFd0W1d0LlN0b3BwZWQ9Ml09XCJTdG9wcGVkXCI7dmFyIFp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihyLGkpe3ZhciBvPXRoaXM7dm9pZCAwPT09aSYmKGk9bi5kZWZhdWx0T3B0aW9ucyksdGhpcy5tYWNoaW5lPXIsdGhpcy5zY2hlZHVsZXI9bmV3IFV0LHRoaXMuZGVsYXllZEV2ZW50c01hcD17fSx0aGlzLmxpc3RlbmVycz1uZXcgU2V0LHRoaXMuY29udGV4dExpc3RlbmVycz1uZXcgU2V0LHRoaXMuc3RvcExpc3RlbmVycz1uZXcgU2V0LHRoaXMuZG9uZUxpc3RlbmVycz1uZXcgU2V0LHRoaXMuZXZlbnRMaXN0ZW5lcnM9bmV3IFNldCx0aGlzLnNlbmRMaXN0ZW5lcnM9bmV3IFNldCx0aGlzLmluaXRpYWxpemVkPSExLHRoaXMuc3RhdHVzPXQuSW50ZXJwcmV0ZXJTdGF0dXMuTm90U3RhcnRlZCx0aGlzLmNoaWxkcmVuPW5ldyBNYXAsdGhpcy5mb3J3YXJkVG89bmV3IFNldCx0aGlzLmluaXQ9dGhpcy5zdGFydCx0aGlzLnNlbmQ9ZnVuY3Rpb24oZSxuKXtpZihUKGUpKXJldHVybiBvLmJhdGNoKGUpLG8uc3RhdGU7dmFyIHI9TChWKGUsbikpO2lmKG8uc3RhdHVzPT09dC5JbnRlcnByZXRlclN0YXR1cy5TdG9wcGVkKXJldHVybiBvLnN0YXRlO2lmKG8uc3RhdHVzIT09dC5JbnRlcnByZXRlclN0YXR1cy5SdW5uaW5nJiYhby5vcHRpb25zLmRlZmVyRXZlbnRzKXRocm93IG5ldyBFcnJvcignRXZlbnQgXCInLmNvbmNhdChyLm5hbWUsJ1wiIHdhcyBzZW50IHRvIHVuaW5pdGlhbGl6ZWQgc2VydmljZSBcIicpLmNvbmNhdChvLm1hY2hpbmUuaWQsJ1wiLiBNYWtlIHN1cmUgLnN0YXJ0KCkgaXMgY2FsbGVkIGZvciB0aGlzIHNlcnZpY2UsIG9yIHNldCB7IGRlZmVyRXZlbnRzOiB0cnVlIH0gaW4gdGhlIHNlcnZpY2Ugb3B0aW9ucy5cXG5FdmVudDogJykuY29uY2F0KEpTT04uc3RyaW5naWZ5KHIuZGF0YSkpKTtyZXR1cm4gby5zY2hlZHVsZXIuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7by5mb3J3YXJkKHIpO3ZhciB0PW8ubmV4dFN0YXRlKHIpO28udXBkYXRlKHQscil9KSksby5fc3RhdGV9LHRoaXMuc2VuZFRvPWZ1bmN0aW9uKG4scil7dmFyIGksYT1vLnBhcmVudCYmKHI9PT10LlNwZWNpYWxUYXJnZXRzLlBhcmVudHx8by5wYXJlbnQuaWQ9PT1yKSxzPWE/by5wYXJlbnQ6QShyKT9vLmNoaWxkcmVuLmdldChyKXx8WHQocik6KGk9cikmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGkuc2VuZD9yOnZvaWQgMDtpZihzKVwibWFjaGluZVwiaW4gcz9zLnNlbmQoZShlKHt9LG4pLHtuYW1lOm4ubmFtZT09PWF0P1wiXCIuY29uY2F0KEF0KG8uaWQpKTpuLm5hbWUsb3JpZ2luOm8uc2Vzc2lvbklkfSkpOnMuc2VuZChuLmRhdGEpO2Vsc2UgaWYoIWEpdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIHNlbmQgZXZlbnQgdG8gY2hpbGQgJ1wiLmNvbmNhdChyLFwiJyBmcm9tIHNlcnZpY2UgJ1wiKS5jb25jYXQoby5pZCxcIicuXCIpKX07dmFyIGE9ZShlKHt9LG4uZGVmYXVsdE9wdGlvbnMpLGkpLHM9YS5jbG9jayxjPWEubG9nZ2VyLHU9YS5wYXJlbnQsaD1hLmlkLGY9dm9pZCAwIT09aD9oOnIuaWQ7dGhpcy5pZD1mLHRoaXMubG9nZ2VyPWMsdGhpcy5jbG9jaz1zLHRoaXMucGFyZW50PXUsdGhpcy5vcHRpb25zPWEsdGhpcy5zY2hlZHVsZXI9bmV3IFV0KHtkZWZlckV2ZW50czp0aGlzLm9wdGlvbnMuZGVmZXJFdmVudHN9KSx0aGlzLnNlc3Npb25JZD1xdCgpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsXCJpbml0aWFsU3RhdGVcIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5faW5pdGlhbFN0YXRlP3RoaXMuX2luaXRpYWxTdGF0ZTpqdCh0aGlzLChmdW5jdGlvbigpe3JldHVybiB0Ll9pbml0aWFsU3RhdGU9dC5tYWNoaW5lLmluaXRpYWxTdGF0ZSx0Ll9pbml0aWFsU3RhdGV9KSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLFwic3RhdGVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXRlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLG4ucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24odCxlKXt2YXIgbixpO3RyeXtmb3IodmFyIG89cih0LmFjdGlvbnMpLGE9by5uZXh0KCk7IWEuZG9uZTthPW8ubmV4dCgpKXt2YXIgcz1hLnZhbHVlO3RoaXMuZXhlYyhzLHQsZSl9fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2EmJiFhLmRvbmUmJihpPW8ucmV0dXJuKSYmaS5jYWxsKG8pfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX19LG4ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LGUpe3ZhciBuLGksbyxhLHMsYyx1LGgsZj10aGlzO2lmKHQuX3Nlc3Npb25pZD10aGlzLnNlc3Npb25JZCx0aGlzLl9zdGF0ZT10LHRoaXMub3B0aW9ucy5leGVjdXRlJiZ0aGlzLmV4ZWN1dGUodGhpcy5zdGF0ZSksdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbih0KXtmLnN0YXRlLmNoaWxkcmVuW3QuaWRdPXR9KSksdGhpcy5kZXZUb29scyYmdGhpcy5kZXZUb29scy5zZW5kKGUuZGF0YSx0KSx0LmV2ZW50KXRyeXtmb3IodmFyIGw9cih0aGlzLmV2ZW50TGlzdGVuZXJzKSxkPWwubmV4dCgpOyFkLmRvbmU7ZD1sLm5leHQoKSl7KDAsZC52YWx1ZSkodC5ldmVudCl9fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2QmJiFkLmRvbmUmJihpPWwucmV0dXJuKSYmaS5jYWxsKGwpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX10cnl7Zm9yKHZhciBwPXIodGhpcy5saXN0ZW5lcnMpLHY9cC5uZXh0KCk7IXYuZG9uZTt2PXAubmV4dCgpKXsoMCx2LnZhbHVlKSh0LHQuZXZlbnQpfX1jYXRjaCh0KXtvPXtlcnJvcjp0fX1maW5hbGx5e3RyeXt2JiYhdi5kb25lJiYoYT1wLnJldHVybikmJmEuY2FsbChwKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19dHJ5e2Zvcih2YXIgeT1yKHRoaXMuY29udGV4dExpc3RlbmVycyksZz15Lm5leHQoKTshZy5kb25lO2c9eS5uZXh0KCkpeygwLGcudmFsdWUpKHRoaXMuc3RhdGUuY29udGV4dCx0aGlzLnN0YXRlLmhpc3Rvcnk/dGhpcy5zdGF0ZS5oaXN0b3J5LmNvbnRleHQ6dm9pZCAwKX19Y2F0Y2godCl7cz17ZXJyb3I6dH19ZmluYWxseXt0cnl7ZyYmIWcuZG9uZSYmKGM9eS5yZXR1cm4pJiZjLmNhbGwoeSl9ZmluYWxseXtpZihzKXRocm93IHMuZXJyb3J9fXZhciBtPUgodC5jb25maWd1cmF0aW9ufHxbXSx0aGlzLm1hY2hpbmUpO2lmKHRoaXMuc3RhdGUuY29uZmlndXJhdGlvbiYmbSl7dmFyIFM9dC5jb25maWd1cmF0aW9uLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVyblwiZmluYWxcIj09PXQudHlwZSYmdC5wYXJlbnQ9PT1mLm1hY2hpbmV9KSksdz1TJiZTLmRvbmVEYXRhP3goUy5kb25lRGF0YSx0LmNvbnRleHQsZSk6dm9pZCAwO3RyeXtmb3IodmFyIGI9cih0aGlzLmRvbmVMaXN0ZW5lcnMpLF89Yi5uZXh0KCk7IV8uZG9uZTtfPWIubmV4dCgpKXsoMCxfLnZhbHVlKShOdCh0aGlzLmlkLHcpKX19Y2F0Y2godCl7dT17ZXJyb3I6dH19ZmluYWxseXt0cnl7XyYmIV8uZG9uZSYmKGg9Yi5yZXR1cm4pJiZoLmNhbGwoYil9ZmluYWxseXtpZih1KXRocm93IHUuZXJyb3J9fXRoaXMuc3RvcCgpfX0sbi5wcm90b3R5cGUub25UcmFuc2l0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxpc3RlbmVycy5hZGQoZSksdGhpcy5zdGF0dXM9PT10LkludGVycHJldGVyU3RhdHVzLlJ1bm5pbmcmJmUodGhpcy5zdGF0ZSx0aGlzLnN0YXRlLmV2ZW50KSx0aGlzfSxuLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oZSxuLHIpe3ZhciBpLG89dGhpcztpZighZSlyZXR1cm57dW5zdWJzY3JpYmU6ZnVuY3Rpb24oKXt9fTt2YXIgYT1yO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/aT1lOihpPWUubmV4dC5iaW5kKGUpLGE9ZS5jb21wbGV0ZS5iaW5kKGUpKSx0aGlzLmxpc3RlbmVycy5hZGQoaSksdGhpcy5zdGF0dXM9PT10LkludGVycHJldGVyU3RhdHVzLlJ1bm5pbmcmJmkodGhpcy5zdGF0ZSksYSYmdGhpcy5vbkRvbmUoYSkse3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7aSYmby5saXN0ZW5lcnMuZGVsZXRlKGkpLGEmJm8uZG9uZUxpc3RlbmVycy5kZWxldGUoYSl9fX0sbi5wcm90b3R5cGUub25FdmVudD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ldmVudExpc3RlbmVycy5hZGQodCksdGhpc30sbi5wcm90b3R5cGUub25TZW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlbmRMaXN0ZW5lcnMuYWRkKHQpLHRoaXN9LG4ucHJvdG90eXBlLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRleHRMaXN0ZW5lcnMuYWRkKHQpLHRoaXN9LG4ucHJvdG90eXBlLm9uU3RvcD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zdG9wTGlzdGVuZXJzLmFkZCh0KSx0aGlzfSxuLnByb3RvdHlwZS5vbkRvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZG9uZUxpc3RlbmVycy5hZGQodCksdGhpc30sbi5wcm90b3R5cGUub2ZmPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxpc3RlbmVycy5kZWxldGUodCksdGhpcy5ldmVudExpc3RlbmVycy5kZWxldGUodCksdGhpcy5zZW5kTGlzdGVuZXJzLmRlbGV0ZSh0KSx0aGlzLnN0b3BMaXN0ZW5lcnMuZGVsZXRlKHQpLHRoaXMuZG9uZUxpc3RlbmVycy5kZWxldGUodCksdGhpcy5jb250ZXh0TGlzdGVuZXJzLmRlbGV0ZSh0KSx0aGlzfSxuLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihlKXt2YXIgbj10aGlzO2lmKHRoaXMuc3RhdHVzPT09dC5JbnRlcnByZXRlclN0YXR1cy5SdW5uaW5nKXJldHVybiB0aGlzOyR0KHRoaXMuc2Vzc2lvbklkLHRoaXMpLHRoaXMuaW5pdGlhbGl6ZWQ9ITAsdGhpcy5zdGF0dXM9dC5JbnRlcnByZXRlclN0YXR1cy5SdW5uaW5nO3ZhciByPXZvaWQgMD09PWU/dGhpcy5pbml0aWFsU3RhdGU6anQodGhpcywoZnVuY3Rpb24oKXtyZXR1cm4hQSh0PWUpJiZcInZhbHVlXCJpbiB0JiZcImhpc3RvcnlcImluIHQ/bi5tYWNoaW5lLnJlc29sdmVTdGF0ZShlKTpuLm1hY2hpbmUucmVzb2x2ZVN0YXRlKGt0LmZyb20oZSxuLm1hY2hpbmUuY29udGV4dCkpO3ZhciB0fSkpO3JldHVybiB0aGlzLm9wdGlvbnMuZGV2VG9vbHMmJnRoaXMuYXR0YWNoRGV2KCksdGhpcy5zY2hlZHVsZXIuaW5pdGlhbGl6ZSgoZnVuY3Rpb24oKXtuLnVwZGF0ZShyLGh0KX0pKSx0aGlzfSxuLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dmFyIGUsbixpLG8sYSxjLHUsaCxmLGwsZD10aGlzO3RyeXtmb3IodmFyIHA9cih0aGlzLmxpc3RlbmVycyksdj1wLm5leHQoKTshdi5kb25lO3Y9cC5uZXh0KCkpe3ZhciB5PXYudmFsdWU7dGhpcy5saXN0ZW5lcnMuZGVsZXRlKHkpfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXt2JiYhdi5kb25lJiYobj1wLnJldHVybikmJm4uY2FsbChwKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19dHJ5e2Zvcih2YXIgZz1yKHRoaXMuc3RvcExpc3RlbmVycyksbT1nLm5leHQoKTshbS5kb25lO209Zy5uZXh0KCkpeyh5PW0udmFsdWUpKCksdGhpcy5zdG9wTGlzdGVuZXJzLmRlbGV0ZSh5KX19Y2F0Y2godCl7aT17ZXJyb3I6dH19ZmluYWxseXt0cnl7bSYmIW0uZG9uZSYmKG89Zy5yZXR1cm4pJiZvLmNhbGwoZyl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXRyeXtmb3IodmFyIFM9cih0aGlzLmNvbnRleHRMaXN0ZW5lcnMpLHg9Uy5uZXh0KCk7IXguZG9uZTt4PVMubmV4dCgpKXt5PXgudmFsdWU7dGhpcy5jb250ZXh0TGlzdGVuZXJzLmRlbGV0ZSh5KX19Y2F0Y2godCl7YT17ZXJyb3I6dH19ZmluYWxseXt0cnl7eCYmIXguZG9uZSYmKGM9Uy5yZXR1cm4pJiZjLmNhbGwoUyl9ZmluYWxseXtpZihhKXRocm93IGEuZXJyb3J9fXRyeXtmb3IodmFyIHc9cih0aGlzLmRvbmVMaXN0ZW5lcnMpLGI9dy5uZXh0KCk7IWIuZG9uZTtiPXcubmV4dCgpKXt5PWIudmFsdWU7dGhpcy5kb25lTGlzdGVuZXJzLmRlbGV0ZSh5KX19Y2F0Y2godCl7dT17ZXJyb3I6dH19ZmluYWxseXt0cnl7YiYmIWIuZG9uZSYmKGg9dy5yZXR1cm4pJiZoLmNhbGwodyl9ZmluYWxseXtpZih1KXRocm93IHUuZXJyb3J9fWlmKCF0aGlzLmluaXRpYWxpemVkKXJldHVybiB0aGlzO3RoaXMuc3RhdGUuY29uZmlndXJhdGlvbi5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZSxuO3RyeXtmb3IodmFyIGk9cih0LmRlZmluaXRpb24uZXhpdCksbz1pLm5leHQoKTshby5kb25lO289aS5uZXh0KCkpe3ZhciBhPW8udmFsdWU7ZC5leGVjKGEsZC5zdGF0ZSl9fWNhdGNoKHQpe2U9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e28mJiFvLmRvbmUmJihuPWkucmV0dXJuKSYmbi5jYWxsKGkpfWZpbmFsbHl7aWYoZSl0aHJvdyBlLmVycm9yfX19KSksdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbih0KXtOKHQuc3RvcCkmJnQuc3RvcCgpfSkpO3RyeXtmb3IodmFyIF89cihzKHRoaXMuZGVsYXllZEV2ZW50c01hcCkpLEU9Xy5uZXh0KCk7IUUuZG9uZTtFPV8ubmV4dCgpKXt2YXIgVD1FLnZhbHVlO3RoaXMuY2xvY2suY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZEV2ZW50c01hcFtUXSl9fWNhdGNoKHQpe2Y9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e0UmJiFFLmRvbmUmJihsPV8ucmV0dXJuKSYmbC5jYWxsKF8pfWZpbmFsbHl7aWYoZil0aHJvdyBmLmVycm9yfX1yZXR1cm4gdGhpcy5zY2hlZHVsZXIuY2xlYXIoKSx0aGlzLmluaXRpYWxpemVkPSExLHRoaXMuc3RhdHVzPXQuSW50ZXJwcmV0ZXJTdGF0dXMuU3RvcHBlZCxIdCh0aGlzLnNlc3Npb25JZCksdGhpc30sbi5wcm90b3R5cGUuYmF0Y2g9ZnVuY3Rpb24obil7dmFyIGE9dGhpcztpZih0aGlzLnN0YXR1cz09PXQuSW50ZXJwcmV0ZXJTdGF0dXMuTm90U3RhcnRlZCYmdGhpcy5vcHRpb25zLmRlZmVyRXZlbnRzKTtlbHNlIGlmKHRoaXMuc3RhdHVzIT09dC5JbnRlcnByZXRlclN0YXR1cy5SdW5uaW5nKXRocm93IG5ldyBFcnJvcihcIlwiLmNvbmNhdChuLmxlbmd0aCwnIGV2ZW50KHMpIHdlcmUgc2VudCB0byB1bmluaXRpYWxpemVkIHNlcnZpY2UgXCInKS5jb25jYXQodGhpcy5tYWNoaW5lLmlkLCdcIi4gTWFrZSBzdXJlIC5zdGFydCgpIGlzIGNhbGxlZCBmb3IgdGhpcyBzZXJ2aWNlLCBvciBzZXQgeyBkZWZlckV2ZW50czogdHJ1ZSB9IGluIHRoZSBzZXJ2aWNlIG9wdGlvbnMuJykpO3RoaXMuc2NoZWR1bGVyLnNjaGVkdWxlKChmdW5jdGlvbigpe3ZhciB0LHMsYz1hLnN0YXRlLHU9ITEsaD1bXSxmPWZ1bmN0aW9uKHQpe3ZhciBuPUwodCk7YS5mb3J3YXJkKG4pLGM9anQoYSwoZnVuY3Rpb24oKXtyZXR1cm4gYS5tYWNoaW5lLnRyYW5zaXRpb24oYyxuKX0pKSxoLnB1c2guYXBwbHkoaCxvKFtdLGkoYy5hY3Rpb25zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHI9YyxpPShuPXQpLmV4ZWMsZShlKHt9LG4pLHtleGVjOnZvaWQgMCE9PWk/ZnVuY3Rpb24oKXtyZXR1cm4gaShyLmNvbnRleHQsci5ldmVudCx7YWN0aW9uOm4sc3RhdGU6cixfZXZlbnQ6ci5fZXZlbnR9KX06dm9pZCAwfSk7dmFyIG4scixpfSkpKSwhMSkpLHU9dXx8ISFjLmNoYW5nZWR9O3RyeXtmb3IodmFyIGw9cihuKSxkPWwubmV4dCgpOyFkLmRvbmU7ZD1sLm5leHQoKSl7ZihkLnZhbHVlKX19Y2F0Y2goZSl7dD17ZXJyb3I6ZX19ZmluYWxseXt0cnl7ZCYmIWQuZG9uZSYmKHM9bC5yZXR1cm4pJiZzLmNhbGwobCl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fWMuY2hhbmdlZD11LGMuYWN0aW9ucz1oLGEudXBkYXRlKGMsTChuW24ubGVuZ3RoLTFdKSl9KSl9LG4ucHJvdG90eXBlLnNlbmRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZW5kLmJpbmQodGhpcyx0KX0sbi5wcm90b3R5cGUubmV4dFN0YXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1MKHQpO2lmKDA9PT1uLm5hbWUuaW5kZXhPZihvdCkmJiF0aGlzLnN0YXRlLm5leHRFdmVudHMuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10LmluZGV4T2Yob3QpfSkpKXRocm93IG4uZGF0YS5kYXRhO3JldHVybiBqdCh0aGlzLChmdW5jdGlvbigpe3JldHVybiBlLm1hY2hpbmUudHJhbnNpdGlvbihlLnN0YXRlLG4pfSkpfSxuLnByb3RvdHlwZS5mb3J3YXJkPWZ1bmN0aW9uKHQpe3ZhciBlLG47dHJ5e2Zvcih2YXIgaT1yKHRoaXMuZm9yd2FyZFRvKSxvPWkubmV4dCgpOyFvLmRvbmU7bz1pLm5leHQoKSl7dmFyIGE9by52YWx1ZSxzPXRoaXMuY2hpbGRyZW4uZ2V0KGEpO2lmKCFzKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBmb3J3YXJkIGV2ZW50ICdcIi5jb25jYXQodCxcIicgZnJvbSBpbnRlcnByZXRlciAnXCIpLmNvbmNhdCh0aGlzLmlkLFwiJyB0byBub25leGlzdGFudCBjaGlsZCAnXCIpLmNvbmNhdChhLFwiJy5cIikpO3Muc2VuZCh0KX19Y2F0Y2godCl7ZT17ZXJyb3I6dH19ZmluYWxseXt0cnl7byYmIW8uZG9uZSYmKG49aS5yZXR1cm4pJiZuLmNhbGwoaSl9ZmluYWxseXtpZihlKXRocm93IGUuZXJyb3J9fX0sbi5wcm90b3R5cGUuZGVmZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLmRlbGF5ZWRFdmVudHNNYXBbdC5pZF09dGhpcy5jbG9jay5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3QudG8/ZS5zZW5kVG8odC5fZXZlbnQsdC50byk6ZS5zZW5kKHQuX2V2ZW50KX0pLHQuZGVsYXkpfSxuLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24odCl7dGhpcy5jbG9jay5jbGVhclRpbWVvdXQodGhpcy5kZWxheWVkRXZlbnRzTWFwW3RdKSxkZWxldGUgdGhpcy5kZWxheWVkRXZlbnRzTWFwW3RdfSxuLnByb3RvdHlwZS5leGVjPWZ1bmN0aW9uKGUsbixyKXt2b2lkIDA9PT1yJiYocj10aGlzLm1hY2hpbmUub3B0aW9ucy5hY3Rpb25zKTt2YXIgaT1uLmNvbnRleHQsbz1uLl9ldmVudCxhPWUuZXhlY3x8ZnQoZS50eXBlLHIpLHM9TihhKT9hOmE/YS5leGVjOmUuZXhlYztpZihzKXRyeXtyZXR1cm4gcyhpLG8uZGF0YSx7YWN0aW9uOmUsc3RhdGU6dGhpcy5zdGF0ZSxfZXZlbnQ6b30pfWNhdGNoKHQpe3Rocm93IHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5zZW5kKHt0eXBlOlwieHN0YXRlLmVycm9yXCIsZGF0YTp0fSksdH1zd2l0Y2goZS50eXBlKXtjYXNlIFk6dmFyIGM9ZTtpZihcIm51bWJlclwiPT10eXBlb2YgYy5kZWxheSlyZXR1cm4gdm9pZCB0aGlzLmRlZmVyKGMpO2MudG8/dGhpcy5zZW5kVG8oYy5fZXZlbnQsYy50byk6dGhpcy5zZW5kKGMuX2V2ZW50KTticmVhaztjYXNlIFo6dGhpcy5jYW5jZWwoZS5zZW5kSWQpO2JyZWFrO2Nhc2UgSzp2YXIgdT1lLmFjdGl2aXR5O2lmKCF0aGlzLnN0YXRlLmFjdGl2aXRpZXNbdS5pZHx8dS50eXBlXSlicmVhaztpZih1LnR5cGU9PT10LkFjdGlvblR5cGVzLkludm9rZSl7dmFyIGg9TSh1LnNyYyksZj10aGlzLm1hY2hpbmUub3B0aW9ucy5zZXJ2aWNlcz90aGlzLm1hY2hpbmUub3B0aW9ucy5zZXJ2aWNlc1toLnR5cGVdOnZvaWQgMCxsPXUuaWQsZD11LmRhdGEscD1cImF1dG9Gb3J3YXJkXCJpbiB1P3UuYXV0b0ZvcndhcmQ6ISF1LmZvcndhcmQ7aWYoIWYpcmV0dXJuO3ZhciB2PWQ/eChkLGksbyk6dm9pZCAwO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBmKXJldHVybjt2YXIgeT1OKGYpP2YoaSxvLmRhdGEse2RhdGE6dixzcmM6aCxtZXRhOnUubWV0YX0pOmY7aWYoIXkpcmV0dXJuO3ZhciBnPXZvaWQgMDtrKHkpJiYoeT12P3kud2l0aENvbnRleHQodik6eSxnPXthdXRvRm9yd2FyZDpwfSksdGhpcy5zcGF3bih5LGwsZyl9ZWxzZSB0aGlzLnNwYXduQWN0aXZpdHkodSk7YnJlYWs7Y2FzZSBROnRoaXMuc3RvcENoaWxkKGUuYWN0aXZpdHkuaWQpO2JyZWFrO2Nhc2UgbnQ6dmFyIG09ZS5sYWJlbCxTPWUudmFsdWU7bT90aGlzLmxvZ2dlcihtLFMpOnRoaXMubG9nZ2VyKFMpfX0sbi5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCl7dmFyIGU7dGhpcy5jaGlsZHJlbi5kZWxldGUodCksdGhpcy5mb3J3YXJkVG8uZGVsZXRlKHQpLG51bGw9PT0oZT10aGlzLnN0YXRlKXx8dm9pZCAwPT09ZXx8ZGVsZXRlIGUuY2hpbGRyZW5bdF19LG4ucHJvdG90eXBlLnN0b3BDaGlsZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNoaWxkcmVuLmdldCh0KTtlJiYodGhpcy5yZW1vdmVDaGlsZCh0KSxOKGUuc3RvcCkmJmUuc3RvcCgpKX0sbi5wcm90b3R5cGUuc3Bhd249ZnVuY3Rpb24odCxuLHIpe2lmKHcodCkpcmV0dXJuIHRoaXMuc3Bhd25Qcm9taXNlKFByb21pc2UucmVzb2x2ZSh0KSxuKTtpZihOKHQpKXJldHVybiB0aGlzLnNwYXduQ2FsbGJhY2sodCxuKTtpZihmdW5jdGlvbih0KXt0cnl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdC5zZW5kfWNhdGNoKHQpe3JldHVybiExfX0obz10KSYmXCJpZFwiaW4gbylyZXR1cm4gdGhpcy5zcGF3bkFjdG9yKHQsbik7aWYoZnVuY3Rpb24odCl7dHJ5e3JldHVyblwic3Vic2NyaWJlXCJpbiB0JiZOKHQuc3Vic2NyaWJlKX1jYXRjaCh0KXtyZXR1cm4hMX19KHQpKXJldHVybiB0aGlzLnNwYXduT2JzZXJ2YWJsZSh0LG4pO2lmKGsodCkpcmV0dXJuIHRoaXMuc3Bhd25NYWNoaW5lKHQsZShlKHt9LHIpLHtpZDpufSkpO2lmKG51bGwhPT0oaT10KSYmXCJvYmplY3RcIj09dHlwZW9mIGkmJlwidHJhbnNpdGlvblwiaW4gaSYmXCJmdW5jdGlvblwiPT10eXBlb2YgaS50cmFuc2l0aW9uKXJldHVybiB0aGlzLnNwYXduQmVoYXZpb3IodCxuKTt0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBzcGF3biBlbnRpdHkgXCInLmNvbmNhdChuLCdcIiBvZiB0eXBlIFwiJykuY29uY2F0KHR5cGVvZiB0LCdcIi4nKSk7dmFyIGksb30sbi5wcm90b3R5cGUuc3Bhd25NYWNoaW5lPWZ1bmN0aW9uKHQscil7dmFyIGk9dGhpczt2b2lkIDA9PT1yJiYocj17fSk7dmFyIG89bmV3IG4odCxlKGUoe30sdGhpcy5vcHRpb25zKSx7cGFyZW50OnRoaXMsaWQ6ci5pZHx8dC5pZH0pKSxhPWUoZSh7fSxZdCkscik7YS5zeW5jJiZvLm9uVHJhbnNpdGlvbigoZnVuY3Rpb24odCl7aS5zZW5kKHN0LHtzdGF0ZTp0LGlkOm8uaWR9KX0pKTt2YXIgcz1vO3JldHVybiB0aGlzLmNoaWxkcmVuLnNldChvLmlkLHMpLGEuYXV0b0ZvcndhcmQmJnRoaXMuZm9yd2FyZFRvLmFkZChvLmlkKSxvLm9uRG9uZSgoZnVuY3Rpb24odCl7aS5yZW1vdmVDaGlsZChvLmlkKSxpLnNlbmQoTCh0LHtvcmlnaW46by5pZH0pKX0pKS5zdGFydCgpLHN9LG4ucHJvdG90eXBlLnNwYXduQmVoYXZpb3I9ZnVuY3Rpb24odCxlKXt2YXIgbj1RdCh0LHtpZDplLHBhcmVudDp0aGlzfSk7cmV0dXJuIHRoaXMuY2hpbGRyZW4uc2V0KGUsbiksbn0sbi5wcm90b3R5cGUuc3Bhd25Qcm9taXNlPWZ1bmN0aW9uKHQsZSl7dmFyIG4scj10aGlzLGk9ITE7dC50aGVuKChmdW5jdGlvbih0KXtpfHwobj10LHIucmVtb3ZlQ2hpbGQoZSksci5zZW5kKEwoTnQoZSx0KSx7b3JpZ2luOmV9KSkpfSksKGZ1bmN0aW9uKHQpe2lmKCFpKXtyLnJlbW92ZUNoaWxkKGUpO3ZhciBuPUF0KGUsdCk7dHJ5e3Iuc2VuZChMKG4se29yaWdpbjplfSkpfWNhdGNoKHQpe3IuZGV2VG9vbHMmJnIuZGV2VG9vbHMuc2VuZChuLHIuc3RhdGUpLHIubWFjaGluZS5zdHJpY3QmJnIuc3RvcCgpfX19KSk7dmFyIG89e2lkOmUsc2VuZDpmdW5jdGlvbigpe30sc3Vic2NyaWJlOmZ1bmN0aW9uKGUsbixyKXt2YXIgaT16KGUsbixyKSxvPSExO3JldHVybiB0LnRoZW4oKGZ1bmN0aW9uKHQpe298fChpLm5leHQodCksb3x8aS5jb21wbGV0ZSgpKX0pLChmdW5jdGlvbih0KXtvfHxpLmVycm9yKHQpfSkpLHt1bnN1YnNjcmliZTpmdW5jdGlvbigpe3JldHVybiBvPSEwfX19LHN0b3A6ZnVuY3Rpb24oKXtpPSEwfSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57aWQ6ZX19LGdldFNuYXBzaG90OmZ1bmN0aW9uKCl7cmV0dXJuIG59fTtyZXR1cm4gdGhpcy5jaGlsZHJlbi5zZXQoZSxvKSxvfSxuLnByb3RvdHlwZS5zcGF3bkNhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7dmFyIG4scixpPXRoaXMsbz0hMSxhPW5ldyBTZXQscz1uZXcgU2V0O3RyeXtyPXQoKGZ1bmN0aW9uKHQpe249dCxzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSkpLG98fGkuc2VuZChMKHQse29yaWdpbjplfSkpfSksKGZ1bmN0aW9uKHQpe2EuYWRkKHQpfSkpfWNhdGNoKHQpe3RoaXMuc2VuZChBdChlLHQpKX1pZih3KHIpKXJldHVybiB0aGlzLnNwYXduUHJvbWlzZShyLGUpO3ZhciBjPXtpZDplLHNlbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIGEuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KSl9LHN1YnNjcmliZTpmdW5jdGlvbih0KXtyZXR1cm4gcy5hZGQodCkse3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7cy5kZWxldGUodCl9fX0sc3RvcDpmdW5jdGlvbigpe289ITAsTihyKSYmcigpfSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57aWQ6ZX19LGdldFNuYXBzaG90OmZ1bmN0aW9uKCl7cmV0dXJuIG59fTtyZXR1cm4gdGhpcy5jaGlsZHJlbi5zZXQoZSxjKSxjfSxuLnByb3RvdHlwZS5zcGF3bk9ic2VydmFibGU9ZnVuY3Rpb24odCxlKXt2YXIgbixyPXRoaXMsaT10LnN1YnNjcmliZSgoZnVuY3Rpb24odCl7bj10LHIuc2VuZChMKHQse29yaWdpbjplfSkpfSksKGZ1bmN0aW9uKHQpe3IucmVtb3ZlQ2hpbGQoZSksci5zZW5kKEwoQXQoZSx0KSx7b3JpZ2luOmV9KSl9KSwoZnVuY3Rpb24oKXtyLnJlbW92ZUNoaWxkKGUpLHIuc2VuZChMKE50KGUpLHtvcmlnaW46ZX0pKX0pKSxvPXtpZDplLHNlbmQ6ZnVuY3Rpb24oKXt9LHN1YnNjcmliZTpmdW5jdGlvbihlLG4scil7cmV0dXJuIHQuc3Vic2NyaWJlKGUsbixyKX0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBpLnVuc3Vic2NyaWJlKCl9LGdldFNuYXBzaG90OmZ1bmN0aW9uKCl7cmV0dXJuIG59LHRvSlNPTjpmdW5jdGlvbigpe3JldHVybntpZDplfX19O3JldHVybiB0aGlzLmNoaWxkcmVuLnNldChlLG8pLG99LG4ucHJvdG90eXBlLnNwYXduQWN0b3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jaGlsZHJlbi5zZXQoZSx0KSx0fSxuLnByb3RvdHlwZS5zcGF3bkFjdGl2aXR5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubWFjaGluZS5vcHRpb25zJiZ0aGlzLm1hY2hpbmUub3B0aW9ucy5hY3Rpdml0aWVzP3RoaXMubWFjaGluZS5vcHRpb25zLmFjdGl2aXRpZXNbdC50eXBlXTp2b2lkIDA7aWYoZSl7dmFyIG49ZSh0aGlzLnN0YXRlLmNvbnRleHQsdCk7dGhpcy5zcGF3bkVmZmVjdCh0LmlkLG4pfX0sbi5wcm90b3R5cGUuc3Bhd25FZmZlY3Q9ZnVuY3Rpb24odCxlKXt0aGlzLmNoaWxkcmVuLnNldCh0LHtpZDp0LHNlbmQ6ZnVuY3Rpb24oKXt9LHN1YnNjcmliZTpmdW5jdGlvbigpe3JldHVybnt1bnN1YnNjcmliZTpmdW5jdGlvbigpe319fSxzdG9wOmV8fHZvaWQgMCxnZXRTbmFwc2hvdDpmdW5jdGlvbigpe30sdG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue2lkOnR9fX0pfSxuLnByb3RvdHlwZS5hdHRhY2hEZXY9ZnVuY3Rpb24oKXt2YXIgdD1HdCgpO2lmKHRoaXMub3B0aW9ucy5kZXZUb29scyYmdCl7aWYodC5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fKXt2YXIgbj1cIm9iamVjdFwiPT10eXBlb2YgdGhpcy5vcHRpb25zLmRldlRvb2xzP3RoaXMub3B0aW9ucy5kZXZUb29sczp2b2lkIDA7dGhpcy5kZXZUb29scz10Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18uY29ubmVjdChlKGUoe25hbWU6dGhpcy5pZCxhdXRvUGF1c2U6ITAsc3RhdGVTYW5pdGl6ZXI6ZnVuY3Rpb24odCl7cmV0dXJue3ZhbHVlOnQudmFsdWUsY29udGV4dDp0LmNvbnRleHQsYWN0aW9uczp0LmFjdGlvbnN9fX0sbikse2ZlYXR1cmVzOmUoe2p1bXA6ITEsc2tpcDohMX0sbj9uLmZlYXR1cmVzOnZvaWQgMCl9KSx0aGlzLm1hY2hpbmUpLHRoaXMuZGV2VG9vbHMuaW5pdCh0aGlzLnN0YXRlKX1LdCh0aGlzKX19LG4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybntpZDp0aGlzLmlkfX0sbi5wcm90b3R5cGVbUF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sbi5wcm90b3R5cGUuZ2V0U25hcHNob3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0dXM9PT10LkludGVycHJldGVyU3RhdHVzLk5vdFN0YXJ0ZWQ/dGhpcy5pbml0aWFsU3RhdGU6dGhpcy5fc3RhdGV9LG4uZGVmYXVsdE9wdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJue2V4ZWN1dGU6ITAsZGVmZXJFdmVudHM6ITAsY2xvY2s6e3NldFRpbWVvdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gc2V0VGltZW91dCh0LGUpfSxjbGVhclRpbWVvdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGNsZWFyVGltZW91dCh0KX19LGxvZ2dlcjp0LmNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksZGV2VG9vbHM6ITF9fShcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOmdsb2JhbCksbi5pbnRlcnByZXQ9dGUsbn0oKTtmdW5jdGlvbiB0ZSh0LGUpe3JldHVybiBuZXcgWnQodCxlKX12YXIgZWU9e3JhaXNlOnZ0LHNlbmQ6eXQsc2VuZFBhcmVudDpndCxzZW5kVXBkYXRlOm10LGxvZzpmdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT10JiYodD1TdCkse3R5cGU6bnQsbGFiZWw6ZSxleHByOnR9fSxjYW5jZWw6eHQsc3RhcnQ6d3Qsc3RvcDpidCxhc3NpZ246X3QsYWZ0ZXI6RXQsZG9uZTpUdCxyZXNwb25kOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHl0KHQsZShlKHt9LG4pLHt0bzpmdW5jdGlvbih0LGUsbil7cmV0dXJuIG4uX2V2ZW50Lm9yaWdpbn19KSl9LGZvcndhcmRUbzpPdCxlc2NhbGF0ZTpmdW5jdGlvbihuLHIpe3JldHVybiBndCgoZnVuY3Rpb24odCxlLHIpe3JldHVybnt0eXBlOmF0LGRhdGE6TihuKT9uKHQsZSxyKTpufX0pLGUoZSh7fSxyKSx7dG86dC5TcGVjaWFsVGFyZ2V0cy5QYXJlbnR9KSl9LGNob29zZTpmdW5jdGlvbihlKXtyZXR1cm57dHlwZTp0LkFjdGlvblR5cGVzLkNob29zZSxjb25kczplfX0scHVyZTpmdW5jdGlvbihlKXtyZXR1cm57dHlwZTp0LkFjdGlvblR5cGVzLlB1cmUsZ2V0OmV9fX07dC5JbnRlcnByZXRlcj1adCx0Lk1hY2hpbmU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj10LmNvbnRleHQpLG5ldyB6dCh0LGUsbil9LHQuU3RhdGU9a3QsdC5TdGF0ZU5vZGU9enQsdC5hY3Rpb25zPWVlLHQuYXNzaWduPV90LHQuY3JlYXRlTWFjaGluZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgenQodCxlKX0sdC5jcmVhdGVTY2hlbWE9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHQuZG9uZUludm9rZT1OdCx0LmZvcndhcmRUbz1PdCx0LmludGVycHJldD10ZSx0Lm1hcFN0YXRlPWZ1bmN0aW9uKHQsZSl7dmFyIG4saSxvO3RyeXtmb3IodmFyIGE9cihzKHQpKSx1PWEubmV4dCgpOyF1LmRvbmU7dT1hLm5leHQoKSl7dmFyIGg9dS52YWx1ZTtjKGgsZSkmJighb3x8ZS5sZW5ndGg+by5sZW5ndGgpJiYobz1oKX19Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7dSYmIXUuZG9uZSYmKGk9YS5yZXR1cm4pJiZpLmNhbGwoYSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiB0W29dfSx0Lm1hdGNoU3RhdGU9ZnVuY3Rpb24odCxlLG4pe3ZhciBvLGEscz1rdC5mcm9tKHQsdCBpbnN0YW5jZW9mIGt0P3QuY29udGV4dDp2b2lkIDApO3RyeXtmb3IodmFyIGM9cihlKSx1PWMubmV4dCgpOyF1LmRvbmU7dT1jLm5leHQoKSl7dmFyIGg9aSh1LnZhbHVlLDIpLGY9aFswXSxsPWhbMV07aWYocy5tYXRjaGVzKGYpKXJldHVybiBsKHMpfX1jYXRjaCh0KXtvPXtlcnJvcjp0fX1maW5hbGx5e3RyeXt1JiYhdS5kb25lJiYoYT1jLnJldHVybikmJmEuY2FsbChjKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIG4ocyl9LHQubWF0Y2hlc1N0YXRlPWMsdC5zZW5kPXl0LHQuc2VuZFBhcmVudD1ndCx0LnNlbmRVcGRhdGU9bXQsdC5zcGF3bj1mdW5jdGlvbih0LG4pe3ZhciByPWZ1bmN0aW9uKHQpe3JldHVybiBBKHQpP2UoZSh7fSxZdCkse25hbWU6dH0pOmUoZShlKHt9LFl0KSx7bmFtZTpDKCl9KSx0KX0obik7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlP2Uuc3Bhd24odCxyLm5hbWUscik6VnQodCxyLm5hbWUpfShJdFtJdC5sZW5ndGgtMV0pfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0pKTtcbiJdfQ==
+//------QC-SOURCE-SPLIT------
 
-    try {
-      for (var o = r(t), a = o.next(); !a.done; a = o.next()) {
-        var s = a.value;
-        i.has(s) || i.set(s, []), s.parent && (i.has(s.parent) || i.set(s.parent, []), i.get(s.parent).push(s));
-      }
-    } catch (t) {
-      e = {
-        error: t
-      };
-    } finally {
-      try {
-        a && !a.done && (n = o["return"]) && n.call(o);
-      } finally {
-        if (e) throw e.error;
-      }
-    }
+                (function() {
+                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
+                    var __module = nodeEnv ? module : {exports:{}};
+                    var __filename = 'preview-scripts/assets/OP15/scene/OP15.js';
+                    var __require = nodeEnv ? function (request) {
+                        return cc.require(request);
+                    } : function (request) {
+                        return __quick_compile_project__.require(request, __filename);
+                    };
+                    function __define (exports, require, module) {
+                        if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
+cc._RF.push(module, 'ddbf4iIJnhHIImfp+SKRF1C', 'OP15');
+// OP15/scene/OP15.js
 
-    return i;
-  }
+"use strict";
 
-  function $(t, e) {
-    return function t(e, n) {
-      var r = n.get(e);
-      if (!r) return {};
+var _util = require("../script/util");
 
-      if ("compound" === e.type) {
-        var i = r[0];
-        if (!i) return {};
-        if (F(i)) return i.key;
-      }
+var _defaultData = require("../script/defaultData");
 
-      var o = {};
-      return r.forEach(function (e) {
-        o[e.key] = t(e, n);
-      }), o;
-    }(t, q(J([t], e)));
-  }
+var _xstate = require("../script/xstate");
 
-  function X(t, e) {
-    return Array.isArray(t) ? t.some(function (t) {
-      return t === e;
-    }) : t instanceof Set && t.has(e);
-  }
+function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } it = o[Symbol.iterator](); return it.next.bind(it); }
 
-  function H(t, e) {
-    return "compound" === e.type ? U(e).some(function (e) {
-      return "final" === e.type && X(t, e);
-    }) : "parallel" === e.type && U(e).every(function (e) {
-      return H(t, e);
-    });
-  }
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
-  function G(t) {
-    return new Set(g(t.map(function (t) {
-      return t.tags;
-    })));
-  }
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
 
-  var K = t.ActionTypes.Start,
-      Q = t.ActionTypes.Stop,
-      W = t.ActionTypes.Raise,
-      Y = t.ActionTypes.Send,
-      Z = t.ActionTypes.Cancel,
-      tt = t.ActionTypes.NullEvent,
-      et = t.ActionTypes.Assign,
-      nt = (t.ActionTypes.After, t.ActionTypes.DoneState, t.ActionTypes.Log),
-      rt = t.ActionTypes.Init,
-      it = t.ActionTypes.Invoke,
-      ot = (t.ActionTypes.ErrorExecution, t.ActionTypes.ErrorPlatform),
-      at = t.ActionTypes.ErrorCustom,
-      st = t.ActionTypes.Update,
-      ct = t.ActionTypes.Choose,
-      ut = t.ActionTypes.Pure,
-      ht = L({
-    type: rt
-  });
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
 
-  function ft(t, e) {
-    return e && e[t] || void 0;
-  }
+var pure = _xstate.actions.pure,
+    send = _xstate.actions.send,
+    raise = _xstate.actions.raise,
+    sendParent = _xstate.actions.sendParent;
+cc.Class({
+  "extends": cc.Component,
+  properties: {
+    /*ant: {
+    	default: null,
+    	type: cc.Node,
+    },
+    apple: {
+    	default: null,
+    	type: cc.Node,
+    },
+    bird: {
+    	default: null,
+    	type: cc.Node,
+    },
+    car: {
+    	default: null,
+    	type: cc.Node,
+    },
+    cat: {
+    	default: null,
+    	type: cc.Node,
+    },
+    cow: {
+    	default: null,
+    	type: cc.Node,
+    },
+    duck: {
+    	default: null,
+    	type: cc.Node,
+    },
+    egg: {
+    	default: null,
+    	type: cc.Node,
+    },
+    farmer: {
+    	default: null,
+    	type: cc.Node,
+    },
+    fish: {
+    	default: null,
+    	type: cc.Node,
+    },
+    girl: {
+    	default: null,
+    	type: cc.Node,
+    },
+    hen: {
+    	default: null,
+    	type: cc.Node,
+    },
+    house: {
+    	default: null,
+    	type: cc.Node,
+    },*/
+    rightAudio: {
+      "default": null,
+      type: cc.AudioClip
+    },
+    wrongAudio: {
+      "default": null,
+      type: cc.AudioClip
+    },
+    logoCat: {
+      "default": null,
+      type: cc.Node
+    }
+  },
+  playAni: function playAni(idx, name, options) {
+    var times = options && options.times || 1;
+    var cb = options && options.callback || null; // const cat = cc.find(`Canvas/frame-border/ground/${node}`);
 
-  function lt(t, n) {
-    var r;
-    if (A(t) || "number" == typeof t) r = N(i = ft(t, n)) ? {
-      type: t,
-      exec: i
-    } : i || {
-      type: t,
-      exec: void 0
-    };else if (N(t)) r = {
-      type: t.name || t.toString(),
-      exec: t
-    };else {
-      var i;
-      if (N(i = ft(t.type, n))) r = _e(_e({}, t), {
-        exec: i
-      });else if (i) {
-        var o = i.type || t.type;
-        r = _e(_e(_e({}, i), t), {
-          type: o
-        });
-      } else r = t;
-    }
-    return r;
-  }
+    var node = this._figurePointRectArray[idx].node;
+    var dragonDisplay = node.getComponent(dragonBones.ArmatureDisplay);
+    var state = dragonDisplay.playAnimation(name, times); // dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {
+    // 	//TODO 这里写触发事件
+    // 	//event.name为事件名称
+    // 	console.log(event.name)
+    // }, this);
+    // animationDisplay.addEventListener(dragonBones.EventObject.COMPLETE, completeCallback);
 
-  var dt = function dt(t, e) {
-    return t ? (T(t) ? t : [t]).map(function (t) {
-      return lt(t, e);
-    }) : [];
-  };
+    return state;
+  },
+  // 生命周期 onLoad
+  onLoad: function onLoad() {
+    this._timeoutIds = [];
+    this._intervalIds = [];
+    this.initSceneData();
+    this.initSize();
+    window.ccc = this;
+  },
+  _imageResList: null,
+  _audioResList: null,
+  _animaResList: null,
+  _lastFingerPosition: null,
+  _hintsNodeList: null,
+  _figurePointRectArray: null,
+  _allAnimationNodes: null,
+  initSceneData: function initSceneData() {
+    this._imageResList = [];
+    this._audioResList = [];
+    this._animaResList = [];
+    this._allAnimationNodes = [];
+    this._hintsNodeList = [];
+    this._lastFingerPosition = {
+      pos: null,
+      dirty: false
+    };
+    this._figurePointRectArray = [];
+  },
+  _designSize: null,
+  // 设计分辨率
+  _frameSize: null,
+  // 屏幕分辨率
+  _mapScaleMin: null,
+  // 场景中常用缩放(取大值)
+  _mapScaleMax: null,
+  // 场景中常用缩放(取小值)
+  _cocosScale: null,
+  // cocos 自缩放 (较少用到)
+  initSize: function initSize() {
+    // 注意cc.winSize只有在适配后(修改fitHeight/fitWidth后)才能获取到正确的值,因此使用cc.getFrameSize()来获取初始的屏幕大小
+    var screen_size = cc.view.getFrameSize().width / cc.view.getFrameSize().height;
+    var design_size = cc.Canvas.instance.designResolution.width / cc.Canvas.instance.designResolution.height;
+    var f = screen_size >= design_size;
+    cc.Canvas.instance.fitHeight = f;
+    cc.Canvas.instance.fitWidth = !f;
+    var frameSize = cc.view.getFrameSize();
+    this._frameSize = frameSize;
+    this._designSize = cc.view.getDesignResolutionSize();
+    var sx = cc.winSize.width / frameSize.width;
+    var sy = cc.winSize.height / frameSize.height;
+    this._cocosScale = Math.min(sx, sy);
+    sx = frameSize.width / this._designSize.width;
+    sy = frameSize.height / this._designSize.height;
+    this._mapScaleMin = Math.min(sx, sy) * this._cocosScale;
+    this._mapScaleMax = Math.max(sx, sy) * this._cocosScale;
+  },
+  createStateMachine: function createStateMachine() {
+    var _this = this;
 
-  function pt(t) {
-    var n = lt(t);
-    return _e(_e({
-      id: A(t) ? t : n.id
-    }, n), {
-      type: n.type
-    });
-  }
+    var check = [{
+      target: '#game.end',
+      cond: function cond(ctx, evt) {
+        console.log('[answer NEXT] check if end', ctx.questionIndex >= ctx.questionsCount - 1);
+        return ctx.questionIndex >= ctx.questionsCount - 1;
+      }
+    }, {
+      target: 'hint'
+    } // reenter 'hint' state
+    ];
+    var QuestionState = {
+      id: 'question',
+      initial: 'hint',
+      states: {
+        hint: {
+          invoke: {
+            src: function src(ctx, event) {
+              console.log("[hint] play question " + ctx.questionIndex + ": " + ctx.questionPlayTimes + " audio");
+              ctx.questionPlayTimes += 1;
+              return new Promise(function (resolve, reject) {
+                (0, _util.playAudioByUrl)(ctx.questions[ctx.questionIndex].audio_url, function () {
+                  console.log('hint finish');
+                  resolve();
+                });
+              });
+            },
+            onDone: 'answer',
+            onError: 'answer'
+          }
+        },
+        answer: {
+          after: {
+            8000: [{
+              target: 'wrong'
+            } // reenter 'hint' state
+            ]
+          },
+          invoke: {
+            src: function src(context, event) {
+              return function (callback, onReceive) {
+                console.log('[answer] thinking and playing'); // check every second
 
-  function vt(e) {
-    return A(e) ? {
-      type: W,
-      event: e
-    } : yt(e, {
-      to: t.SpecialTargets.Internal
-    });
-  }
+                var id = setInterval(function () {
+                  if (!_this._lastFingerPosition.dirty) {
+                    return;
+                  }
 
-  function yt(t, e) {
-    return {
-      to: e ? e.to : void 0,
-      type: Y,
-      event: N(t) ? t : V(t),
-      delay: e ? e.delay : void 0,
-      id: e && void 0 !== e.id ? e.id : N(t) ? t.name : u(t)
-    };
-  }
+                  var region = context.questions[context.questionIndex];
 
-  function gt(n, r) {
-    return yt(n, _e(_e({}, r), {
-      to: t.SpecialTargets.Parent
-    }));
-  }
+                  var result = _this.checkInRegion(region.rect);
 
-  function mt() {
-    return gt(st);
-  }
+                  if (result === null) {
+                    return;
+                  }
 
-  var St = function St(t, e) {
-    return {
-      context: t,
-      event: e
-    };
-  };
+                  console.log('[Genise JS] checkInRegion' + result);
 
-  var xt = function xt(t) {
-    return {
-      type: Z,
-      sendId: t
-    };
-  };
+                  if (result) {
+                    callback('RIGHT');
+                  } else {
+                    callback('WRONG');
+                  }
+                }, 100);
 
-  function wt(e) {
-    var n = pt(e);
-    return {
-      type: t.ActionTypes.Start,
-      activity: n,
-      exec: void 0
-    };
-  }
+                _this._intervalIds.push(id); // Perform cleanup
 
-  function bt(e) {
-    var n = N(e) ? e : pt(e);
-    return {
-      type: t.ActionTypes.Stop,
-      activity: n,
-      exec: void 0
-    };
-  }
 
-  var _t = function _t(t) {
-    return {
-      type: et,
-      assignment: t
-    };
-  };
+                return function () {
+                  return clearInterval(id);
+                };
+              };
+            }
+          },
+          on: {
+            RIGHT: {
+              target: 'right'
+            },
+            WRONG: {
+              target: 'wrong'
+            }
+          }
+        },
+        right: {
+          invoke: {
+            src: function src(context, event) {
+              _this._lastFingerPosition.pos = null;
+              _this._lastFingerPosition.dirty = false;
+              return new Promise(function (resolve, reject) {
+                console.log('answer right'); // this.playAni(context.questionIndex, 'normal')
 
-  function Et(e, n) {
-    var r = n ? "#".concat(n) : "";
-    return "".concat(t.ActionTypes.After, "(").concat(e, ")").concat(r);
-  }
+                var an = context.questions[context.questionIndex].node;
+                console.log('in right ' + typeof an);
+                an.active = true;
 
-  function Tt(e, n) {
-    var r = "".concat(t.ActionTypes.DoneState, ".").concat(e),
-        i = {
-      type: r,
-      data: n,
-      toString: function toString() {
-        return r;
-      }
-    };
-    return i;
-  }
+                if (an.isSpine) {
+                  var skeleton = an.getComponent(sp.Skeleton);
+                  skeleton.setToSetupPose();
+                  setTimeout(function () {
+                    skeleton.setAnimation(0, 'normal', true);
+                  }, 1);
+                } else {
+                  var dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);
+                  dragonDisplay.playAnimation('normal', 0);
+                }
 
-  function Nt(e, n) {
-    var r = "".concat(t.ActionTypes.DoneInvoke, ".").concat(e),
-        i = {
-      type: r,
-      data: n,
-      toString: function toString() {
-        return r;
+                var ddLogoCat = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
+
+                ddLogoCat.playAnimation('right', 1);
+                ddLogoCat.once(dragonBones.EventObject.COMPLETE, function () {
+                  this.logoCat.getComponent(dragonBones.ArmatureDisplay).playAnimation('normal', 0);
+                }, _this);
+                (0, _util.playAudioByUrl)(_this.rightAudio, function () {
+                  resolve();
+                });
+              });
+            },
+            onDone: {
+              target: '#QuestionsArray.next',
+              actions: raise('CHECK')
+            },
+            onError: {
+              target: '#QuestionsArray.next',
+              actions: raise('CHECK')
+            }
+          }
+        },
+        wrong: {
+          invoke: {
+            src: function src(context, event) {
+              _this._lastFingerPosition.pos = null;
+              _this._lastFingerPosition.dirty = false;
+              return new Promise(function (resolve, reject) {
+                console.log('answer wrong', context.questionIndex, context.questionPlayTimes, context.maxQuestionTryTimes);
+
+                var ddLogoCat = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
+
+                ddLogoCat.playAnimation('wrong', 1);
+                ddLogoCat.once(dragonBones.EventObject.COMPLETE, function () {
+                  this.logoCat.getComponent(dragonBones.ArmatureDisplay).playAnimation('normal', 0);
+                }, _this);
+                var wrongEffect = _this.wrongAudio; // 第一和第二题的提示音
+
+                if ([0, 1].includes(context.questionIndex)) {
+                  wrongEffect = _this.data["wrong_audio" + context.questionPlayTimes];
+                } else {
+                  // 非第一和第二题,并且做第二遍的提示音
+                  if (context.questionPlayTimes == 2) {
+                    wrongEffect = _this.data["wrong_audio" + context.questionPlayTimes];
+                  }
+                }
+
+                if (context.questionPlayTimes >= context.maxQuestionTryTimes) {
+                  var an = context.questions[context.questionIndex].node;
+                  an.active = true;
+
+                  if (an.isSpine) {
+                    var skeleton = an.getComponent(sp.Skeleton);
+                    skeleton.setToSetupPose();
+                    setTimeout(function () {
+                      skeleton.setAnimation(0, 'normal', true);
+                    }, 1);
+                  } else {
+                    var dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);
+                    dragonDisplay.playAnimation('normal', 0);
+                    console.log('show animation', an.active);
+                  }
+                }
+
+                (0, _util.playAudioByUrl)(wrongEffect, function () {
+                  if (context.questionPlayTimes >= context.maxQuestionTryTimes) {
+                    // const an = context.questions[context.questionIndex].node;
+                    // an.active = true;
+                    // const dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);
+                    // dragonDisplay.playAnimation('normal', 0);
+                    // console.log('show animation', an.active);
+                    reject();
+                  } else {
+                    resolve();
+                  }
+                });
+              });
+            },
+            onDone: {
+              target: 'hint' // actions: raise('CHECK')
+
+            },
+            onError: {
+              target: '#QuestionsArray.next',
+              actions: raise('CHECK')
+            }
+          }
+        }
       }
     };
-    return i;
-  }
-
-  function At(e, n) {
-    var r = "".concat(t.ActionTypes.ErrorPlatform, ".").concat(e),
-        i = {
-      type: r,
-      data: n,
-      toString: function toString() {
-        return r;
+    var QuestionsArrayStatus = {
+      id: 'QuestionsArray',
+      initial: 'play',
+      states: {
+        play: _extends({}, QuestionState),
+        next: {
+          on: {
+            CHECK: [{
+              target: '#game.end',
+              cond: function cond(ctx, evt) {
+                ctx.questionIndex += 1;
+                ctx.questionPlayTimes = 0;
+                console.log('#game.end', ctx.questionIndex >= ctx.questionsCount);
+                return ctx.questionIndex >= ctx.questionsCount;
+              }
+            }, {
+              target: 'play'
+            }]
+          }
+        }
       }
     };
-    return i;
-  }
-
-  function Ot(t, n) {
-    return yt(function (t, e) {
-      return e;
-    }, _e(_e({}, n), {
-      to: t
-    }));
-  }
+    var state = {
+      id: 'game',
+      initial: 'begin',
+      context: {
+        questionIndex: 0,
+        questionPlayTimes: 0,
+        maxQuestionTryTimes: 2,
+        questionsCount: this._figurePointRectArray.length,
+        questions: this._figurePointRectArray
+      },
+      states: {
+        begin: {
+          invoke: {
+            src: function src(ctx) {
+              console.log('game begin 1');
 
-  function Pt(n, r, a, s, c, u) {
-    void 0 === u && (u = !1);
-    var h = i(u ? [[], c] : b(c, function (t) {
-      return t.type === et;
-    }), 2),
-        f = h[0],
-        l = h[1],
-        d = f.length ? E(a, s, f, r) : a,
-        p = u ? [a] : void 0;
-    return [g(l.map(function (a) {
-      var c;
+              if (window.courseware && window.courseware.openOsmoFingerRead) {
+                _this.isOpenedOsmoFingerRead = true;
+                window.courseware.openOsmoFingerRead({
+                  "page_id": 27,
+                  "book_id": "opw1"
+                });
+              }
 
-      switch (a.type) {
-        case W:
-          return {
-            type: W,
-            _event: L(a.event)
-          };
+              var dragonDisplay = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
 
-        case Y:
-          return function (t, n, r, i) {
-            var o,
-                a = {
-              _event: r
+              var state = dragonDisplay.playAnimation('begin', 0);
+              return new Promise(function (resolve, reject) {
+                (0, _util.playAudioByUrl)(_this.data.begin_audio, function () {
+                  console.log('game begin audio finish');
+                  resolve();
+                });
+              });
             },
-                s = L(N(t.event) ? t.event(n, r.data, a) : t.event);
+            onDone: 'guide',
+            onError: 'guide'
+          }
+        },
+        guide: {
+          invoke: {
+            src: function src(ctx) {
+              return new Promise(function (resolve, reject) {
+                (0, _util.playAudioByUrl)(_this.data.guide_audio, function () {
+                  console.log('game guide audio finish');
+                  reject();
+                });
+              });
+            },
+            onDone: 'playing',
+            onError: 'playing'
+          }
+        },
+        playing: _extends({
+          entry: function entry(ctx) {
+            console.log('entry play stage');
 
-            if (A(t.delay)) {
-              var c = i && i[t.delay];
-              o = N(c) ? c(n, r.data, a) : c;
-            } else o = N(t.delay) ? t.delay(n, r.data, a) : t.delay;
+            var dragonDisplay = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
 
-            var u = N(t.to) ? t.to(n, r.data, a) : t.to;
-            return _e(_e({}, t), {
-              to: u,
-              _event: s,
-              event: s.data,
-              delay: o
+            var state = dragonDisplay.playAnimation('normal', 0);
+            cc.assetManager.loadRemote(_this.data.playing_audio, function (err, audioClip) {
+              cc.audioEngine.playMusic(audioClip, true, 0.8);
             });
-          }(a, d, s, n.options.delays);
-
-        case nt:
-          return function (t, n, r) {
-            return _e(_e({}, t), {
-              value: A(t.expr) ? t.expr : t.expr(n, r.data, {
-                _event: r
-              })
+            ctx.questions.forEach(function (block) {
+              block.node.active = false;
             });
-          }(a, d, s);
+          },
+          exit: function exit() {
+            console.log('exit play stage');
+            cc.audioEngine.stopMusic();
+          },
+          on: {
+            NEXT: 'end'
+          }
+        }, QuestionsArrayStatus),
+        end: {
+          entry: function entry(ctx, event) {
+            console.log('game end');
 
-        case ct:
-          if (!(v = null === (c = a.conds.find(function (t) {
-            var e = O(t.cond, n.options.guards);
-            return !e || R(n, e, d, s, r);
-          })) || void 0 === c ? void 0 : c.actions)) return [];
-          var h = i(Pt(n, r, d, s, dt(S(v), n.options.actions), u), 2),
-              f = h[0],
-              l = h[1];
-          return d = l, null == p || p.push(d), f;
+            var dragonDisplay = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
 
-        case ut:
-          var v;
-          if (!(v = a.get(d, s.data))) return [];
-          var y = i(Pt(n, r, d, s, dt(S(v), n.options.actions), u), 2),
-              g = y[0],
-              m = y[1];
-          return d = m, null == p || p.push(d), g;
-
-        case Q:
-          return function (e, n, r) {
-            var i = N(e.activity) ? e.activity(n, r.data) : e.activity,
-                o = "string" == typeof i ? {
-              id: i
-            } : i;
-            return {
-              type: t.ActionTypes.Stop,
-              activity: o
-            };
-          }(a, d, s);
-
-        case et:
-          d = E(d, s, [a], r), null == p || p.push(d);
-          break;
-
-        default:
-          var x = lt(a, n.options.actions),
-              w = x.exec;
+            var state = dragonDisplay.playAnimation('finish', 0);
 
-          if (w && p) {
-            var b = p.length - 1;
-            x = _e(_e({}, x), {
-              exec: function exec(t) {
-                for (var e = [], n = 1; n < arguments.length; n++) {
-                  e[n - 1] = arguments[n];
-                }
+            if (window.courseware && window.courseware.closeOsmoFingerRead) {
+              _this.isOpenedOsmoFingerRead = false;
+              window.courseware.closeOsmoFingerRead();
+            }
 
-                w.apply(void 0, o([p[b]], i(e), !1));
-              }
-            });
+            (0, _util.playAudioByUrl)(_this.data.end_audio, function () {
+              console.log('game finish');
+              (0, _util.onHomeworkFinish)();
+            }); // return new Promise((resolve,reject) => {
+            // 	setTimeout(() => {
+            // 		console.log('hint finish');
+            // 		resolve()
+            // 	}, 2000)
+            // })
           }
-
-          return x;
-      }
-    }).filter(function (t) {
-      return !!t;
-    })), d];
-  }
-
-  var kt = function () {
-    function t(t) {
-      var e,
-          n,
-          r = this;
-      this.actions = [], this.activities = a, this.meta = {}, this.events = [], this.value = t.value, this.context = t.context, this._event = t._event, this._sessionid = t._sessionid, this.event = this._event.data, this.historyValue = t.historyValue, this.history = t.history, this.actions = t.actions || [], this.activities = t.activities || a, this.meta = (void 0 === (n = t.configuration) && (n = []), n.reduce(function (t, e) {
-        return void 0 !== e.meta && (t[e.id] = e.meta), t;
-      }, {})), this.events = t.events || [], this.matches = this.matches.bind(this), this.toStrings = this.toStrings.bind(this), this.configuration = t.configuration, this.transitions = t.transitions, this.children = t.children, this.done = !!t.done, this.tags = null !== (e = Array.isArray(t.tags) ? new Set(t.tags) : t.tags) && void 0 !== e ? e : new Set(), this.machine = t.machine, Object.defineProperty(this, "nextEvents", {
-        get: function get() {
-          return function (t) {
-            return o([], i(new Set(g(o([], i(t.map(function (t) {
-              return t.ownEvents;
-            })), !1)))), !1);
-          }(r.configuration);
         }
-      });
-    }
-
-    return t.from = function (e, n) {
-      return e instanceof t ? e.context !== n ? new t({
-        value: e.value,
-        context: n,
-        _event: e._event,
-        _sessionid: null,
-        historyValue: e.historyValue,
-        history: e.history,
-        actions: [],
-        activities: e.activities,
-        meta: {},
-        events: [],
-        configuration: [],
-        transitions: [],
-        children: {}
-      }) : e : new t({
-        value: e,
-        context: n,
-        _event: ht,
-        _sessionid: null,
-        historyValue: void 0,
-        history: void 0,
-        actions: [],
-        activities: void 0,
-        meta: void 0,
-        events: [],
-        configuration: [],
-        transitions: [],
-        children: {}
-      });
-    }, t.create = function (e) {
-      return new t(e);
-    }, t.inert = function (e, n) {
-      if (e instanceof t) {
-        if (!e.actions.length) return e;
-        var r = ht;
-        return new t({
-          value: e.value,
-          context: n,
-          _event: r,
-          _sessionid: null,
-          historyValue: e.historyValue,
-          history: e.history,
-          activities: e.activities,
-          configuration: e.configuration,
-          transitions: [],
-          children: {}
-        });
       }
+    };
+    var after = {};
 
-      return t.from(e, n);
-    }, t.prototype.toStrings = function (t, e) {
-      var n = this;
-      if (void 0 === t && (t = this.value), void 0 === e && (e = "."), A(t)) return [t];
-      var r = s(t);
-      return r.concat.apply(r, o([], i(r.map(function (r) {
-        return n.toStrings(t[r], e).map(function (t) {
-          return r + e + t;
-        });
-      })), !1));
-    }, t.prototype.toJSON = function () {
-      var t = this,
-          r = (t.configuration, t.transitions, t.tags),
-          i = (t.machine, n(t, ["configuration", "transitions", "tags", "machine"]));
-      return _e(_e({}, i), {
-        tags: Array.from(r)
-      });
-    }, t.prototype.matches = function (t) {
-      return c(t, this.value);
-    }, t.prototype.hasTag = function (t) {
-      return this.tags.has(t);
-    }, t.prototype.can = function (t) {
-      var e;
-      return this.machine, !!(null === (e = this.machine) || void 0 === e ? void 0 : e.transition(this, t).changed);
-    }, t;
-  }(),
-      It = [],
-      jt = function jt(t, e) {
-    It.push(t);
-    var n = e(t);
-    return It.pop(), n;
-  };
+    var _loop = function _loop(i) {
+      var t = _this._hintsNodeList[i].node;
+      var k = _this._hintsNodeList[i].after;
+      after[k] = {
+        actions: function actions() {
+          if (t.isSpine) {
+            var skeleton = t.getComponent(sp.Skeleton);
+            skeleton.setToSetupPose();
+            setTimeout(function () {
+              skeleton.setAnimation(0, 'enlarge', false);
+            }, 1); // skeleton.animation = skeleton.animationNames[0];
+          } else {
+            var dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
+            dragonDisplay.playAnimation('enlarge', 1);
+            console.log(dragonDisplay._armatureKey, 'enlarge');
+            dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, function (event) {// TODO 这里写触发事件
+              // event.name为事件名称
+              // event.armature.animation.play('normal', 0);
+              // console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')
+            }, _this);
+          } // const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
+          // dragonDisplay.playAnimation('enlarge', 1);
+          // console.log(dragonDisplay._armatureKey, 'enlarge')
+          // dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {
+          // 	//TODO 这里写触发事件
+          // 	//event.name为事件名称
+          // 	event.armature.animation.play('normal', 0);
+          // 	console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')
+          // }, this);
 
-  function Ct(t) {
-    return {
-      id: t,
-      send: function send() {},
-      subscribe: function subscribe() {
-        return {
-          unsubscribe: function unsubscribe() {}
-        };
-      },
-      getSnapshot: function getSnapshot() {},
-      toJSON: function toJSON() {
-        return {
-          id: t
-        };
-      }
+        }
+      };
     };
-  }
 
-  function Vt(t, e, n) {
-    var r = Ct(e);
+    for (var i = 0; i < this._hintsNodeList.length; i++) {
+      _loop(i);
+    }
 
-    if (r.deferred = !0, k(t)) {
-      var i = r.state = jt(void 0, function () {
-        return (n ? t.withContext(n) : t).initialState;
-      });
+    if (this.data.begin_sep_time) {
+      var t = +this.data.begin_sep_time * 1000;
+      after[t] = {
+        actions: function actions() {
+          console.log('game begin 2');
 
-      r.getSnapshot = function () {
-        return i;
-      };
-    }
+          for (var _i = 0; _i < _this._allAnimationNodes.length; _i++) {
+            var _t = _this._allAnimationNodes[_i];
 
-    return r;
-  }
+            if (_t.isSpine) {
+              (function () {
+                var skeleton = _t.getComponent(sp.Skeleton);
 
-  function Lt(t) {
-    if ("string" == typeof t) {
-      var e = {
-        type: t,
-        toString: function toString() {
-          return t;
+                console.log('skeleton: ', skeleton);
+                skeleton.setToSetupPose();
+                setTimeout(function () {
+                  skeleton.setAnimation(0, 'normal', true);
+                }, 1);
+                console.log('skeleton 22: ', skeleton); // skeleton.animation = skeleton.animationNames[0];
+              })();
+            } else {
+              var dragonDisplay = _t.getComponent(dragonBones.ArmatureDisplay);
+
+              dragonDisplay.playAnimation('normal', 0);
+            }
+          }
         }
       };
-      return e;
     }
 
-    return t;
-  }
+    state.states.begin.after = after;
+    var gameMachine = (0, _xstate.createMachine)(state);
+    window.gameMachine = gameMachine;
+    this.gameMachineService = (0, _xstate.interpret)(gameMachine).onTransition(function (state) {// console.log(1, state.value, state.context);
+    });
+    this.gameMachineService.start();
 
-  function Dt(t) {
-    return _e(_e({
-      type: it
-    }, t), {
-      toJSON: function toJSON() {
-        t.onDone, t.onError;
-        var r = n(t, ["onDone", "onError"]);
-        return _e(_e({}, r), {
-          type: it,
-          src: Lt(t.src)
-        });
-      }
+    if (window.gameMachineService) {
+      window.gameMachineService = gameMachineService;
+    }
+  },
+  // 生命周期 start
+  start: function start() {
+    var _this2 = this;
+
+    var getData = this.getData.bind(this);
+
+    if (window && window.courseware) {
+      getData = window.courseware.getData;
+    }
+
+    getData(function (data) {
+      // console.log('data:', data);
+      _this2.data = data || _this2.getDefaultData();
+      _this2.data = JSON.parse(JSON.stringify(_this2.data));
+
+      _this2.preloadItem();
     });
-  }
+    window.air = window.air || {};
 
-  var Rt = {},
-      Mt = function Mt(t) {
-    return "#" === t[0];
-  },
-      zt = function () {
-    function a(t, n, c) {
-      var u,
-          h = this;
-      void 0 === c && (c = "context" in t ? t.context : void 0), this.config = t, this._context = c, this.order = -1, this.__xstatenode = !0, this.__cache = {
-        events: void 0,
-        relativeValue: new Map(),
-        initialStateValue: void 0,
-        initialState: void 0,
-        on: void 0,
-        transitions: void 0,
-        candidates: {},
-        delayedTransitions: void 0
-      }, this.idMap = {}, this.tags = [], this.options = Object.assign({
-        actions: {},
-        guards: {},
-        services: {},
-        activities: {},
-        delays: {}
-      }, n), this.parent = this.options._parent, this.key = this.config.key || this.options._key || this.config.id || "(machine)", this.machine = this.parent ? this.parent.machine : this, this.path = this.parent ? this.parent.path.concat(this.key) : [], this.delimiter = this.config.delimiter || (this.parent ? this.parent.delimiter : "."), this.id = this.config.id || o([this.machine.key], i(this.path), !1).join(this.delimiter), this.version = this.parent ? this.parent.version : this.config.version, this.type = this.config.type || (this.config.parallel ? "parallel" : this.config.states && s(this.config.states).length ? "compound" : this.config.history ? "history" : "atomic"), this.schema = this.parent ? this.machine.schema : null !== (u = this.config.schema) && void 0 !== u ? u : {}, this.description = this.config.description, this.initial = this.config.initial, this.states = this.config.states ? d(this.config.states, function (t, n) {
-        var r,
-            i = new a(t, {
-          _parent: h,
-          _key: n
-        });
-        return Object.assign(h.idMap, _e(((r = {})[i.id] = i, r), i.idMap)), i;
-      }) : Rt;
-      var f = 0;
-      !function t(e) {
-        var n, i;
-        e.order = f++;
+    if (window.air) {
+      window.air.osmoFingerReadCallback = function (result) {
+        if (!_this2.gameMachineService) {
+          return;
+        } // const st = this.gameMachineService.state.value.constructor.name == 'Object' 
+        // && this.gameMachineService.state.value['playing']
+        // && this.gameMachineService.state.value['playing'].constructor.name == 'Object'
+        // && this.gameMachineService.state.value['playing']['play']
+        // && this.gameMachineService.state.value['playing']['play'] == 'answer'
+        // if (st) {
+        // }
 
-        try {
-          for (var o = r(U(e)), a = o.next(); !a.done; a = o.next()) {
-            t(a.value);
-          }
-        } catch (t) {
-          n = {
-            error: t
-          };
-        } finally {
-          try {
-            a && !a.done && (i = o["return"]) && i.call(o);
-          } finally {
-            if (n) throw n.error;
-          }
-        }
-      }(this), this.history = !0 === this.config.history ? "shallow" : this.config.history || !1, this._transient = !!this.config.always || !!this.config.on && (Array.isArray(this.config.on) ? this.config.on.some(function (t) {
-        return "" === t.event;
-      }) : "" in this.config.on), this.strict = !!this.config.strict, this.onEntry = S(this.config.entry || this.config.onEntry).map(function (t) {
-        return lt(t);
-      }), this.onExit = S(this.config.exit || this.config.onExit).map(function (t) {
-        return lt(t);
-      }), this.meta = this.config.meta, this.doneData = "final" === this.type ? this.config.data : void 0, this.invoke = S(this.config.invoke).map(function (t, n) {
-        var r, i;
-        if (k(t)) return h.machine.options.services = _e(((r = {})[t.id] = t, r), h.machine.options.services), Dt({
-          src: t.id,
-          id: t.id
-        });
-        if (A(t.src)) return Dt(_e(_e({}, t), {
-          id: t.id || t.src,
-          src: t.src
-        }));
 
-        if (k(t.src) || N(t.src)) {
-          var o = "".concat(h.id, ":invocation[").concat(n, "]");
-          return h.machine.options.services = _e(((i = {})[o] = t.src, i), h.machine.options.services), Dt(_e(_e({
-            id: o
-          }, t), {
-            src: o
-          }));
-        }
+        var resultObj = JSON.parse(result);
+        console.log('[Genise JS] ' + JSON.stringify(resultObj.finger_pos_in_page));
+        var p = resultObj.finger_pos_in_page;
 
-        var a = t.src;
-        return Dt(_e(_e({
-          id: a.type
-        }, t), {
-          src: a
-        }));
-      }), this.activities = S(this.config.activities).concat(this.invoke).map(function (t) {
-        return pt(t);
-      }), this.transition = this.transition.bind(this), this.tags = S(this.config.tags);
-    }
+        if (p.x == -1 || p.y == -1) {
+          _this2._lastFingerPosition.pos = null;
+          _this2._lastFingerPosition.dirty = false;
+          return;
+        }
 
-    return a.prototype._init = function () {
-      this.__cache.transitions || B(this).forEach(function (t) {
-        return t.on;
-      });
-    }, a.prototype.withConfig = function (t, n) {
-      var r = this.options,
-          i = r.actions,
-          o = r.activities,
-          s = r.guards,
-          c = r.services,
-          u = r.delays;
-      return new a(this.config, {
-        actions: _e(_e({}, i), t.actions),
-        activities: _e(_e({}, o), t.activities),
-        guards: _e(_e({}, s), t.guards),
-        services: _e(_e({}, c), t.services),
-        delays: _e(_e({}, u), t.delays)
-      }, null != n ? n : this.context);
-    }, a.prototype.withContext = function (t) {
-      return new a(this.config, this.options, t);
-    }, Object.defineProperty(a.prototype, "context", {
-      get: function get() {
-        return N(this._context) ? this._context() : this._context;
-      },
-      enumerable: !1,
-      configurable: !0
-    }), Object.defineProperty(a.prototype, "definition", {
-      get: function get() {
-        return {
-          id: this.id,
-          key: this.key,
-          version: this.version,
-          context: this.context,
-          type: this.type,
-          initial: this.initial,
-          history: this.history,
-          states: d(this.states, function (t) {
-            return t.definition;
-          }),
-          on: this.on,
-          transitions: this.transitions,
-          entry: this.onEntry,
-          exit: this.onExit,
-          activities: this.activities || [],
-          meta: this.meta,
-          order: this.order || -1,
-          data: this.doneData,
-          invoke: this.invoke,
-          description: this.description,
-          tags: this.tags
+        _this2._lastFingerPosition = {
+          pos: {
+            x: p.x,
+            y: p.y
+          },
+          dirty: true
         };
-      },
-      enumerable: !1,
-      configurable: !0
-    }), a.prototype.toJSON = function () {
-      return this.definition;
-    }, Object.defineProperty(a.prototype, "on", {
-      get: function get() {
-        if (this.__cache.on) return this.__cache.on;
-        var t = this.transitions;
-        return this.__cache.on = t.reduce(function (t, e) {
-          return t[e.eventType] = t[e.eventType] || [], t[e.eventType].push(e), t;
-        }, {});
-      },
-      enumerable: !1,
-      configurable: !0
-    }), Object.defineProperty(a.prototype, "after", {
-      get: function get() {
-        return this.__cache.delayedTransitions || (this.__cache.delayedTransitions = this.getDelayedTransitions(), this.__cache.delayedTransitions);
-      },
-      enumerable: !1,
-      configurable: !0
-    }), Object.defineProperty(a.prototype, "transitions", {
-      get: function get() {
-        return this.__cache.transitions || (this.__cache.transitions = this.formatTransitions(), this.__cache.transitions);
-      },
-      enumerable: !1,
-      configurable: !0
-    }), a.prototype.getCandidates = function (t) {
-      if (this.__cache.candidates[t]) return this.__cache.candidates[t];
-      var e = "" === t,
-          n = this.transitions.filter(function (n) {
-        var r = n.eventType === t;
-        return e ? r : r || "*" === n.eventType;
-      });
-      return this.__cache.candidates[t] = n, n;
-    }, a.prototype.getDelayedTransitions = function () {
-      var t = this,
-          n = this.config.after;
-      if (!n) return [];
 
-      var r = function r(e, n) {
-        var r = Et(N(e) ? "".concat(t.id, ":delay[").concat(n, "]") : e, t.id);
-        return t.onEntry.push(yt(r, {
-          delay: e
-        })), t.onExit.push(xt(r)), r;
+        _this2.debugPointer(p.x, p.y);
       };
+    }
 
-      return (T(n) ? n.map(function (t, n) {
-        var i = r(t.delay, n);
-        return _e(_e({}, t), {
-          event: i
-        });
-      }) : g(s(n).map(function (t, i) {
-        var o = n[t],
-            a = A(o) ? {
-          target: o
-        } : o,
-            s = isNaN(+t) ? t : +t,
-            c = r(s, i);
-        return S(a).map(function (t) {
-          return _e(_e({}, t), {
-            event: c,
-            delay: s
-          });
-        });
-      }))).map(function (n) {
-        var r = n.delay;
-        return _e(_e({}, t.formatTransition(n)), {
-          delay: r
-        });
-      });
-    }, a.prototype.getStateNodes = function (t) {
-      var e,
-          n = this;
-      if (!t) return [];
-      var r = t instanceof kt ? t.value : f(t, this.delimiter);
-
-      if (A(r)) {
-        var i = this.getStateNode(r).initial;
-        return void 0 !== i ? this.getStateNodes(((e = {})[r] = i, e)) : [this, this.states[r]];
-      }
-
-      var o = s(r),
-          a = o.map(function (t) {
-        return n.getStateNode(t);
-      });
-      return a.push(this), a.concat(o.reduce(function (t, e) {
-        var i = n.getStateNode(e).getStateNodes(r[e]);
-        return t.concat(i);
-      }, []));
-    }, a.prototype.handles = function (t) {
-      var e = u(t);
-      return this.events.includes(e);
-    }, a.prototype.resolveState = function (t) {
-      var n = Array.from(J([], this.getStateNodes(t.value)));
-      return new kt(_e(_e({}, t), {
-        value: this.resolve(t.value),
-        configuration: n,
-        done: H(n, this),
-        tags: G(n)
-      }));
-    }, a.prototype.transitionLeafNode = function (t, e, n) {
-      var r = this.getStateNode(t).next(e, n);
-      return r && r.transitions.length ? r : this.next(e, n);
-    }, a.prototype.transitionCompoundNode = function (t, e, n) {
-      var r = s(t),
-          i = this.getStateNode(r[0])._transition(t[r[0]], e, n);
+    this.isDebug = false;
+  },
+  checkInRegion: function checkInRegion(r) {
+    if (!this._lastFingerPosition && !this._lastFingerPosition.pos) {
+      return null;
+    }
 
-      return i && i.transitions.length ? i : this.next(e, n);
-    }, a.prototype.transitionParallelNode = function (t, e, n) {
-      var i,
-          o,
-          a = {};
+    var p = this._lastFingerPosition ? this._lastFingerPosition.pos || {
+      x: 0,
+      y: 0
+    } : {
+      x: 0,
+      y: 0
+    };
+    console.log('~p: ', p);
+    console.log('~r: ', r);
+    var w = p.x > r.x && p.x < r.x + r.width;
+    var h = p.y > r.y && p.y < r.y + r.height;
+    return w && h;
+  },
+  getData: function getData(func) {
+    if (window && window.courseware) {
+      window.courseware.getData(func, 'scene');
+      return;
+    }
 
-      try {
-        for (var c = r(s(t)), u = c.next(); !u.done; u = c.next()) {
-          var h = u.value,
-              f = t[h];
+    var middleLayer = cc.find('middleLayer');
 
-          if (f) {
-            var l = this.getStateNode(h)._transition(f, e, n);
+    if (middleLayer) {
+      var middleLayerComponent = middleLayer.getComponent('middleLayer');
+      middleLayerComponent.getData(func);
+      return;
+    }
 
-            l && (a[h] = l);
-          }
+    func(this.getDefaultData());
+  },
+  getDefaultData: function getDefaultData() {
+    return {
+      "begin_audio": "https://teach.cdn.ireadabc.com/9be46c9adb540ed8a60763f1e657ccb7.mp3",
+      "begin_sep_time": 66,
+      "guide_audio": "https://teach.cdn.ireadabc.com/9523c8ed45faee686363dd157b0d7426.mp3",
+      "playing_audio": "https://teach.cdn.ireadabc.com/d6a953052a6f80549730cb4307c55719.mp3",
+      "right_audio": "https://teach.cdn.ireadabc.com/43791fc418e666df5e9ec1b7bf936409.mp3",
+      "wrong_audio": "https://teach.cdn.ireadabc.com/7dd85f025a132c2eef8daee38d900287.mp3",
+      "wrong_audio1": "https://teach.cdn.ireadabc.com/a76afb06af0799bf538e38f9f80a2261.mp3",
+      "wrong_audio2": "https://teach.cdn.ireadabc.com/daee88b6f2eadd78b60436eedffcae08.mp3",
+      "end_audio": "https://teach.cdn.ireadabc.com/9c1e87b3c184b06e14e44bb058b9804e.mp3",
+      "bgItem": {
+        "url": "https://teach.cdn.ireadabc.com/16b6dacd8e6c1ce6da16f500a66b366b.jpg",
+        "rect": {
+          "x": 319.68,
+          "y": 0,
+          "width": 257.64,
+          "height": 342
         }
-      } catch (t) {
-        i = {
-          error: t
-        };
-      } finally {
-        try {
-          u && !u.done && (o = c["return"]) && o.call(c);
-        } finally {
-          if (i) throw i.error;
+      },
+      "hotZoneItemArr": [{
+        "id": "1650544807877",
+        "index": 0,
+        "itemType": "pic",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 176.65207877461702
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/66c7c0847c33f7f95cb0035fe14c4405.json",
+          "name": "monkey_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/98a8272cd2d97047b090ff10e948b978.json",
+          "name": "monkey_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/c35ced408ad68a52c4ec5375373d3627.png",
+          "name": "monkey_tex.png"
+        },
+        "rect": {
+          "x": 128.83,
+          "y": 171,
+          "width": 0,
+          "height": 0
         }
-      }
-
-      var d = s(a).map(function (t) {
-        return a[t];
-      }),
-          p = g(d.map(function (t) {
-        return t.transitions;
-      }));
-      if (!d.some(function (t) {
-        return t.transitions.length > 0;
-      })) return this.next(e, n);
-      var v = g(d.map(function (t) {
-        return t.entrySet;
-      })),
-          y = g(s(a).map(function (t) {
-        return a[t].configuration;
-      }));
-      return {
-        transitions: p,
-        entrySet: v,
-        exitSet: g(d.map(function (t) {
-          return t.exitSet;
-        })),
-        configuration: y,
-        source: e,
-        actions: g(s(a).map(function (t) {
-          return a[t].actions;
-        }))
-      };
-    }, a.prototype._transition = function (t, e, n) {
-      return A(t) ? this.transitionLeafNode(t, e, n) : 1 === s(t).length ? this.transitionCompoundNode(t, e, n) : this.transitionParallelNode(t, e, n);
-    }, a.prototype.next = function (t, e) {
-      var n,
-          a,
-          s,
-          u = this,
-          h = e.name,
-          l = [],
-          d = [];
-
-      try {
-        for (var p = r(this.getCandidates(h)), y = p.next(); !y.done; y = p.next()) {
-          var m = y.value,
-              S = m.cond,
-              x = m["in"],
-              w = t.context,
-              b = !x || (A(x) && Mt(x) ? t.matches(f(this.getStateNodeById(x).path, this.delimiter)) : c(f(x, this.delimiter), v(this.path.slice(0, -2))(t.value))),
-              _ = !1;
-
-          try {
-            _ = !S || R(this.machine, S, w, e, t);
-          } catch (t) {
-            throw new Error("Unable to evaluate guard '".concat(S.name || S.type, "' in transition for event '").concat(h, "' in state node '").concat(this.id, "':\n").concat(t.message));
-          }
-
-          if (_ && b) {
-            void 0 !== m.target && (d = m.target), l.push.apply(l, o([], i(m.actions), !1)), s = m;
-            break;
-          }
+      }, {
+        "id": "1650546079000",
+        "index": 1,
+        "audio_url": "https://teach.cdn.ireadabc.com/f9edc84a669688c5abddd55e2aab015d.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "21.3",
+        "posX": 692.4127500193598,
+        "posY": 218.14695959185556,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/e3c67a25dd3bb34fe113e126e6e1cc81.json",
+          "name": "ox_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/81d487bf31d3a4d0f25f44c184ba9233.json",
+          "name": "ox_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/e199392b52a735f6e37a6815ec3bb10e.png",
+          "name": "ox_tex.png"
+        },
+        "rect": {
+          "x": 159.34,
+          "y": 138.66,
+          "width": 38.83,
+          "height": 38.83
         }
-      } catch (t) {
-        n = {
-          error: t
-        };
-      } finally {
-        try {
-          y && !y.done && (a = p["return"]) && a.call(p);
-        } finally {
-          if (n) throw n.error;
+      }, {
+        "id": "1650546232189",
+        "index": 2,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/0a3ea93c62ff4087859ed587020c53b5.json",
+          "name": "car_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/6000e4fbbb95f545afa5456c64d8c7d1.json",
+          "name": "car_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/75e9972c15d2a67deedf60d448fd4e69.png",
+          "name": "car_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
         }
-      }
-
-      if (s) {
-        if (!d.length) return {
-          transitions: [s],
-          entrySet: [],
-          exitSet: [],
-          configuration: t.value ? [this] : [],
-          source: t,
-          actions: l
-        };
-        var E = g(d.map(function (e) {
-          return u.getRelativeStateNodes(e, t.historyValue);
-        })),
-            T = !!s.internal;
-        return {
-          transitions: [s],
-          entrySet: T ? [] : g(E.map(function (t) {
-            return u.nodesFromChild(t);
-          })),
-          exitSet: T ? [] : [this],
-          configuration: E,
-          source: t,
-          actions: l
-        };
-      }
-    }, a.prototype.nodesFromChild = function (t) {
-      if (t.escapes(this)) return [];
-
-      for (var e = [], n = t; n && n !== this;) {
-        e.push(n), n = n.parent;
-      }
-
-      return e.push(this), e;
-    }, a.prototype.escapes = function (t) {
-      if (this === t) return !1;
-
-      for (var e = this.parent; e;) {
-        if (e === t) return !1;
-        e = e.parent;
-      }
-
-      return !0;
-    }, a.prototype.getActions = function (t, e, n, a) {
-      var s,
-          c,
-          u,
-          h,
-          f = J([], a ? this.getStateNodes(a.value) : [this]),
-          l = t.configuration.length ? J(f, t.configuration) : f;
-
-      try {
-        for (var d = r(l), p = d.next(); !p.done; p = d.next()) {
-          X(f, m = p.value) || t.entrySet.push(m);
+      }, {
+        "id": "1650546321127",
+        "index": 3,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/d4c1e1abcf3d8f5415747fd2599b8a8c.json",
+          "name": "Chair_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/1d7254eb7fa3008e8178347bb944cdcb.json",
+          "name": "Chair_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/48e85e8ff384eed72dfe865fc981e18c.png",
+          "name": "Chair_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
         }
-      } catch (t) {
-        s = {
-          error: t
-        };
-      } finally {
-        try {
-          p && !p.done && (c = d["return"]) && c.call(d);
-        } finally {
-          if (s) throw s.error;
+      }, {
+        "id": "1650546335240",
+        "index": 4,
+        "audio_url": "https://teach.cdn.ireadabc.com/6182d46bad09fccb8934217d33557204.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "53",
+        "posX": 452.5,
+        "posY": 129,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/b462d80c21aa75995dd99f0f43ccf1e6.json",
+          "name": "quilt_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/866c9e2987870947fc63bce108ef157a.json",
+          "name": "quilt_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/d952c37f40c3cf07e024edfd4416423e.png",
+          "name": "quilt_tex.png"
+        },
+        "rect": {
+          "x": 71.99,
+          "y": 100.75,
+          "width": 50.83,
+          "height": 36.97
         }
-      }
-
-      try {
-        for (var v = r(f), y = v.next(); !y.done; y = v.next()) {
-          var m;
-          X(l, m = y.value) && !X(t.exitSet, m.parent) || t.exitSet.push(m);
+      }, {
+        "id": "1650546644333",
+        "index": 5,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/6b8a1a7b0fd23686ea60465279cd4da0.json",
+          "name": "robot_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/31a74ed95fe48adab00702675811c3a8.json",
+          "name": "robot_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/e57052537d89356b0a79d8cb77980219.png",
+          "name": "robot_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
         }
-      } catch (t) {
-        u = {
-          error: t
-        };
-      } finally {
-        try {
-          y && !y.done && (h = v["return"]) && h.call(v);
-        } finally {
-          if (u) throw u.error;
+      }, {
+        "id": "1650546658697",
+        "index": 6,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/bf3616060460439eeb3fd5227370e15a.json",
+          "name": "panda_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/2dafeb25c973c910035ff7ed1a6a6334.json",
+          "name": "panda_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/75d90b05345fa470285ac488cb205cfd.png",
+          "name": "panda_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
         }
-      }
-
-      t.source || (t.exitSet = [], t.entrySet.push(this));
-      var S = g(t.entrySet.map(function (r) {
-        var i = [];
-        if ("final" !== r.type) return i;
-        var o = r.parent;
-        if (!o.parent) return i;
-        i.push(Tt(r.id, r.doneData), Tt(o.id, r.doneData ? x(r.doneData, e, n) : void 0));
-        var a = o.parent;
-        return "parallel" === a.type && U(a).every(function (e) {
-          return H(t.configuration, e);
-        }) && i.push(Tt(a.id)), i;
-      }));
-      t.exitSet.sort(function (t, e) {
-        return e.order - t.order;
-      }), t.entrySet.sort(function (t, e) {
-        return t.order - e.order;
-      });
-
-      var w = new Set(t.entrySet),
-          b = new Set(t.exitSet),
-          _ = i([g(Array.from(w).map(function (t) {
-        return o(o([], i(t.activities.map(function (t) {
-          return wt(t);
-        })), !1), i(t.onEntry), !1);
-      })).concat(S.map(vt)), g(Array.from(b).map(function (t) {
-        return o(o([], i(t.onExit), !1), i(t.activities.map(function (t) {
-          return bt(t);
-        })), !1);
-      }))], 2),
-          E = _[0],
-          T = _[1];
-
-      return dt(T.concat(t.actions).concat(E), this.machine.options.actions);
-    }, a.prototype.transition = function (t, e, n) {
-      void 0 === t && (t = this.initialState);
-      var r,
-          a,
-          s = L(e);
-      if (t instanceof kt) r = void 0 === n ? t : this.resolveState(kt.from(t, n));else {
-        var c = A(t) ? this.resolve(l(this.getResolvedPath(t))) : this.resolve(t),
-            u = null != n ? n : this.machine.context;
-        r = this.resolveState(kt.from(c, u));
-      }
-      if (this.strict && !this.events.includes(s.name) && (a = s.name, !/^(done|error)\./.test(a))) throw new Error("Machine '".concat(this.id, "' does not accept event '").concat(s.name, "'"));
-      var h = this._transition(r.value, r, s) || {
-        transitions: [],
-        configuration: [],
-        entrySet: [],
-        exitSet: [],
-        source: r,
-        actions: []
-      },
-          f = J([], this.getStateNodes(r.value)),
-          d = h.configuration.length ? J(f, h.configuration) : f;
-      return h.configuration = o([], i(d), !1), this.resolveTransition(h, r, s);
-    }, a.prototype.resolveRaisedTransition = function (t, e, n) {
-      var r,
-          a = t.actions;
-      return (t = this.transition(t, e))._event = n, t.event = n.data, (r = t.actions).unshift.apply(r, o([], i(a), !1)), t;
-    }, a.prototype.resolveTransition = function (n, o, a, c) {
-      var u,
-          h,
-          f = this;
-      void 0 === a && (a = ht), void 0 === c && (c = this.machine.context);
-      var l = n.configuration,
-          d = !o || n.transitions.length > 0,
-          p = d ? $(this.machine, l) : void 0,
-          v = o ? o.historyValue ? o.historyValue : n.source ? this.machine.historyValue(o.value) : void 0 : void 0,
-          y = o ? o.context : c,
-          g = this.getActions(n, y, a, o),
-          m = o ? _e({}, o.activities) : {};
-
-      try {
-        for (var S = r(g), w = S.next(); !w.done; w = S.next()) {
-          var E = w.value;
-          E.type === K ? m[E.activity.id || E.activity.type] = E : E.type === Q && (m[E.activity.id || E.activity.type] = !1);
+      }, {
+        "id": "1650546672448",
+        "index": 7,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/5feff811b0117dd8e67973072e60d310.json",
+          "name": "queen_1_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/bb5856b92b09c5fe7a1da00bb68134ca.json",
+          "name": "queen_1_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/f4e5a138b086ef3dcfa57432543b66e9.png",
+          "name": "queen_1_tex.png"
+        },
+        "animType": "dragonBone",
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
         }
-      } catch (t) {
-        u = {
-          error: t
-        };
-      } finally {
-        try {
-          w && !w.done && (h = S["return"]) && h.call(S);
-        } finally {
-          if (u) throw u.error;
+      }, {
+        "id": "1650546687069",
+        "index": 8,
+        "audio_url": "https://teach.cdn.ireadabc.com/301858df7b07e661426a006acb26059c.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "42.5",
+        "posX": 512.3883524629834,
+        "posY": 259.83617125849,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/f3a8efcd1850ee8a6cee89a18e86dc4a.json",
+          "name": "milk_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/73b05f19d419bd3ac17c2b92dab88423.json",
+          "name": "milk_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/e38375da46f85a23202d5cbc812d62e4.png",
+          "name": "milk_tex.png"
+        },
+        "rect": {
+          "x": 37.72,
+          "y": 168.1,
+          "width": 21.17,
+          "height": 40.34
         }
+      }, {
+        "id": "1650547060490",
+        "index": 9,
+        "audio_url": "https://teach.cdn.ireadabc.com/05e5b29aeffa4ef94bcc5b23167aec90.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "47.7",
+        "posX": 483.22135734006736,
+        "posY": 245.38039407076505,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/99a6e6d9361eca7e51ed34ca2e0fd017.json",
+          "name": "bird_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/6a379ddbe6df1806368c43c8ee82332d.json",
+          "name": "bird_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/cf04c63104d89511902578944061f980.png",
+          "name": "bird_tex.png"
+        },
+        "rect": {
+          "x": 17.91,
+          "y": 140.83,
+          "width": 18.52,
+          "height": 73.95
+        }
+      }, {
+        "id": "1650547373869",
+        "index": 10,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "labelText": "60",
+        "posX": 420.5,
+        "posY": 295,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/7ebc28f3f339b16ca48d20f2a3eb44c1.json",
+          "name": "alligator_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/b04e8206fd217bd22dcdac1008393317.json",
+          "name": "alligator_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/b3990d94612bd3d6e25cf200f85e4334.png",
+          "name": "alligator_tex.png"
+        },
+        "rect": {
+          "x": 16.06,
+          "y": 229.24,
+          "width": 103.52,
+          "height": 86.89
+        }
+      }, {
+        "id": "1650547482398",
+        "index": 11,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/a19f2ed7c297c70c639e54e969d64593.json",
+          "name": "rabbit_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/4b4f8189cf79fadd7e6533ad84db96be.json",
+          "name": "rabbit_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/8f953c861eac94e4e22a8e4ec3eb56b5.png",
+          "name": "rabbit_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650547496232",
+        "index": 12,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/89e0fc6085c294866142803b4ff267ba.json",
+          "name": "King_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/d6cfd2d9cd2cd9aff09ab7f03e287421.json",
+          "name": "King_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/8c02c3561a2eea0423cb1102200e76f9.png",
+          "name": "King_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650547510648",
+        "index": 13,
+        "audio_url": "https://teach.cdn.ireadabc.com/717ee9713b18d32d38ee089c0abc85ea.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "10.2",
+        "posX": 641.6680134951944,
+        "posY": 288.93672702541255,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/3b7113ebdedcae54be6d0b9633875b88.json",
+          "name": "net_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/fc810762f1f2025585e722e43e94137b.json",
+          "name": "net_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/5c90820da4f559280fee4579e8db2dbc.png",
+          "name": "net_tex.png"
+        },
+        "rect": {
+          "x": 123.03,
+          "y": 183.02,
+          "width": 37.9,
+          "height": 52.68
+        }
+      }, {
+        "id": "1650547555018",
+        "index": 14,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/0a5c8df5a23aca7a7540b87340c7608f.json",
+          "name": "ostrich_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/2478573c91d1a83fa038e7f6a9db8a85.json",
+          "name": "ostrich_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/4619ace67e5770e1fd7fc3ff76e7263e.png",
+          "name": "ostrich_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650547573305",
+        "index": 15,
+        "audio_url": "https://teach.cdn.ireadabc.com/b7bc161c3a3ee143a53058691abf4fa9.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "15.9",
+        "posX": 670.8119839772754,
+        "posY": 137.87940870201697,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/91e8ca03d1df89e4ec2404421d4c692f.json",
+          "name": "durazno_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/32d259b0194370625f8fe94b1ddc0a85.json",
+          "name": "durazno_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/8eef56b20e221a36fce1d672199859ff.png",
+          "name": "durazno_tex.png"
+        },
+        "rect": {
+          "x": 146.92,
+          "y": 83.73,
+          "width": 32.34,
+          "height": 32.34
+        }
+      }]
+    }; // return  {"begin_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","begin_sep_time":1,"guide_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","playing_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","right_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio1":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio2":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","end_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","bgItem":{"url":"http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png","rect":{"x":736.95,"y":0,"width":599.09,"height":775}},"hotZoneItemArr":[{"id":"1659333645573","index":0,"audio_url":"http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3","itemType":"rect","fontScale":1.61953125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.61953125,"dragDot":{"x":1036.5,"y":387.5},"gIdx":"1","labelText":"1","posX":887.5,"posY":165.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json","name":"spineboy-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas","name":"spineboy-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png","name":"spineboy-pro.png"},"animType":"spine","rect":{"x":48.05,"y":65.5,"width":205,"height":200}},{"id":"1659334098930","index":1,"audio_url":"http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3","itemType":"rect","fontScale":1.61953125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.61953125,"dragDot":{"x":1036.5,"y":387.5},"gIdx":"0","labelText":"1","posX":1212.5,"posY":643.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json","name":"alien-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas","name":"alien-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png","name":"alien-pro.png"},"animType":"spine","rect":{"x":375.56,"y":543.5,"width":200,"height":200}}]}
+    // return defaultData;
+  },
+  preloadItem: function preloadItem() {
+    this.addPreloadImage();
+    this.addPreloadAudio();
+    this.addPreloadAnima();
+    this.preload();
+  },
+  addPreloadImage: function addPreloadImage() {
+    this._imageResList.push({
+      url: this.data.bgItem.url
+    });
+
+    for (var _iterator = _createForOfIteratorHelperLoose(this.data.hotZoneItemArr), _step; !(_step = _iterator()).done;) {
+      var q = _step.value;
+
+      if (q.gIdx == '0') {
+        this._imageResList.push({
+          url: q.texPngData.url
+        });
       }
-
-      var T,
-          N,
-          O = i(Pt(this, o, y, a, g, this.machine.config.preserveActionOrder), 2),
-          P = O[0],
-          k = O[1],
-          I = i(b(P, function (e) {
-        return e.type === W || e.type === Y && e.to === t.SpecialTargets.Internal;
-      }), 2),
-          j = I[0],
-          C = I[1],
-          V = P.filter(function (t) {
-        var e;
-        return t.type === K && (null === (e = t.activity) || void 0 === e ? void 0 : e.type) === it;
-      }).reduce(function (t, e) {
-        return t[e.activity.id] = function (t, e, n, r) {
-          var i,
-              o = M(t.src),
-              a = null === (i = null == e ? void 0 : e.options.services) || void 0 === i ? void 0 : i[o.type],
-              s = t.data ? x(t.data, n, r) : void 0,
-              c = a ? Vt(a, t.id, s) : Ct(t.id);
-          return c.meta = t, c;
-        }(e.activity, f.machine, k, a), t;
-      }, o ? _e({}, o.children) : {}),
-          L = p ? n.configuration : o ? o.configuration : [],
-          D = H(L, this),
-          R = new kt({
-        value: p || o.value,
-        context: k,
-        _event: a,
-        _sessionid: o ? o._sessionid : null,
-        historyValue: p ? v ? (T = v, N = p, {
-          current: N,
-          states: _(T, N)
-        }) : void 0 : o ? o.historyValue : void 0,
-        history: !p || n.source ? o : void 0,
-        actions: p ? C : [],
-        activities: p ? m : o ? o.activities : {},
-        events: [],
-        configuration: L,
-        transitions: n.transitions,
-        children: V,
-        done: D,
-        tags: null == o ? void 0 : o.tags,
-        machine: this
-      }),
-          z = y !== k;
-      R.changed = a.name === st || z;
-      var F = R.history;
-      F && delete F.history;
-      var U = !D && (this._transient || l.some(function (t) {
-        return t._transient;
-      }));
-      if (!(d || U && "" !== a.name)) return R;
-      var B = R;
-      if (!D) for (U && (B = this.resolveRaisedTransition(B, {
-        type: tt
-      }, a)); j.length;) {
-        var J = j.shift();
-        B = this.resolveRaisedTransition(B, J._event, a);
-      }
-      var q = B.changed || (F ? !!B.actions.length || z || typeof F.value != typeof B.value || !function t(e, n) {
-        if (e === n) return !0;
-        if (void 0 === e || void 0 === n) return !1;
-        if (A(e) || A(n)) return e === n;
-        var r = s(e),
-            i = s(n);
-        return r.length === i.length && r.every(function (r) {
-          return t(e[r], n[r]);
+
+      if (q.gIdx == '1') {
+        this._imageResList.push({
+          url: q.texPngData.url
         });
-      }(B.value, F.value) : void 0);
-      return B.changed = q, B.history = F, B.tags = G(B.configuration), B;
-    }, a.prototype.getStateNode = function (t) {
-      if (Mt(t)) return this.machine.getStateNodeById(t);
-      if (!this.states) throw new Error("Unable to retrieve child state '".concat(t, "' from '").concat(this.id, "'; no child states exist."));
-      var e = this.states[t];
-      if (!e) throw new Error("Child state '".concat(t, "' does not exist on '").concat(this.id, "'"));
-      return e;
-    }, a.prototype.getStateNodeById = function (t) {
-      var e = Mt(t) ? t.slice("#".length) : t;
-      if (e === this.id) return this;
-      var n = this.machine.idMap[e];
-      if (!n) throw new Error("Child state node '#".concat(e, "' does not exist on machine '").concat(this.id, "'"));
-      return n;
-    }, a.prototype.getStateNodeByPath = function (t) {
-      if ("string" == typeof t && Mt(t)) try {
-        return this.getStateNodeById(t.slice(1));
-      } catch (t) {}
+      }
 
-      for (var e = h(t, this.delimiter).slice(), n = this; e.length;) {
-        var r = e.shift();
-        if (!r.length) break;
-        n = n.getStateNode(r);
+      if (q.gIdx == '2') {
+        this._imageResList.push({
+          url: q.pic_url
+        });
       }
+    }
+  },
+  prepareAudioClip: function prepareAudioClip(url, key) {
+    var _this3 = this;
 
-      return n;
-    }, a.prototype.resolve = function (t) {
-      var e,
-          n = this;
-      if (!t) return this.initialStateValue || Rt;
+    if (url) {
+      cc.assetManager.loadRemote(url, function (err, audioClip) {
+        if (audioClip) {
+          _this3[key] = audioClip;
+        }
+      });
+    }
+  },
+  addPreloadAudio: function addPreloadAudio() {
+    this._audioResList.push({
+      url: this.data.begin_audio
+    }); // this.prepareAudioClip(this.data.begin_audio1, 'begin_audio1')
+    // this._audioResList.push({ url: this.data.begin_audio2 });
+    // this.prepareAudioClip(this.data.begin_audio2, 'begin_audio2')
 
-      switch (this.type) {
-        case "parallel":
-          return d(this.initialStateValue, function (e, r) {
-            return e ? n.getStateNode(r).resolve(t[r] || e) : Rt;
-          });
 
-        case "compound":
-          if (A(t)) {
-            var r = this.getStateNode(t);
-            return "parallel" === r.type || "compound" === r.type ? ((e = {})[t] = r.initialStateValue, e) : t;
-          }
+    this._audioResList.push({
+      url: this.data.guide_audio
+    });
 
-          return s(t).length ? d(t, function (t, e) {
-            return t ? n.getStateNode(e).resolve(t) : Rt;
-          }) : this.initialStateValue || {};
+    this._audioResList.push({
+      url: this.data.playing_audio
+    });
 
-        default:
-          return t || Rt;
-      }
-    }, a.prototype.getResolvedPath = function (t) {
-      if (Mt(t)) {
-        var e = this.machine.idMap[t.slice("#".length)];
-        if (!e) throw new Error("Unable to find state node '".concat(t, "'"));
-        return e.path;
-      }
+    if (this.data.wrong_audio) {
+      this._audioResList.push({
+        url: this.data.wrong_audio
+      });
 
-      return h(t, this.delimiter);
-    }, Object.defineProperty(a.prototype, "initialStateValue", {
-      get: function get() {
-        var t, e;
-        if (this.__cache.initialStateValue) return this.__cache.initialStateValue;
-        if ("parallel" === this.type) e = p(this.states, function (t) {
-          return t.initialStateValue || Rt;
-        }, function (t) {
-          return !("history" === t.type);
-        });else if (void 0 !== this.initial) {
-          if (!this.states[this.initial]) throw new Error("Initial state '".concat(this.initial, "' not found on '").concat(this.key, "'"));
-          e = F(this.states[this.initial]) ? this.initial : ((t = {})[this.initial] = this.states[this.initial].initialStateValue, t);
-        } else e = {};
-        return this.__cache.initialStateValue = e, this.__cache.initialStateValue;
-      },
-      enumerable: !1,
-      configurable: !0
-    }), a.prototype.getInitialState = function (t, e) {
-      var n = this.getStateNodes(t);
-      return this.resolveTransition({
-        configuration: n,
-        entrySet: n,
-        exitSet: [],
-        transitions: [],
-        source: void 0,
-        actions: []
-      }, void 0, void 0, e);
-    }, Object.defineProperty(a.prototype, "initialState", {
-      get: function get() {
-        this._init();
+      this.wrongAudio = this.data.wrong_audio;
+    }
 
-        var t = this.initialStateValue;
-        if (!t) throw new Error("Cannot retrieve initial state from simple state '".concat(this.id, "'."));
-        return this.getInitialState(t);
-      },
-      enumerable: !1,
-      configurable: !0
-    }), Object.defineProperty(a.prototype, "target", {
-      get: function get() {
-        var t;
+    if (this.data.right_audio) {
+      this._audioResList.push({
+        url: this.data.right_audio
+      });
 
-        if ("history" === this.type) {
-          var e = this.config;
-          t = A(e.target) && Mt(e.target) ? l(this.machine.getStateNodeById(e.target).path.slice(this.path.length - 1)) : e.target;
-        }
+      this.rightAudio = this.data.right_audio;
+    }
 
-        return t;
-      },
-      enumerable: !1,
-      configurable: !0
-    }), a.prototype.getRelativeStateNodes = function (t, e, n) {
-      return void 0 === n && (n = !0), n ? "history" === t.type ? t.resolveHistory(e) : t.initialStateNodes : [t];
-    }, Object.defineProperty(a.prototype, "initialStateNodes", {
-      get: function get() {
-        var t = this;
-        return F(this) ? [this] : "compound" !== this.type || this.initial ? g(y(this.initialStateValue).map(function (e) {
-          return t.getFromRelativePath(e);
-        })) : [this];
-      },
-      enumerable: !1,
-      configurable: !0
-    }), a.prototype.getFromRelativePath = function (t) {
-      if (!t.length) return [this];
-      var e = i(t),
-          n = e[0],
-          r = e.slice(1);
-      if (!this.states) throw new Error("Cannot retrieve subPath '".concat(n, "' from node with no states"));
-      var o = this.getStateNode(n);
-      if ("history" === o.type) return o.resolveHistory();
-      if (!this.states[n]) throw new Error("Child state '".concat(n, "' does not exist on '").concat(this.id, "'"));
-      return this.states[n].getFromRelativePath(r);
-    }, a.prototype.historyValue = function (t) {
-      if (s(this.states).length) return {
-        current: t || this.initialStateValue,
-        states: p(this.states, function (e, n) {
-          if (!t) return e.historyValue();
-          var r = A(t) ? void 0 : t[n];
-          return e.historyValue(r || e.initialStateValue);
-        }, function (t) {
-          return !t.history;
-        })
-      };
-    }, a.prototype.resolveHistory = function (t) {
-      var e = this;
-      if ("history" !== this.type) return [this];
-      var n = this.parent;
+    this._audioResList.push({
+      url: this.data.wrong_audio1
+    });
 
-      if (!t) {
-        var i = this.target;
-        return i ? g(y(i).map(function (t) {
-          return n.getFromRelativePath(t);
-        })) : n.initialStateNodes;
+    this._audioResList.push({
+      url: this.data.wrong_audio2
+    });
+
+    this._audioResList.push({
+      url: this.data.end_audio
+    });
+
+    for (var _iterator2 = _createForOfIteratorHelperLoose(this.data.hotZoneItemArr), _step2; !(_step2 = _iterator2()).done;) {
+      var q = _step2.value;
+
+      if (q.gIdx == '0') {
+        this._audioResList.push({
+          url: q.audio_url
+        });
       }
+    }
+  },
+  debugPointer: function debugPointer() {
+    var boxDebugger = cc.find('Canvas/box-debugger');
 
-      var o,
-          a,
-          s = (o = n.path, a = "states", function (t) {
-        var e,
-            n,
-            i = t;
+    if (!this.isDebug) {
+      boxDebugger.active = false;
+      return;
+    }
 
-        try {
-          for (var s = r(o), c = s.next(); !c.done; c = s.next()) {
-            var u = c.value;
-            i = i[a][u];
-          }
-        } catch (t) {
-          e = {
-            error: t
-          };
-        } finally {
-          try {
-            c && !c.done && (n = s["return"]) && n.call(s);
-          } finally {
-            if (e) throw e.error;
+    if (!this.POINTER_NODE) {
+      this.POINTER_NODE = new cc.Node();
+      this.POINTER_NODE.parent = boxDebugger;
+      this.POINTER_NODE.name = 'POINTER_NODE';
+      this.POINTER_NODE.addComponent(cc.Graphics);
+    }
+
+    var grap = this.POINTER_NODE.getComponent(cc.Graphics);
+    grap.clear();
+    var ground = cc.find('Canvas/frame-border/ground');
+    var baseW = ground.width,
+        baseH = ground.height;
+    var _this$_lastFingerPosi = this._lastFingerPosition.pos,
+        px = _this$_lastFingerPosi.x,
+        py = _this$_lastFingerPosi.y;
+    var x = baseW * px - baseW / 2;
+    var y = baseH - baseH * py - baseH / 2 - 16;
+    var pn = new cc.Node();
+    grap.fillColor = cc.color(255, 0, 0);
+    grap.circle(x, y, 32);
+    grap.fill();
+    grap.stroke();
+  },
+  debugGraphics: function debugGraphics() {
+    var boxDebugger = cc.find('Canvas/box-debugger');
+
+    if (!this.isDebug) {
+      boxDebugger.active = false;
+      return;
+    }
+
+    boxDebugger.active = true;
+    console.log('show debug graphics');
+    var ground = cc.find('Canvas/frame-border/ground');
+    var canvas = cc.find('Canvas');
+    var baseW = ground.width,
+        baseH = ground.height;
+    var _this$data$bgItem$rec = this.data.bgItem.rect,
+        bgW = _this$data$bgItem$rec.width,
+        bgH = _this$data$bgItem$rec.height;
+    var scaleX = bgW / baseW;
+    var scaleY = bgH / baseH;
+    var added = false;
+    this.data.hotZoneItemArr.forEach(function (area) {
+      if (added) {// return
+      }
+
+      if (area.gIdx != '0') {
+        return;
+      }
+
+      added = true;
+      var dn = new cc.Node();
+      var lblNode = new cc.Node();
+      lblNode.parent = dn;
+      var lbl = lblNode.addComponent(cc.Label);
+      lblNode.color = cc.color(0, 0, 0);
+      lbl.string = area.skeJsonData.name.substring(0, area.skeJsonData.name.length - 9);
+      dn.name = lbl.string;
+      dn.parent = boxDebugger;
+      dn.width = baseW;
+      dn.height = baseH;
+      var grap = dn.addComponent(cc.Graphics);
+      var r = (0, _util.RandomInt)(1, 255);
+      var g = (0, _util.RandomInt)(1, 255);
+      var b = (0, _util.RandomInt)(1, 255);
+      grap.fillColor = cc.color(r, g, b, 127);
+      var _area$rect = area.rect,
+          rx = _area$rect.x,
+          ry = _area$rect.y,
+          rw = _area$rect.width,
+          rh = _area$rect.height;
+      var w = rw / bgW * baseW;
+      var h = rh / bgH * baseH;
+      var x = rx / bgW * baseW - baseW / 2;
+      var y = baseH - ry / bgH * baseH - h - baseH / 2; // w *= scaleX
+      // h *= scaleY
+      // x *= scaleX
+      // y *= scaleY
+      // const p = boxDebugger.convertToNodeSpaceAR(cc.v2(x,y));
+      // x = p.x;
+      // y = p.y;
+
+      lblNode.x = x;
+      lblNode.y = y + h; // dn.scaleX = scaleX;
+      // dn.scaleY = scaleY;
+      // dn.scale = area.mapScale; // minScale; // this._mapScaleMax * area.mapScale; // ;
+
+      console.log('[debug]', area.skeJsonData.name, x, y, w, h);
+      grap.fillRect(x, y, w, h);
+      grap.stroke();
+    });
+  },
+  addPreloadAnima: function addPreloadAnima() {},
+  preload: function preload() {
+    var _this4 = this;
+
+    var preloadArr = this._imageResList.concat(this._audioResList).concat(this._animaResList); // console.log(preloadArr);
+
+
+    cc.assetManager.loadAny(preloadArr, null, function (f, t, item) {// console.log(f, t, item)
+    }, function (err, data) {
+      // console.log(err, data);
+      var ground = cc.find("Canvas/frame-border/ground");
+      var groundBg = cc.find("Canvas/frame-border/ground/bg");
+      groundBg.active = false;
+      var baseRect = _this4.data.bgItem.rect;
+      (0, _util.getSpriteFrimeByUrl)(_this4.data.bgItem.url, function (sf) {
+        var gs = groundBg.getComponent(cc.Sprite);
+        gs.spriteFrame = sf;
+        groundBg.active = true;
+        var dbCount = 0;
+        var finishDbCount = 0;
+
+        for (var _iterator3 = _createForOfIteratorHelperLoose(_this4.data.hotZoneItemArr), _step3; !(_step3 = _iterator3()).done;) {
+          var block = _step3.value;
+
+          if (block.gIdx == '0' || block.gIdx == '1') {
+            dbCount++;
           }
         }
 
-        return i;
-      })(t).current;
-      return A(s) ? [n.getStateNode(s)] : g(y(s).map(function (t) {
-        return "deep" === e.history ? n.getFromRelativePath(t) : [n.states[t[0]]];
-      }));
-    }, Object.defineProperty(a.prototype, "stateIds", {
-      get: function get() {
-        var t = this,
-            e = g(s(this.states).map(function (e) {
-          return t.states[e].stateIds;
-        }));
-        return [this.id].concat(e);
-      },
-      enumerable: !1,
-      configurable: !0
-    }), Object.defineProperty(a.prototype, "events", {
-      get: function get() {
-        var t, e, n, i;
-        if (this.__cache.events) return this.__cache.events;
-        var o = this.states,
-            a = new Set(this.ownEvents);
-        if (o) try {
-          for (var c = r(s(o)), u = c.next(); !u.done; u = c.next()) {
-            var h = o[u.value];
-            if (h.states) try {
-              for (var f = (n = void 0, r(h.events)), l = f.next(); !l.done; l = f.next()) {
-                var d = l.value;
-                a.add("".concat(d));
-              }
-            } catch (t) {
-              n = {
-                error: t
-              };
-            } finally {
-              try {
-                l && !l.done && (i = f["return"]) && i.call(f);
-              } finally {
-                if (n) throw n.error;
-              }
-            }
-          }
-        } catch (e) {
-          t = {
-            error: e
-          };
-        } finally {
-          try {
-            u && !u.done && (e = c["return"]) && e.call(c);
-          } finally {
-            if (t) throw t.error;
+        for (var _iterator4 = _createForOfIteratorHelperLoose(_this4.data.hotZoneItemArr), _step4; !(_step4 = _iterator4()).done;) {
+          var _block = _step4.value;
+
+          if (_block.gIdx == '2') {
+            (function () {
+              var s1 = (ground.width / _block.imgSizeW + ground.height / _block.imgSizeH) / 2;
+              var node = new cc.Node();
+              node.parent = ground;
+              var spr = node.addComponent(cc.Sprite);
+              (0, _util.getSpriteFrimeByUrl)(_block.pic_url, function (sf) {
+                spr.spriteFrame = sf;
+                node.scale = s1;
+              });
+            })();
           }
-        }
-        return this.__cache.events = Array.from(a);
-      },
-      enumerable: !1,
-      configurable: !0
-    }), Object.defineProperty(a.prototype, "ownEvents", {
-      get: function get() {
-        var t = new Set(this.transitions.filter(function (t) {
-          return !(!t.target && !t.actions.length && t.internal);
-        }).map(function (t) {
-          return t.eventType;
-        }));
-        return Array.from(t);
-      },
-      enumerable: !1,
-      configurable: !0
-    }), a.prototype.resolveTarget = function (t) {
-      var e = this;
-      if (void 0 !== t) return t.map(function (t) {
-        if (!A(t)) return t;
-        var n = t[0] === e.delimiter;
-        if (n && !e.parent) return e.getStateNodeByPath(t.slice(1));
-        var r = n ? e.key + t : t;
-        if (!e.parent) return e.getStateNodeByPath(r);
 
-        try {
-          return e.parent.getStateNodeByPath(r);
-        } catch (t) {
-          throw new Error("Invalid transition definition for state node '".concat(e.id, "':\n").concat(t.message));
-        }
-      });
-    }, a.prototype.formatTransition = function (t) {
-      var n = this,
-          r = function (t) {
-        if (void 0 !== t && "" !== t) return S(t);
-      }(t.target),
-          i = "internal" in t ? t.internal : !r || r.some(function (t) {
-        return A(t) && t[0] === n.delimiter;
-      }),
-          o = this.machine.options.guards,
-          a = this.resolveTarget(r),
-          s = _e(_e({}, t), {
-        actions: dt(S(t.actions)),
-        cond: O(t.cond, o),
-        target: a,
-        source: this,
-        internal: i,
-        eventType: t.event,
-        toJSON: function toJSON() {
-          return _e(_e({}, s), {
-            target: s.target ? s.target.map(function (t) {
-              return "#".concat(t.id);
-            }) : void 0,
-            source: "#".concat(n.id)
-          });
-        }
-      });
+          if (_block.gIdx == '0' || _block.gIdx == '1') {
+            (function () {
+              var n = new cc.Node(); // n.scale = 0.25;
 
-      return s;
-    }, a.prototype.formatTransitions = function () {
-      var t,
-          e,
-          a,
-          c = this;
-      if (this.config.on) {
-        if (Array.isArray(this.config.on)) a = this.config.on;else {
-          var u = this.config.on,
-              h = u["*"],
-              f = void 0 === h ? [] : h,
-              l = n(u, ["*"]);
-          a = g(s(l).map(function (t) {
-            return D(t, l[t]);
-          }).concat(D("*", f)));
-        }
-      } else a = [];
-      var d = this.config.always ? D("", this.config.always) : [],
-          p = this.config.onDone ? D(String(Tt(this.id)), this.config.onDone) : [],
-          v = g(this.invoke.map(function (t) {
-        var e = [];
-        return t.onDone && e.push.apply(e, o([], i(D(String(Nt(t.id)), t.onDone)), !1)), t.onError && e.push.apply(e, o([], i(D(String(At(t.id)), t.onError)), !1)), e;
-      })),
-          y = this.after,
-          m = g(o(o(o(o([], i(p), !1), i(v), !1), i(a), !1), i(d), !1).map(function (t) {
-        return S(t).map(function (t) {
-          return c.formatTransition(t);
-        });
-      }));
+              n.scale = ground.width / groundBg.width;
+              n.parent = ground;
+              n.active = false;
 
-      try {
-        for (var x = r(y), w = x.next(); !w.done; w = x.next()) {
-          var b = w.value;
-          m.push(b);
-        }
-      } catch (e) {
-        t = {
-          error: e
-        };
-      } finally {
-        try {
-          w && !w.done && (e = x["return"]) && e.call(x);
-        } finally {
-          if (t) throw t.error;
-        }
-      }
+              if (_block.animType == 'spine') {
+                var skeleton = n.addComponent(sp.Skeleton);
+                n.isSpine = true;
+                (0, _util.loadSpine)(skeleton, _block.texPngData.name, {
+                  tex: _block.texPngData.url,
+                  atlas: _block.texJsonData.url,
+                  ske: _block.skeJsonData.url
+                }).then(function (_ref) {
+                  var width = _ref.width,
+                      height = _ref.height;
+                  n.width = width;
+                  n.height = height;
+                  n.active = true; // db.playAnimation('null', 0);
+                  // skeleton.setToSetupPose();
+                  // skeleton.setAnimation(0, 'enlarge', true);				
 
-      return m;
-    }, a;
-  }();
+                  _this4._allAnimationNodes.push(n);
 
-  var Ft = {
-    deferEvents: !1
-  },
-      Ut = function () {
-    function t(t) {
-      this.processingEvent = !1, this.queue = [], this.initialized = !1, this.options = _e(_e({}, Ft), t);
-    }
+                  finishDbCount++;
+                  console.log(finishDbCount, dbCount);
 
-    return t.prototype.initialize = function (t) {
-      if (this.initialized = !0, t) {
-        if (!this.options.deferEvents) return void this.schedule(t);
-        this.process(t);
-      }
+                  if (finishDbCount == dbCount) {
+                    _this4.loadEnd();
+                  }
+                })["catch"](function () {
+                  finishDbCount++;
+                  console.log(finishDbCount, dbCount);
 
-      this.flushEvents();
-    }, t.prototype.schedule = function (t) {
-      if (this.initialized && !this.processingEvent) {
-        if (0 !== this.queue.length) throw new Error("Event queue should be empty when it is not processing events");
-        this.process(t), this.flushEvents();
-      } else this.queue.push(t);
-    }, t.prototype.clear = function () {
-      this.queue = [];
-    }, t.prototype.flushEvents = function () {
-      for (var t = this.queue.shift(); t;) {
-        this.process(t), t = this.queue.shift();
-      }
-    }, t.prototype.process = function (t) {
-      this.processingEvent = !0;
+                  if (finishDbCount == dbCount) {
+                    _this4.loadEnd();
+                  }
+                });
+              } else {
+                var db = n.addComponent(dragonBones.ArmatureDisplay);
+                (0, _util.loadDragonBones)(db, {
+                  tex: _block.texPngData.url,
+                  atlas: _block.texJsonData.url,
+                  ske: _block.skeJsonData.url
+                }).then(function (_ref2) {
+                  var width = _ref2.width,
+                      height = _ref2.height;
+                  n.width = width;
+                  n.height = height;
+                  n.active = true;
+                  db.playAnimation('null', 0);
 
-      try {
-        t();
-      } catch (t) {
-        throw this.clear(), t;
-      } finally {
-        this.processingEvent = !1;
-      }
-    }, t;
-  }(),
-      Bt = new Map(),
-      Jt = 0,
-      qt = function qt() {
-    return "x:".concat(Jt++);
-  },
-      $t = function $t(t, e) {
-    return Bt.set(t, e), t;
-  },
-      Xt = function Xt(t) {
-    return Bt.get(t);
-  },
-      Ht = function Ht(t) {
-    Bt["delete"](t);
-  };
+                  _this4._allAnimationNodes.push(n);
 
-  function Gt() {
-    return "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : "undefined" != typeof window ? window : "undefined" != typeof global ? global : void 0;
-  }
+                  finishDbCount++;
+                  console.log(finishDbCount, dbCount);
 
-  function Kt(t) {
-    if (Gt()) {
-      var e = function () {
-        var t = Gt();
-        if (t && "__xstate__" in t) return t.__xstate__;
-      }();
-
-      e && e.register(t);
-    }
-  }
-
-  function Qt(t, n) {
-    void 0 === n && (n = {});
-    var r,
-        i = t.initialState,
-        o = new Set(),
-        a = [],
-        s = !1,
-        c = (r = {
-      id: n.id,
-      send: function send(e) {
-        a.push(e), function () {
-          if (!s) {
-            for (s = !0; a.length > 0;) {
-              var e = a.shift();
-              i = t.transition(i, e, u), o.forEach(function (t) {
-                return t.next(i);
-              });
-            }
-
-            s = !1;
-          }
-        }();
-      },
-      getSnapshot: function getSnapshot() {
-        return i;
-      },
-      subscribe: function subscribe(t, e, n) {
-        var r = z(t, e, n);
-        return o.add(r), r.next(i), {
-          unsubscribe: function unsubscribe() {
-            o["delete"](r);
-          }
-        };
-      }
-    }, _e({
-      subscribe: function subscribe() {
-        return {
-          unsubscribe: function unsubscribe() {}
-        };
-      },
-      id: "anonymous",
-      getSnapshot: function getSnapshot() {}
-    }, r)),
-        u = {
-      parent: n.parent,
-      self: c,
-      id: n.id || "anonymous",
-      observers: o
-    };
-    return i = t.start ? t.start(u) : i, c;
-  }
+                  if (finishDbCount == dbCount) {
+                    _this4.loadEnd();
+                  }
+                })["catch"](function () {
+                  finishDbCount++;
+                  console.log(finishDbCount, dbCount);
 
-  var Wt,
-      Yt = {
-    sync: !1,
-    autoForward: !1
-  };
-  (Wt = t.InterpreterStatus || (t.InterpreterStatus = {}))[Wt.NotStarted = 0] = "NotStarted", Wt[Wt.Running = 1] = "Running", Wt[Wt.Stopped = 2] = "Stopped";
+                  if (finishDbCount == dbCount) {
+                    _this4.loadEnd();
+                  }
+                });
+              }
 
-  var Zt = function () {
-    function n(r, i) {
-      var o = this;
-      void 0 === i && (i = n.defaultOptions), this.machine = r, this.scheduler = new Ut(), this.delayedEventsMap = {}, this.listeners = new Set(), this.contextListeners = new Set(), this.stopListeners = new Set(), this.doneListeners = new Set(), this.eventListeners = new Set(), this.sendListeners = new Set(), this.initialized = !1, this.status = t.InterpreterStatus.NotStarted, this.children = new Map(), this.forwardTo = new Set(), this.init = this.start, this.send = function (e, n) {
-        if (T(e)) return o.batch(e), o.state;
-        var r = L(V(e, n));
-        if (o.status === t.InterpreterStatus.Stopped) return o.state;
-        if (o.status !== t.InterpreterStatus.Running && !o.options.deferEvents) throw new Error('Event "'.concat(r.name, '" was sent to uninitialized service "').concat(o.machine.id, '". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.\nEvent: ').concat(JSON.stringify(r.data)));
-        return o.scheduler.schedule(function () {
-          o.forward(r);
-          var t = o.nextState(r);
-          o.update(t, r);
-        }), o._state;
-      }, this.sendTo = function (n, r) {
-        var i,
-            a = o.parent && (r === t.SpecialTargets.Parent || o.parent.id === r),
-            s = a ? o.parent : A(r) ? o.children.get(r) || Xt(r) : (i = r) && "function" == typeof i.send ? r : void 0;
-        if (s) "machine" in s ? s.send(_e(_e({}, n), {
-          name: n.name === at ? "".concat(At(o.id)) : n.name,
-          origin: o.sessionId
-        })) : s.send(n.data);else if (!a) throw new Error("Unable to send event to child '".concat(r, "' from service '").concat(o.id, "'."));
-      };
+              if (_block.gIdx == '0') {
+                var rectInfo = {
+                  node: n,
+                  audio_url: _block.audio_url,
+                  rect: {
+                    x: _block.rect.x / baseRect.width,
+                    y: _block.rect.y / baseRect.height,
+                    width: _block.rect.width / baseRect.width,
+                    height: _block.rect.height / baseRect.height
+                  }
+                };
 
-      var a = _e(_e({}, n.defaultOptions), i),
-          s = a.clock,
-          c = a.logger,
-          u = a.parent,
-          h = a.id,
-          f = void 0 !== h ? h : r.id;
+                _this4._figurePointRectArray.push(rectInfo); // this.addRectNodeListener(block);
 
-      this.id = f, this.logger = c, this.clock = s, this.parent = u, this.options = a, this.scheduler = new Ut({
-        deferEvents: this.options.deferEvents
-      }), this.sessionId = qt();
-    }
 
-    return Object.defineProperty(n.prototype, "initialState", {
-      get: function get() {
-        var t = this;
-        return this._initialState ? this._initialState : jt(this, function () {
-          return t._initialState = t.machine.initialState, t._initialState;
-        });
-      },
-      enumerable: !1,
-      configurable: !0
-    }), Object.defineProperty(n.prototype, "state", {
-      get: function get() {
-        return this._state;
-      },
-      enumerable: !1,
-      configurable: !0
-    }), n.prototype.execute = function (t, e) {
-      var n, i;
+                if (_block.labelText) {
+                  var k = +_block.labelText * 1000;
 
-      try {
-        for (var o = r(t.actions), a = o.next(); !a.done; a = o.next()) {
-          var s = a.value;
-          this.exec(s, t, e);
-        }
-      } catch (t) {
-        n = {
-          error: t
-        };
-      } finally {
-        try {
-          a && !a.done && (i = o["return"]) && i.call(o);
-        } finally {
-          if (n) throw n.error;
-        }
-      }
-    }, n.prototype.update = function (t, e) {
-      var n,
-          i,
-          o,
-          a,
-          s,
-          c,
-          u,
-          h,
-          f = this;
-      if (t._sessionid = this.sessionId, this._state = t, this.options.execute && this.execute(this.state), this.children.forEach(function (t) {
-        f.state.children[t.id] = t;
-      }), this.devTools && this.devTools.send(e.data, t), t.event) try {
-        for (var l = r(this.eventListeners), d = l.next(); !d.done; d = l.next()) {
-          (0, d.value)(t.event);
-        }
-      } catch (t) {
-        n = {
-          error: t
-        };
-      } finally {
-        try {
-          d && !d.done && (i = l["return"]) && i.call(l);
-        } finally {
-          if (n) throw n.error;
+                  if (!isNaN(k)) {
+                    _this4._hintsNodeList.push({
+                      node: n,
+                      after: k
+                    });
+                  }
+                }
+              }
+            })();
+          }
         }
-      }
+      }); // console.log(this.data);
 
-      try {
-        for (var p = r(this.listeners), v = p.next(); !v.done; v = p.next()) {
-          (0, v.value)(t, t.event);
-        }
-      } catch (t) {
-        o = {
-          error: t
-        };
-      } finally {
-        try {
-          v && !v.done && (a = p["return"]) && a.call(p);
-        } finally {
-          if (o) throw o.error;
-        }
-      }
+      console.log('resource perload finish'); // <<<<<<< HEAD
+      // =======
+      // 			if (window && window["air"]) {
+      // 				// cc.find('Canvas').opacity = 0;
+      // 				window.air.onCourseInScreen = (next) => {
+      // 					// cc.find('Canvas').opacity = 255;
+      // 					this.loadEnd();
+      // 					next();
+      // 				}
+      // 				window.air.hideAirClassLoading();
+      // 			} else {
+      // 				this.loadEnd();
+      // 			}
+      // >>>>>>> 2d461e1910571bcfc6ad4dc93c2cedafc20923ea
 
-      try {
-        for (var y = r(this.contextListeners), g = y.next(); !g.done; g = y.next()) {
-          (0, g.value)(this.state.context, this.state.history ? this.state.history.context : void 0);
-        }
-      } catch (t) {
-        s = {
-          error: t
-        };
-      } finally {
-        try {
-          g && !g.done && (c = y["return"]) && c.call(y);
-        } finally {
-          if (s) throw s.error;
-        }
-      }
+      cc.debug.setDisplayStats(false);
+    });
+  },
+  loadEnd: function loadEnd() {
+    if (window && window["air"] && window["air"].hideAirClassLoading) {
+      window["air"].hideAirClassLoading();
+    }
 
-      var m = H(t.configuration || [], this.machine);
+    this.initData(); // this.initAudio();
+    // this.initView();
 
-      if (this.state.configuration && m) {
-        var S = t.configuration.find(function (t) {
-          return "final" === t.type && t.parent === f.machine;
-        }),
-            w = S && S.doneData ? x(S.doneData, t.context, e) : void 0;
+    this.initBg(); // this.initListener();
 
-        try {
-          for (var b = r(this.doneListeners), _ = b.next(); !_.done; _ = b.next()) {
-            (0, _.value)(Nt(this.id, w));
-          }
-        } catch (t) {
-          u = {
-            error: t
-          };
-        } finally {
-          try {
-            _ && !_.done && (h = b["return"]) && h.call(b);
-          } finally {
-            if (u) throw u.error;
-          }
-        }
-
-        this.stop();
-      }
-    }, n.prototype.onTransition = function (e) {
-      return this.listeners.add(e), this.status === t.InterpreterStatus.Running && e(this.state, this.state.event), this;
-    }, n.prototype.subscribe = function (e, n, r) {
-      var i,
-          o = this;
-      if (!e) return {
-        unsubscribe: function unsubscribe() {}
-      };
-      var a = r;
-      return "function" == typeof e ? i = e : (i = e.next.bind(e), a = e.complete.bind(e)), this.listeners.add(i), this.status === t.InterpreterStatus.Running && i(this.state), a && this.onDone(a), {
-        unsubscribe: function unsubscribe() {
-          i && o.listeners["delete"](i), a && o.doneListeners["delete"](a);
-        }
-      };
-    }, n.prototype.onEvent = function (t) {
-      return this.eventListeners.add(t), this;
-    }, n.prototype.onSend = function (t) {
-      return this.sendListeners.add(t), this;
-    }, n.prototype.onChange = function (t) {
-      return this.contextListeners.add(t), this;
-    }, n.prototype.onStop = function (t) {
-      return this.stopListeners.add(t), this;
-    }, n.prototype.onDone = function (t) {
-      return this.doneListeners.add(t), this;
-    }, n.prototype.off = function (t) {
-      return this.listeners["delete"](t), this.eventListeners["delete"](t), this.sendListeners["delete"](t), this.stopListeners["delete"](t), this.doneListeners["delete"](t), this.contextListeners["delete"](t), this;
-    }, n.prototype.start = function (e) {
-      var n = this;
-      if (this.status === t.InterpreterStatus.Running) return this;
-      $t(this.sessionId, this), this.initialized = !0, this.status = t.InterpreterStatus.Running;
-      var r = void 0 === e ? this.initialState : jt(this, function () {
-        return !A(t = e) && "value" in t && "history" in t ? n.machine.resolveState(e) : n.machine.resolveState(kt.from(e, n.machine.context));
-        var t;
-      });
-      return this.options.devTools && this.attachDev(), this.scheduler.initialize(function () {
-        n.update(r, ht);
-      }), this;
-    }, n.prototype.stop = function () {
-      var e,
-          n,
-          i,
-          o,
-          a,
-          c,
-          u,
-          h,
-          f,
-          l,
-          d = this;
+    this.debugGraphics();
+    this.createStateMachine();
+  },
+  _cantouch: null,
+  initData: function initData() {
+    // 所有全局变量 默认都是null 
+    this._cantouch = true;
+  },
+  // audioBtn: null,
+  // initAudio() {
+  // 	const audioNode = cc.find('Canvas/res/audio');
+  // 	const getAudioByResName = (resName) => {
+  // 		return audioNode.getChildByName(resName).getComponent(cc.AudioSource);
+  // 	}
+  // 	this.audioBtn = getAudioByResName('btn');
+  // },
+  // initView() {
+  // 	// this.initBg();
+  // 	// this.initPic();
+  // 	// this.initBtn();
+  // 	this.initIcon();
+  // },
+  addRectNodeListener: function addRectNodeListener(data) {
+    var _this5 = this;
 
-      try {
-        for (var p = r(this.listeners), v = p.next(); !v.done; v = p.next()) {
-          var y = v.value;
-          this.listeners["delete"](y);
-        }
-      } catch (t) {
-        e = {
-          error: t
-        };
-      } finally {
-        try {
-          v && !v.done && (n = p["return"]) && n.call(p);
-        } finally {
-          if (e) throw e.error;
-        }
-      }
+    var bg = cc.find("Canvas/frame-border/ground/bg").parent;
+    var rate = bg.scale * bg.width / this.data.bgItem.rect.width;
+    var rectNode = new cc.Node();
+    rectNode.name = 'rect' + data.index;
+    bg.addChild(rectNode, 20);
+    var ctx = rectNode.addComponent(cc.Graphics); // 红色矩形
 
-      try {
-        for (var g = r(this.stopListeners), m = g.next(); !m.done; m = g.next()) {
-          (y = m.value)(), this.stopListeners["delete"](y);
-        }
-      } catch (t) {
-        i = {
-          error: t
-        };
-      } finally {
-        try {
-          m && !m.done && (o = g["return"]) && o.call(g);
-        } finally {
-          if (i) throw i.error;
-        }
-      }
+    ctx.lineWidth = 4;
+    ctx.strokeColor = cc.Color.BLACK;
+    ctx.fillColor = cc.Color.WHITE.setA(100);
+    var scale = rate / bg.scaleY;
+    console.log('scale~ : ', scale);
+    rectNode.width = data.rect.width * scale;
+    rectNode.height = data.rect.height * scale;
+    rectNode.x = -bg.width / 2 + data.rect.x * scale + bg.x;
+    rectNode.y = bg.height / 2 - data.rect.height * scale - data.rect.y * scale + bg.y;
+    rectNode.anchorX = rectNode.anchorY = 0;
+    console.log('data: ', data);
+    console.log('rectNode: ', rectNode); // if (pageData.bgItem.isShowDebugLine) {
 
-      try {
-        for (var S = r(this.contextListeners), x = S.next(); !x.done; x = S.next()) {
-          y = x.value;
-          this.contextListeners["delete"](y);
-        }
-      } catch (t) {
-        a = {
-          error: t
-        };
-      } finally {
-        try {
-          x && !x.done && (c = S["return"]) && c.call(S);
-        } finally {
-          if (a) throw a.error;
-        }
-      }
+    ctx.rect(0, 0, rectNode.width, rectNode.height); // ctx.fillRect(0, 0, 200, 200);
+    // }
 
-      try {
-        for (var w = r(this.doneListeners), b = w.next(); !b.done; b = w.next()) {
-          y = b.value;
-          this.doneListeners["delete"](y);
-        }
-      } catch (t) {
-        u = {
-          error: t
-        };
-      } finally {
-        try {
-          b && !b.done && (h = w["return"]) && h.call(w);
-        } finally {
-          if (u) throw u.error;
-        }
-      }
+    ctx.stroke();
+    ctx.fill();
+    rectNode.addComponent(cc.Button);
+    rectNode.on("click", function () {
+      console.log(" in rectNode click");
 
-      if (!this.initialized) return this;
-      this.state.configuration.forEach(function (t) {
-        var e, n;
+      var _x = rectNode.x / bg.width;
 
-        try {
-          for (var i = r(t.definition.exit), o = i.next(); !o.done; o = i.next()) {
-            var a = o.value;
-            d.exec(a, d.state);
-          }
-        } catch (t) {
-          e = {
-            error: t
-          };
-        } finally {
-          try {
-            o && !o.done && (n = i["return"]) && n.call(i);
-          } finally {
-            if (e) throw e.error;
-          }
-        }
-      }), this.children.forEach(function (t) {
-        N(t.stop) && t.stop();
-      });
+      var _y = rectNode.y / bg.height;
 
-      try {
-        for (var _ = r(s(this.delayedEventsMap)), E = _.next(); !E.done; E = _.next()) {
-          var T = E.value;
-          this.clock.clearTimeout(this.delayedEventsMap[T]);
-        }
-      } catch (t) {
-        f = {
-          error: t
-        };
-      } finally {
-        try {
-          E && !E.done && (l = _["return"]) && l.call(_);
-        } finally {
-          if (f) throw f.error;
-        }
-      }
+      var _w = rectNode.width / bg.width;
 
-      return this.scheduler.clear(), this.initialized = !1, this.status = t.InterpreterStatus.Stopped, Ht(this.sessionId), this;
-    }, n.prototype.batch = function (n) {
-      var a = this;
-      if (this.status === t.InterpreterStatus.NotStarted && this.options.deferEvents) ;else if (this.status !== t.InterpreterStatus.Running) throw new Error("".concat(n.length, ' event(s) were sent to uninitialized service "').concat(this.machine.id, '". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.'));
-      this.scheduler.schedule(function () {
-        var t,
-            s,
-            c = a.state,
-            u = !1,
-            h = [],
-            f = function f(t) {
-          var n = L(t);
-          a.forward(n), c = jt(a, function () {
-            return a.machine.transition(c, n);
-          }), h.push.apply(h, o([], i(c.actions.map(function (t) {
-            return r = c, i = (n = t).exec, _e(_e({}, n), {
-              exec: void 0 !== i ? function () {
-                return i(r.context, r.event, {
-                  action: n,
-                  state: r,
-                  _event: r._event
-                });
-              } : void 0
-            });
-            var n, r, i;
-          })), !1)), u = u || !!c.changed;
-        };
+      var _h = rectNode.height / bg.height;
 
-        try {
-          for (var l = r(n), d = l.next(); !d.done; d = l.next()) {
-            f(d.value);
-          }
-        } catch (e) {
-          t = {
-            error: e
-          };
-        } finally {
-          try {
-            d && !d.done && (s = l["return"]) && s.call(l);
-          } finally {
-            if (t) throw t.error;
-          }
-        }
+      var pos = {
+        x: _x + _w / 2 + 0.5,
+        y: -(_y + _h / 2 - 0.5)
+      };
+      _this5._lastFingerPosition = {
+        pos: pos,
+        dirty: true
+      };
+    });
+  },
+  initBg: function initBg() {
+    var bgNode = cc.find('Canvas/bg');
+    bgNode.scale = this._mapScaleMax;
+    console.log('this._mapScaleMax', this._mapScaleMax);
+  },
 
-        c.changed = u, c.actions = h, a.update(c, L(n[n.length - 1]));
-      });
-    }, n.prototype.sender = function (t) {
-      return this.send.bind(this, t);
-    }, n.prototype.nextState = function (t) {
-      var e = this,
-          n = L(t);
-      if (0 === n.name.indexOf(ot) && !this.state.nextEvents.some(function (t) {
-        return 0 === t.indexOf(ot);
-      })) throw n.data.data;
-      return jt(this, function () {
-        return e.machine.transition(e.state, n);
-      });
-    }, n.prototype.forward = function (t) {
-      var e, n;
+  /*initBtn() {
+  		this.curPage = 0;
+  	const bottomPart = cc.find('Canvas/bottomPart');
+  	bottomPart.zIndex = 5; // 提高层级
+  		bottomPart.x = bottomPart.parent.width / 2;
+  	bottomPart.y = -bottomPart.parent.height / 2;
+  		const leftBtnNode = bottomPart.getChildByName('btn_left');
+  	//节点中添加了button组件 则可以添加click事件监听
+  	leftBtnNode.on('click', () => {
+  		if (!this._cantouch) {
+  			return;
+  		}
+  		if (this.curPage == 0) {
+  			return;
+  		}
+  		this.curPage = 0
+  		this.leftMove();
+  			// 游戏结束时需要调用这个方法通知系统作业完成
+  		onHomeworkFinish();
+  			cc.audioEngine.play(this.audioBtn.clip, false, 0.8)
+  	})
+  		const rightBtnNode = bottomPart.getChildByName('btn_right');
+  	//节点中添加了button组件 则可以添加click事件监听
+  	rightBtnNode.on('click', () => {
+  		if (!this._cantouch) {
+  			return;
+  		}
+  		if (this.curPage == 1) {
+  			return;
+  		}
+  			this.curPage = 1
+  		this.rightMove();
+  			cc.audioEngine.play(this.audioBtn.clip, false, 0.5)
+  	})
+  },*/
+  // update (dt) {},
+  _timeoutIds: null,
+  _intervalIds: null,
+  // 生命周期
+  onDestroy: function onDestroy() {
+    console.log('op15 onDestroy');
 
-      try {
-        for (var i = r(this.forwardTo), o = i.next(); !o.done; o = i.next()) {
-          var a = o.value,
-              s = this.children.get(a);
-          if (!s) throw new Error("Unable to forward event '".concat(t, "' from interpreter '").concat(this.id, "' to nonexistant child '").concat(a, "'."));
-          s.send(t);
-        }
-      } catch (t) {
-        e = {
-          error: t
-        };
-      } finally {
-        try {
-          o && !o.done && (n = i["return"]) && n.call(i);
-        } finally {
-          if (e) throw e.error;
-        }
-      }
-    }, n.prototype.defer = function (t) {
-      var e = this;
-      this.delayedEventsMap[t.id] = this.clock.setTimeout(function () {
-        t.to ? e.sendTo(t._event, t.to) : e.send(t._event);
-      }, t.delay);
-    }, n.prototype.cancel = function (t) {
-      this.clock.clearTimeout(this.delayedEventsMap[t]), delete this.delayedEventsMap[t];
-    }, n.prototype.exec = function (e, n, r) {
-      void 0 === r && (r = this.machine.options.actions);
-      var i = n.context,
-          o = n._event,
-          a = e.exec || ft(e.type, r),
-          s = N(a) ? a : a ? a.exec : e.exec;
-      if (s) try {
-        return s(i, o.data, {
-          action: e,
-          state: this.state,
-          _event: o
-        });
-      } catch (t) {
-        throw this.parent && this.parent.send({
-          type: "xstate.error",
-          data: t
-        }), t;
-      }
+    this._timeoutIds.forEach(function (id) {
+      clearTimeout(id);
+    });
 
-      switch (e.type) {
-        case Y:
-          var c = e;
-          if ("number" == typeof c.delay) return void this.defer(c);
-          c.to ? this.sendTo(c._event, c.to) : this.send(c._event);
-          break;
+    this._intervalIds.forEach(function (id) {
+      clearInterval(id);
+    });
 
-        case Z:
-          this.cancel(e.sendId);
-          break;
+    this.gameMachineService.stopChild();
+    this.gameMachineService.stop();
 
-        case K:
-          var u = e.activity;
-          if (!this.state.activities[u.id || u.type]) break;
+    if (window.courseware && window.courseware.closeOsmoFingerRead) {
+      if (this.isOpenedOsmoFingerRead) {
+        window.courseware.closeOsmoFingerRead();
+      }
+    }
+  }
+});
 
-          if (u.type === t.ActionTypes.Invoke) {
-            var h = M(u.src),
-                f = this.machine.options.services ? this.machine.options.services[h.type] : void 0,
-                l = u.id,
-                d = u.data,
-                p = "autoForward" in u ? u.autoForward : !!u.forward;
-            if (!f) return;
-            var v = d ? x(d, i, o) : void 0;
-            if ("string" == typeof f) return;
-            var y = N(f) ? f(i, o.data, {
-              data: v,
-              src: h,
-              meta: u.meta
-            }) : f;
-            if (!y) return;
-            var g = void 0;
-            k(y) && (y = v ? y.withContext(v) : y, g = {
-              autoForward: p
-            }), this.spawn(y, l, g);
-          } else this.spawnActivity(u);
+cc._RF.pop();
+                    }
+                    if (nodeEnv) {
+                        __define(__module.exports, __require, __module);
+                    }
+                    else {
+                        __quick_compile_project__.registerModuleFunc(__filename, function () {
+                            __define(__module.exports, __require, __module);
+                        });
+                    }
+                })();
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9PUDE1L3NjZW5lL09QMTUuanMiXSwibmFtZXMiOlsicHVyZSIsImFjdGlvbnMiLCJzZW5kIiwicmFpc2UiLCJzZW5kUGFyZW50IiwiY2MiLCJDbGFzcyIsIkNvbXBvbmVudCIsInByb3BlcnRpZXMiLCJyaWdodEF1ZGlvIiwidHlwZSIsIkF1ZGlvQ2xpcCIsIndyb25nQXVkaW8iLCJsb2dvQ2F0IiwiTm9kZSIsInBsYXlBbmkiLCJpZHgiLCJuYW1lIiwib3B0aW9ucyIsInRpbWVzIiwiY2IiLCJjYWxsYmFjayIsIm5vZGUiLCJfZmlndXJlUG9pbnRSZWN0QXJyYXkiLCJkcmFnb25EaXNwbGF5IiwiZ2V0Q29tcG9uZW50IiwiZHJhZ29uQm9uZXMiLCJBcm1hdHVyZURpc3BsYXkiLCJzdGF0ZSIsInBsYXlBbmltYXRpb24iLCJvbkxvYWQiLCJfdGltZW91dElkcyIsIl9pbnRlcnZhbElkcyIsImluaXRTY2VuZURhdGEiLCJpbml0U2l6ZSIsIndpbmRvdyIsImNjYyIsIl9pbWFnZVJlc0xpc3QiLCJfYXVkaW9SZXNMaXN0IiwiX2FuaW1hUmVzTGlzdCIsIl9sYXN0RmluZ2VyUG9zaXRpb24iLCJfaGludHNOb2RlTGlzdCIsIl9hbGxBbmltYXRpb25Ob2RlcyIsInBvcyIsImRpcnR5IiwiX2Rlc2lnblNpemUiLCJfZnJhbWVTaXplIiwiX21hcFNjYWxlTWluIiwiX21hcFNjYWxlTWF4IiwiX2NvY29zU2NhbGUiLCJzY3JlZW5fc2l6ZSIsInZpZXciLCJnZXRGcmFtZVNpemUiLCJ3aWR0aCIsImhlaWdodCIsImRlc2lnbl9zaXplIiwiQ2FudmFzIiwiaW5zdGFuY2UiLCJkZXNpZ25SZXNvbHV0aW9uIiwiZiIsImZpdEhlaWdodCIsImZpdFdpZHRoIiwiZnJhbWVTaXplIiwiZ2V0RGVzaWduUmVzb2x1dGlvblNpemUiLCJzeCIsIndpblNpemUiLCJzeSIsIk1hdGgiLCJtaW4iLCJtYXgiLCJjcmVhdGVTdGF0ZU1hY2hpbmUiLCJjaGVjayIsInRhcmdldCIsImNvbmQiLCJjdHgiLCJldnQiLCJjb25zb2xlIiwibG9nIiwicXVlc3Rpb25JbmRleCIsInF1ZXN0aW9uc0NvdW50IiwiUXVlc3Rpb25TdGF0ZSIsImlkIiwiaW5pdGlhbCIsInN0YXRlcyIsImhpbnQiLCJpbnZva2UiLCJzcmMiLCJldmVudCIsInF1ZXN0aW9uUGxheVRpbWVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJxdWVzdGlvbnMiLCJhdWRpb191cmwiLCJvbkRvbmUiLCJvbkVycm9yIiwiYW5zd2VyIiwiYWZ0ZXIiLCJjb250ZXh0Iiwib25SZWNlaXZlIiwic2V0SW50ZXJ2YWwiLCJyZWdpb24iLCJyZXN1bHQiLCJjaGVja0luUmVnaW9uIiwicmVjdCIsInB1c2giLCJjbGVhckludGVydmFsIiwib24iLCJSSUdIVCIsIldST05HIiwicmlnaHQiLCJhbiIsImFjdGl2ZSIsImlzU3BpbmUiLCJza2VsZXRvbiIsInNwIiwiU2tlbGV0b24iLCJzZXRUb1NldHVwUG9zZSIsInNldFRpbWVvdXQiLCJzZXRBbmltYXRpb24iLCJkZExvZ29DYXQiLCJvbmNlIiwiRXZlbnRPYmplY3QiLCJDT01QTEVURSIsIndyb25nIiwibWF4UXVlc3Rpb25UcnlUaW1lcyIsIndyb25nRWZmZWN0IiwiaW5jbHVkZXMiLCJkYXRhIiwiUXVlc3Rpb25zQXJyYXlTdGF0dXMiLCJwbGF5IiwibmV4dCIsIkNIRUNLIiwibGVuZ3RoIiwiYmVnaW4iLCJjb3Vyc2V3YXJlIiwib3Blbk9zbW9GaW5nZXJSZWFkIiwiaXNPcGVuZWRPc21vRmluZ2VyUmVhZCIsImJlZ2luX2F1ZGlvIiwiZ3VpZGUiLCJndWlkZV9hdWRpbyIsInBsYXlpbmciLCJlbnRyeSIsImFzc2V0TWFuYWdlciIsImxvYWRSZW1vdGUiLCJwbGF5aW5nX2F1ZGlvIiwiZXJyIiwiYXVkaW9DbGlwIiwiYXVkaW9FbmdpbmUiLCJwbGF5TXVzaWMiLCJmb3JFYWNoIiwiYmxvY2siLCJleGl0Iiwic3RvcE11c2ljIiwiTkVYVCIsImVuZCIsImNsb3NlT3Ntb0ZpbmdlclJlYWQiLCJlbmRfYXVkaW8iLCJpIiwidCIsImsiLCJfYXJtYXR1cmVLZXkiLCJhZGRFdmVudExpc3RlbmVyIiwiYmVnaW5fc2VwX3RpbWUiLCJnYW1lTWFjaGluZSIsImdhbWVNYWNoaW5lU2VydmljZSIsIm9uVHJhbnNpdGlvbiIsInN0YXJ0IiwiZ2V0RGF0YSIsImJpbmQiLCJnZXREZWZhdWx0RGF0YSIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsInByZWxvYWRJdGVtIiwiYWlyIiwib3Ntb0ZpbmdlclJlYWRDYWxsYmFjayIsInJlc3VsdE9iaiIsImZpbmdlcl9wb3NfaW5fcGFnZSIsInAiLCJ4IiwieSIsImRlYnVnUG9pbnRlciIsImlzRGVidWciLCJyIiwidyIsImgiLCJmdW5jIiwibWlkZGxlTGF5ZXIiLCJmaW5kIiwibWlkZGxlTGF5ZXJDb21wb25lbnQiLCJhZGRQcmVsb2FkSW1hZ2UiLCJhZGRQcmVsb2FkQXVkaW8iLCJhZGRQcmVsb2FkQW5pbWEiLCJwcmVsb2FkIiwidXJsIiwiYmdJdGVtIiwiaG90Wm9uZUl0ZW1BcnIiLCJxIiwiZ0lkeCIsInRleFBuZ0RhdGEiLCJwaWNfdXJsIiwicHJlcGFyZUF1ZGlvQ2xpcCIsImtleSIsIndyb25nX2F1ZGlvIiwicmlnaHRfYXVkaW8iLCJ3cm9uZ19hdWRpbzEiLCJ3cm9uZ19hdWRpbzIiLCJib3hEZWJ1Z2dlciIsIlBPSU5URVJfTk9ERSIsInBhcmVudCIsImFkZENvbXBvbmVudCIsIkdyYXBoaWNzIiwiZ3JhcCIsImNsZWFyIiwiZ3JvdW5kIiwiYmFzZVciLCJiYXNlSCIsInB4IiwicHkiLCJwbiIsImZpbGxDb2xvciIsImNvbG9yIiwiY2lyY2xlIiwiZmlsbCIsInN0cm9rZSIsImRlYnVnR3JhcGhpY3MiLCJjYW52YXMiLCJiZ1ciLCJiZ0giLCJzY2FsZVgiLCJzY2FsZVkiLCJhZGRlZCIsImFyZWEiLCJkbiIsImxibE5vZGUiLCJsYmwiLCJMYWJlbCIsInN0cmluZyIsInNrZUpzb25EYXRhIiwic3Vic3RyaW5nIiwiZyIsImIiLCJyeCIsInJ5IiwicnciLCJyaCIsImZpbGxSZWN0IiwicHJlbG9hZEFyciIsImNvbmNhdCIsImxvYWRBbnkiLCJpdGVtIiwiZ3JvdW5kQmciLCJiYXNlUmVjdCIsInNmIiwiZ3MiLCJTcHJpdGUiLCJzcHJpdGVGcmFtZSIsImRiQ291bnQiLCJmaW5pc2hEYkNvdW50IiwiczEiLCJpbWdTaXplVyIsImltZ1NpemVIIiwic3ByIiwic2NhbGUiLCJuIiwiYW5pbVR5cGUiLCJ0ZXgiLCJhdGxhcyIsInRleEpzb25EYXRhIiwic2tlIiwidGhlbiIsImxvYWRFbmQiLCJkYiIsInJlY3RJbmZvIiwibGFiZWxUZXh0IiwiaXNOYU4iLCJkZWJ1ZyIsInNldERpc3BsYXlTdGF0cyIsImhpZGVBaXJDbGFzc0xvYWRpbmciLCJpbml0RGF0YSIsImluaXRCZyIsIl9jYW50b3VjaCIsImFkZFJlY3ROb2RlTGlzdGVuZXIiLCJiZyIsInJhdGUiLCJyZWN0Tm9kZSIsImluZGV4IiwiYWRkQ2hpbGQiLCJsaW5lV2lkdGgiLCJzdHJva2VDb2xvciIsIkNvbG9yIiwiQkxBQ0siLCJXSElURSIsInNldEEiLCJhbmNob3JYIiwiYW5jaG9yWSIsIkJ1dHRvbiIsIl94IiwiX3kiLCJfdyIsIl9oIiwiYmdOb2RlIiwib25EZXN0cm95IiwiY2xlYXJUaW1lb3V0Iiwic3RvcENoaWxkIiwic3RvcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztJQUNRQSxPQUFvQ0MsZ0JBQXBDRDtJQUFPRSxPQUE2QkQsZ0JBQTdCQztJQUFNQyxRQUF1QkYsZ0JBQXZCRTtJQUFPQyxhQUFnQkgsZ0JBQWhCRztBQUc1QkMsRUFBRSxDQUFDQyxLQUFILENBQVM7QUFFUixhQUFTRCxFQUFFLENBQUNFLFNBRko7QUFJUkMsRUFBQUEsVUFBVSxFQUFFO0FBQ1g7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUUsSUE3bkNMO0FBOG5DUkMsRUFBQUEsWUFBWSxFQUFFLElBOW5DTjtBQStuQ1I7QUFDQStRLEVBQUFBLFNBaG9DUSx1QkFnb0NJO0FBQ1huTyxJQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxnQkFBWjs7QUFDQSxTQUFLOUMsV0FBTCxDQUFpQnVILE9BQWpCLENBQXlCLFVBQUFyRSxFQUFFLEVBQUk7QUFDOUIrTixNQUFBQSxZQUFZLENBQUMvTixFQUFELENBQVo7QUFDQSxLQUZEOztBQUdBLFNBQUtqRCxZQUFMLENBQWtCc0gsT0FBbEIsQ0FBMEIsVUFBQXJFLEVBQUUsRUFBSTtBQUMvQnlCLE1BQUFBLGFBQWEsQ0FBQ3pCLEVBQUQsQ0FBYjtBQUNBLEtBRkQ7O0FBR0EsU0FBS29GLGtCQUFMLENBQXdCNEksU0FBeEI7QUFDQSxTQUFLNUksa0JBQUwsQ0FBd0I2SSxJQUF4Qjs7QUFDQSxRQUFHL1EsTUFBTSxDQUFDb0csVUFBUCxJQUFxQnBHLE1BQU0sQ0FBQ29HLFVBQVAsQ0FBa0JxQixtQkFBMUMsRUFBK0Q7QUFDOUQsVUFBSSxLQUFLbkIsc0JBQVQsRUFBaUM7QUFDaEN0RyxRQUFBQSxNQUFNLENBQUNvRyxVQUFQLENBQWtCcUIsbUJBQWxCO0FBQ0E7QUFDRDtBQUNEO0FBL29DTyxDQUFUIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvbkhvbWV3b3JrRmluaXNoLCBSYW5kb21JbnQsIHBsYXlBdWRpb0J5VXJsLCBsb2FkRHJhZ29uQm9uZXMsIGdldFNwcml0ZUZyaW1lQnlVcmwsIGxvYWRTcGluZSB9IGZyb20gXCIuLi9zY3JpcHQvdXRpbFwiO1xuaW1wb3J0IHsgZGVmYXVsdERhdGEgfSBmcm9tIFwiLi4vc2NyaXB0L2RlZmF1bHREYXRhXCI7XG5pbXBvcnQgeyBhc3NpZ24sIGNyZWF0ZU1hY2hpbmUsIGludGVycHJldCwgYWN0aW9ucywgZm9yd2FyZFRvLCBtYXRjaGVzU3RhdGUgIH0gZnJvbSBcIi4uL3NjcmlwdC94c3RhdGVcIjtcbmNvbnN0IHsgcHVyZSAsIHNlbmQsIHJhaXNlLCBzZW5kUGFyZW50ICB9ID0gYWN0aW9ucztcblxuXG5jYy5DbGFzcyh7XG5cblx0ZXh0ZW5kczogY2MuQ29tcG9uZW50LFxuXG5cdHByb3BlcnRpZXM6IHtcblx0XHQvKmFudDoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRhcHBsZToge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRiaXJkOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGNhcjoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRjYXQ6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0Y293OiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGR1Y2s6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0ZWdnOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGZhcm1lcjoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRmaXNoOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGdpcmw6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0aGVuOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGhvdXNlOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LCovXG5cdFx0cmlnaHRBdWRpbzoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLkF1ZGlvQ2xpcCxcblx0XHR9LFxuXHRcdHdyb25nQXVkaW86IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5BdWRpb0NsaXAsXG5cdFx0fSxcblx0XHRsb2dvQ2F0OiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZVxuXHRcdH1cblxuXHR9LFxuXG5cdHBsYXlBbmkoaWR4LCBuYW1lLCBvcHRpb25zKSB7XG5cdFx0Y29uc3QgdGltZXMgPSAob3B0aW9ucyAmJiBvcHRpb25zLnRpbWVzKSB8fCAxO1xuXHRcdGNvbnN0IGNiID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5jYWxsYmFjaykgfHwgbnVsbDtcblx0XHQvLyBjb25zdCBjYXQgPSBjYy5maW5kKGBDYW52YXMvZnJhbWUtYm9yZGVyL2dyb3VuZC8ke25vZGV9YCk7XG5cdFx0Y29uc3Qgbm9kZSA9IHRoaXMuX2ZpZ3VyZVBvaW50UmVjdEFycmF5W2lkeF0ubm9kZVxuXHRcdHZhciBkcmFnb25EaXNwbGF5ID0gbm9kZS5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblxuXHRcdGNvbnN0IHN0YXRlID0gZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKG5hbWUsIHRpbWVzKTtcblx0XHQvLyBkcmFnb25EaXNwbGF5LmFkZEV2ZW50TGlzdGVuZXIoZHJhZ29uQm9uZXMuRXZlbnRPYmplY3QuQ09NUExFVEUsIChldmVudCkgPT4ge1xuXHRcdC8vIFx0Ly9UT0RPIOi/memHjOWGmeinpuWPkeS6i+S7tlxuXHRcdC8vIFx0Ly9ldmVudC5uYW1l5Li65LqL5Lu25ZCN56ewXG5cdFx0Ly8gXHRjb25zb2xlLmxvZyhldmVudC5uYW1lKVxuXHRcdC8vIH0sIHRoaXMpO1xuXHRcdC8vIGFuaW1hdGlvbkRpc3BsYXkuYWRkRXZlbnRMaXN0ZW5lcihkcmFnb25Cb25lcy5FdmVudE9iamVjdC5DT01QTEVURSwgY29tcGxldGVDYWxsYmFjayk7XG5cdFx0cmV0dXJuIHN0YXRlO1xuXHR9LFxuXHQvLyDnlJ/lkb3lkajmnJ8gb25Mb2FkXG5cdG9uTG9hZCgpIHtcblx0XHR0aGlzLl90aW1lb3V0SWRzID0gW107XG5cdFx0dGhpcy5faW50ZXJ2YWxJZHMgPSBbXTtcblx0XHR0aGlzLmluaXRTY2VuZURhdGEoKTtcblx0XHR0aGlzLmluaXRTaXplKCk7XG5cdFx0d2luZG93LmNjYyA9IHRoaXM7XG5cdH0sXG5cblx0X2ltYWdlUmVzTGlzdDogbnVsbCxcblx0X2F1ZGlvUmVzTGlzdDogbnVsbCxcblx0X2FuaW1hUmVzTGlzdDogbnVsbCxcblxuXHRfbGFzdEZpbmdlclBvc2l0aW9uOiBudWxsLFxuXG5cdF9oaW50c05vZGVMaXN0IDogbnVsbCxcblx0X2ZpZ3VyZVBvaW50UmVjdEFycmF5OiBudWxsLFxuXG5cdF9hbGxBbmltYXRpb25Ob2RlczogbnVsbCxcblxuXHRpbml0U2NlbmVEYXRhKCkge1xuXHRcdHRoaXMuX2ltYWdlUmVzTGlzdCA9IFtdO1xuXHRcdHRoaXMuX2F1ZGlvUmVzTGlzdCA9IFtdO1xuXHRcdHRoaXMuX2FuaW1hUmVzTGlzdCA9IFtdO1xuXG5cdFx0dGhpcy5fYWxsQW5pbWF0aW9uTm9kZXMgPSBbXTtcblx0XHR0aGlzLl9oaW50c05vZGVMaXN0ID0gW107XG5cdFx0dGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uPSB7XG5cdFx0XHRwb3M6IG51bGwsXG5cdFx0XHRkaXJ0eTogZmFsc2Vcblx0XHR9O1xuXHRcdHRoaXMuX2ZpZ3VyZVBvaW50UmVjdEFycmF5ID0gW107XG5cdH0sXG5cblx0X2Rlc2lnblNpemU6IG51bGwsICAvLyDorr7orqHliIbovqjnjodcblx0X2ZyYW1lU2l6ZTogbnVsbCwgIC8vIOWxj+W5leWIhui+qOeOh1xuXHRfbWFwU2NhbGVNaW46IG51bGwsICAvLyDlnLrmma/kuK3luLjnlKjnvKnmlL7vvIjlj5blpKflgLzvvIlcblx0X21hcFNjYWxlTWF4OiBudWxsLCAgLy8g5Zy65pmv5Lit5bi455So57yp5pS+77yI5Y+W5bCP5YC877yJXG5cdF9jb2Nvc1NjYWxlOiBudWxsLCAgLy8gY29jb3Mg6Ieq57yp5pS+IO+8iOi+g+WwkeeUqOWIsO+8iVxuXHRcblx0aW5pdFNpemUoKSB7XG5cdFx0Ly8g5rOo5oSPY2Mud2luU2l6ZeWPquacieWcqOmAgumFjeWQjijkv67mlLlmaXRIZWlnaHQvZml0V2lkdGjlkI4p5omN6IO96I635Y+W5Yiw5q2j56Gu55qE5YC8LOWboOatpOS9v+eUqGNjLmdldEZyYW1lU2l6ZSgp5p2l6I635Y+W5Yid5aeL55qE5bGP5bmV5aSn5bCPXG5cdFx0bGV0IHNjcmVlbl9zaXplID0gY2Mudmlldy5nZXRGcmFtZVNpemUoKS53aWR0aCAvIGNjLnZpZXcuZ2V0RnJhbWVTaXplKCkuaGVpZ2h0XG5cdFx0bGV0IGRlc2lnbl9zaXplID0gY2MuQ2FudmFzLmluc3RhbmNlLmRlc2lnblJlc29sdXRpb24ud2lkdGggLyBjYy5DYW52YXMuaW5zdGFuY2UuZGVzaWduUmVzb2x1dGlvbi5oZWlnaHRcblx0XHRsZXQgZiA9IHNjcmVlbl9zaXplID49IGRlc2lnbl9zaXplXG5cdFx0Y2MuQ2FudmFzLmluc3RhbmNlLmZpdEhlaWdodCA9IGZcblx0XHRjYy5DYW52YXMuaW5zdGFuY2UuZml0V2lkdGggPSAhZlxuXG5cdFx0Y29uc3QgZnJhbWVTaXplID0gY2Mudmlldy5nZXRGcmFtZVNpemUoKTtcblx0XHR0aGlzLl9mcmFtZVNpemUgPSBmcmFtZVNpemU7XG5cblx0XHR0aGlzLl9kZXNpZ25TaXplID0gY2Mudmlldy5nZXREZXNpZ25SZXNvbHV0aW9uU2l6ZSgpO1xuXG5cdFx0bGV0IHN4ID0gY2Mud2luU2l6ZS53aWR0aCAvIGZyYW1lU2l6ZS53aWR0aDtcblx0XHRsZXQgc3kgPSBjYy53aW5TaXplLmhlaWdodCAvIGZyYW1lU2l6ZS5oZWlnaHQ7XG5cdFx0dGhpcy5fY29jb3NTY2FsZSA9IE1hdGgubWluKHN4LCBzeSk7XG5cblx0XHRzeCA9IGZyYW1lU2l6ZS53aWR0aCAvIHRoaXMuX2Rlc2lnblNpemUud2lkdGg7XG5cdFx0c3kgPSBmcmFtZVNpemUuaGVpZ2h0IC8gdGhpcy5fZGVzaWduU2l6ZS5oZWlnaHQ7XG5cdFx0dGhpcy5fbWFwU2NhbGVNaW4gPSBNYXRoLm1pbihzeCwgc3kpICogdGhpcy5fY29jb3NTY2FsZTtcblx0XHR0aGlzLl9tYXBTY2FsZU1heCA9IE1hdGgubWF4KHN4LCBzeSkgKiB0aGlzLl9jb2Nvc1NjYWxlO1xuXHR9LFxuXHRjcmVhdGVTdGF0ZU1hY2hpbmUoKXtcblx0XHRjb25zdCBjaGVjayA9ICBbXG5cdFx0XHRcdFx0XHRcdHsgdGFyZ2V0OiAnI2dhbWUuZW5kJywgY29uZDogKGN0eCwgZXZ0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ1thbnN3ZXIgTkVYVF0gY2hlY2sgaWYgZW5kJywgY3R4LnF1ZXN0aW9uSW5kZXggPj0gY3R4LnF1ZXN0aW9uc0NvdW50IC0gMSk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGN0eC5xdWVzdGlvbkluZGV4ID49IGN0eC5xdWVzdGlvbnNDb3VudCAtMVxuXG5cdFx0XHRcdFx0XHRcdH0gfSxcbiAgICAgICAgXHRcdFx0XHRcdHsgdGFyZ2V0OiAnaGludCcgfSAvLyByZWVudGVyICdoaW50JyBzdGF0ZVxuXHRcdFx0XHRcdFx0XVxuXHRcdGNvbnN0IFF1ZXN0aW9uU3RhdGUgPSB7XG5cdFx0XHRpZDogJ3F1ZXN0aW9uJyxcblx0XHRcdGluaXRpYWw6ICdoaW50Jyxcblx0XHRcdHN0YXRlczoge1xuXHRcdFx0XHRoaW50OiB7XG5cdFx0XHRcdFx0aW52b2tlOiB7XG5cdFx0XHRcdFx0XHRzcmM6IChjdHgsIGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbaGludF0gcGxheSBxdWVzdGlvbiAke2N0eC5xdWVzdGlvbkluZGV4fTogJHtjdHgucXVlc3Rpb25QbGF5VGltZXMgfSBhdWRpb2ApO1xuXHRcdFx0XHRcdFx0XHRjdHgucXVlc3Rpb25QbGF5VGltZXMgKz0gMTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdHBsYXlBdWRpb0J5VXJsKGN0eC5xdWVzdGlvbnNbY3R4LnF1ZXN0aW9uSW5kZXhdLmF1ZGlvX3VybCwgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2hpbnQgZmluaXNoJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKClcblx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG9uRG9uZTogJ2Fuc3dlcicsXG5cdFx0XHRcdFx0XHRvbkVycm9yOiAnYW5zd2VyJ1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0YW5zd2VyOiB7XG5cdFx0XHRcdFx0YWZ0ZXI6IHtcblx0XHRcdFx0XHRcdDgwMDA6IFtcbiAgICAgICAgXHRcdFx0XHRcdHsgXG5cdFx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnd3JvbmcnLFxuXHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHR9IC8vIHJlZW50ZXIgJ2hpbnQnIHN0YXRlXG5cdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdGludm9rZToge1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRzcmM6IChjb250ZXh0LCBldmVudCkgPT4gKGNhbGxiYWNrLCBvblJlY2VpdmUpID0+IHtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdbYW5zd2VyXSB0aGlua2luZyBhbmQgcGxheWluZycpO1xuXHRcdFx0XHRcdFx0XHQvLyBjaGVjayBldmVyeSBzZWNvbmRcblx0XHRcdFx0XHRcdFx0Y29uc3QgaWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCF0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24uZGlydHkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgcmVnaW9uID0gY29udGV4dC5xdWVzdGlvbnNbY29udGV4dC5xdWVzdGlvbkluZGV4XTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmNoZWNrSW5SZWdpb24ocmVnaW9uLnJlY3QpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChyZXN1bHQgPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ1tHZW5pc2UgSlNdIGNoZWNrSW5SZWdpb24nICsgcmVzdWx0KVxuXHRcdFx0XHRcdFx0XHRcdGlmIChyZXN1bHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNhbGxiYWNrKCdSSUdIVCcpXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNhbGxiYWNrKCdXUk9ORycpXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9LCAxMDApO1xuXHRcdFx0XHRcdFx0XHR0aGlzLl9pbnRlcnZhbElkcy5wdXNoKGlkKTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0Ly8gUGVyZm9ybSBjbGVhbnVwXG5cdFx0XHRcdFx0XHRcdHJldHVybiAoKSA9PiBjbGVhckludGVydmFsKGlkKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG9uOiB7XG5cdFx0XHRcdFx0XHRSSUdIVDoge1xuXHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICdyaWdodCcsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0V1JPTkc6IHtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnd3JvbmcnLFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0XG5cdFx0XHRcdHJpZ2h0OiB7XG5cdFx0XHRcdFx0aW52b2tlOiB7XG5cdFx0XHRcdFx0XHRzcmM6IChjb250ZXh0LCBldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24ucG9zID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0dGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uLmRpcnR5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2Fuc3dlciByaWdodCcpO1xuXHRcdFx0XHRcdFx0XHRcdC8vIHRoaXMucGxheUFuaShjb250ZXh0LnF1ZXN0aW9uSW5kZXgsICdub3JtYWwnKVxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGFuID0gY29udGV4dC5xdWVzdGlvbnNbY29udGV4dC5xdWVzdGlvbkluZGV4XS5ub2RlO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdpbiByaWdodCAnICsgKHR5cGVvZiBhbikpXG5cdFx0XHRcdFx0XHRcdFx0YW4uYWN0aXZlID0gdHJ1ZTtcblxuXHRcdFx0XHRcdFx0XHRcdGlmIChhbi5pc1NwaW5lKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gYW4uZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldFRvU2V0dXBQb3NlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2tlbGV0b24uc2V0QW5pbWF0aW9uKDAsICdub3JtYWwnLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0sIDEpO1xuXHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRyYWdvbkRpc3BsYXkgPSBhbi5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdFx0XHRcdGRyYWdvbkRpc3BsYXkucGxheUFuaW1hdGlvbignbm9ybWFsJywgMCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgZGRMb2dvQ2F0ID0gdGhpcy5sb2dvQ2F0LmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpXG5cdFx0XHRcdFx0XHRcdFx0ZGRMb2dvQ2F0LnBsYXlBbmltYXRpb24oJ3JpZ2h0JywgMSlcblx0XHRcdFx0XHRcdFx0XHRkZExvZ29DYXQub25jZShkcmFnb25Cb25lcy5FdmVudE9iamVjdC5DT01QTEVURSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvZ29DYXQuZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSkucGxheUFuaW1hdGlvbignbm9ybWFsJywgMClcblx0XHRcdFx0XHRcdFx0XHR9LCB0aGlzKVxuXG5cdFx0XHRcdFx0XHRcdFx0cGxheUF1ZGlvQnlVcmwodGhpcy5yaWdodEF1ZGlvLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKClcblx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRvbkRvbmU6IHtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnI1F1ZXN0aW9uc0FycmF5Lm5leHQnLFxuXHRcdFx0XHRcdFx0XHRhY3Rpb25zOiByYWlzZSgnQ0hFQ0snKVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG9uRXJyb3I6IHtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnI1F1ZXN0aW9uc0FycmF5Lm5leHQnLFxuXHRcdFx0XHRcdFx0XHRhY3Rpb25zOiByYWlzZSgnQ0hFQ0snKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0d3Jvbmc6e1xuXHRcdFx0XHRcdGludm9rZToge1xuXHRcdFx0XHRcdFx0c3JjOiAoY29udGV4dCwgZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uLnBvcyA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5kaXJ0eSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdhbnN3ZXIgd3JvbmcnLCBjb250ZXh0LnF1ZXN0aW9uSW5kZXgsIGNvbnRleHQucXVlc3Rpb25QbGF5VGltZXMgLCBjb250ZXh0Lm1heFF1ZXN0aW9uVHJ5VGltZXMpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRkTG9nb0NhdCA9IHRoaXMubG9nb0NhdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KVxuXHRcdFx0XHRcdFx0XHRcdGRkTG9nb0NhdC5wbGF5QW5pbWF0aW9uKCd3cm9uZycsIDEpXG5cdFx0XHRcdFx0XHRcdFx0ZGRMb2dvQ2F0Lm9uY2UoZHJhZ29uQm9uZXMuRXZlbnRPYmplY3QuQ09NUExFVEUsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2dvQ2F0LmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpLnBsYXlBbmltYXRpb24oJ25vcm1hbCcsIDApXG5cdFx0XHRcdFx0XHRcdFx0fSwgdGhpcyk7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHdyb25nRWZmZWN0ID0gdGhpcy53cm9uZ0F1ZGlvO1xuXHRcdFx0XHRcdFx0XHRcdC8vIOesrOS4gOWSjOesrOS6jOmimOeahOaPkOekuumfs1xuXHRcdFx0XHRcdFx0XHRcdGlmIChbMCwgMV0uaW5jbHVkZXMoY29udGV4dC5xdWVzdGlvbkluZGV4KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0d3JvbmdFZmZlY3QgPSB0aGlzLmRhdGFbYHdyb25nX2F1ZGlvJHtjb250ZXh0LnF1ZXN0aW9uUGxheVRpbWVzfWBdXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIOmdnuesrOS4gOWSjOesrOS6jOmimO+8jOW5tuS4lOWBmuesrOS6jOmBjeeahOaPkOekuumfs1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNvbnRleHQucXVlc3Rpb25QbGF5VGltZXMgPT0gMikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR3cm9uZ0VmZmVjdCA9IHRoaXMuZGF0YVtgd3JvbmdfYXVkaW8ke2NvbnRleHQucXVlc3Rpb25QbGF5VGltZXN9YF1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cblxuXHRcdFx0XHRcdFx0XHRcdGlmIChjb250ZXh0LnF1ZXN0aW9uUGxheVRpbWVzID49IGNvbnRleHQubWF4UXVlc3Rpb25UcnlUaW1lcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgYW4gPSBjb250ZXh0LnF1ZXN0aW9uc1tjb250ZXh0LnF1ZXN0aW9uSW5kZXhdLm5vZGU7XG5cdFx0XHRcdFx0XHRcdFx0XHRhbi5hY3RpdmUgPSB0cnVlO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYW4uaXNTcGluZSkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gYW4uZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2tlbGV0b24uc2V0VG9TZXR1cFBvc2UoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2tlbGV0b24uc2V0QW5pbWF0aW9uKDAsICdub3JtYWwnLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgMSk7XG5cdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgZHJhZ29uRGlzcGxheSA9IGFuLmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24oJ25vcm1hbCcsIDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnc2hvdyBhbmltYXRpb24nLCBhbi5hY3RpdmUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRwbGF5QXVkaW9CeVVybCh3cm9uZ0VmZmVjdCwgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNvbnRleHQucXVlc3Rpb25QbGF5VGltZXMgPj0gY29udGV4dC5tYXhRdWVzdGlvblRyeVRpbWVzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGNvbnN0IGFuID0gY29udGV4dC5xdWVzdGlvbnNbY29udGV4dC5xdWVzdGlvbkluZGV4XS5ub2RlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhbi5hY3RpdmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zdCBkcmFnb25EaXNwbGF5ID0gYW4uZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGRyYWdvbkRpc3BsYXkucGxheUFuaW1hdGlvbignbm9ybWFsJywgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdzaG93IGFuaW1hdGlvbicsIGFuLmFjdGl2ZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdCgpXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKClcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRvbkRvbmU6IHtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnaGludCcsXG5cdFx0XHRcdFx0XHRcdC8vIGFjdGlvbnM6IHJhaXNlKCdDSEVDSycpXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25FcnJvcjoge1xuXHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICcjUXVlc3Rpb25zQXJyYXkubmV4dCcsXG5cdFx0XHRcdFx0XHRcdGFjdGlvbnM6IHJhaXNlKCdDSEVDSycpXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCBRdWVzdGlvbnNBcnJheVN0YXR1cyA9IHtcblx0XHRcdGlkOiAnUXVlc3Rpb25zQXJyYXknLFxuXHRcdFx0aW5pdGlhbDogJ3BsYXknLFxuXHRcdFx0c3RhdGVzOiB7XG5cdFx0XHRcdHBsYXk6IHtcblx0XHRcdFx0XHQuLi5RdWVzdGlvblN0YXRlXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG5leHQ6IHtcblx0XHRcdFx0XHRvbjoge1xuXHRcdFx0XHRcdFx0Q0hFQ0s6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHRhcmdldDogJyNnYW1lLmVuZCcsXG5cdFx0XHRcdFx0XHRcdFx0Y29uZDogKGN0eCwgZXZ0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjdHgucXVlc3Rpb25JbmRleCArPSAxO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3R4LnF1ZXN0aW9uUGxheVRpbWVzID0gMFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJyNnYW1lLmVuZCcsICBjdHgucXVlc3Rpb25JbmRleCA+PSBjdHgucXVlc3Rpb25zQ291bnQgKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGN0eC5xdWVzdGlvbkluZGV4ID49IGN0eC5xdWVzdGlvbnNDb3VudFxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e3RhcmdldDogJ3BsYXknfVxuXHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdFxuXHRcdGNvbnN0IHN0YXRlID0ge1xuXHRcdFx0aWQ6ICdnYW1lJyxcblx0XHRcdGluaXRpYWw6ICdiZWdpbicsXG5cdFx0XHRjb250ZXh0OiB7XG5cdFx0XHRcdHF1ZXN0aW9uSW5kZXg6IDAsXG5cdFx0XHRcdHF1ZXN0aW9uUGxheVRpbWVzOiAwLFxuXHRcdFx0XHRtYXhRdWVzdGlvblRyeVRpbWVzOiAyLFxuXHRcdFx0XHRxdWVzdGlvbnNDb3VudDogdGhpcy5fZmlndXJlUG9pbnRSZWN0QXJyYXkubGVuZ3RoLFxuXHRcdFx0XHRxdWVzdGlvbnM6IHRoaXMuX2ZpZ3VyZVBvaW50UmVjdEFycmF5LFxuXHRcdFx0fSxcblx0XHRcdHN0YXRlczoge1xuXHRcdFx0XHRiZWdpbjoge1xuXHRcdFx0XHRcdGludm9rZToge1xuXHRcdFx0XHRcdFx0c3JjOiAoY3R4KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnYW1lIGJlZ2luIDEnKTtcblx0XHRcdFx0XHRcdFx0aWYod2luZG93LmNvdXJzZXdhcmUgJiYgd2luZG93LmNvdXJzZXdhcmUub3Blbk9zbW9GaW5nZXJSZWFkKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5pc09wZW5lZE9zbW9GaW5nZXJSZWFkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cuY291cnNld2FyZS5vcGVuT3Ntb0ZpbmdlclJlYWQoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XCJwYWdlX2lkXCI6IDI3LFxuXHRcdFx0XHRcdFx0XHRcdFx0XCJib29rX2lkXCI6IFwib3B3MVwiXG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR2YXIgZHJhZ29uRGlzcGxheSA9IHRoaXMubG9nb0NhdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSBkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24oJ2JlZ2luJywgMCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSxyZWplY3QpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRwbGF5QXVkaW9CeVVybCh0aGlzLmRhdGEuYmVnaW5fYXVkaW8sICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnYW1lIGJlZ2luIGF1ZGlvIGZpbmlzaCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgpXG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25Eb25lOiAgJ2d1aWRlJyxcblx0XHRcdFx0XHRcdG9uRXJyb3I6ICdndWlkZSdcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdFxuXHRcdFx0XHRndWlkZTp7XG5cdFx0XHRcdFx0aW52b2tlOiB7XG5cdFx0XHRcdFx0XHRzcmM6IChjdHgpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHBsYXlBdWRpb0J5VXJsKHRoaXMuZGF0YS5ndWlkZV9hdWRpbywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2dhbWUgZ3VpZGUgYXVkaW8gZmluaXNoJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZWplY3QoKVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG9uRG9uZTogICdwbGF5aW5nJyxcblx0XHRcdFx0XHRcdG9uRXJyb3I6ICdwbGF5aW5nJ1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHBsYXlpbmc6IHtcblx0XHRcdFx0XHRlbnRyeTogKGN0eCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2VudHJ5IHBsYXkgc3RhZ2UnKTtcblx0XHRcdFx0XHRcdHZhciBkcmFnb25EaXNwbGF5ID0gdGhpcy5sb2dvQ2F0LmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpO1xuXHRcdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSBkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24oJ25vcm1hbCcsIDApO1xuXHRcdFx0XHRcdFx0Y2MuYXNzZXRNYW5hZ2VyLmxvYWRSZW1vdGUodGhpcy5kYXRhLnBsYXlpbmdfYXVkaW8sIChlcnIsIGF1ZGlvQ2xpcCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjYy5hdWRpb0VuZ2luZS5wbGF5TXVzaWMoYXVkaW9DbGlwLCB0cnVlLCAwLjgpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjdHgucXVlc3Rpb25zLmZvckVhY2goKGJsb2NrKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGJsb2NrLm5vZGUuYWN0aXZlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGV4aXQ6ICgpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdleGl0IHBsYXkgc3RhZ2UnKTtcblx0XHRcdFx0XHRcdGNjLmF1ZGlvRW5naW5lLnN0b3BNdXNpYygpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0b246IHtcblx0XHRcdFx0XHRcdE5FWFQ6ICdlbmQnXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQvLyAuLi5RdWVzdGlvbnNTdGF0ZXNcblx0XHRcdFx0XHQuLi5RdWVzdGlvbnNBcnJheVN0YXR1c1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRlbmQ6IHtcblx0XHRcdFx0XHRcdGVudHJ5OiAoY3R4LCBldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2FtZSBlbmQnKTtcblx0XHRcdFx0XHRcdFx0dmFyIGRyYWdvbkRpc3BsYXkgPSB0aGlzLmxvZ29DYXQuZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHN0YXRlID0gZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdmaW5pc2gnLCAwKTtcblx0XHRcdFx0XHRcdFx0aWYod2luZG93LmNvdXJzZXdhcmUgJiYgd2luZG93LmNvdXJzZXdhcmUuY2xvc2VPc21vRmluZ2VyUmVhZCkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaXNPcGVuZWRPc21vRmluZ2VyUmVhZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy5jb3Vyc2V3YXJlLmNsb3NlT3Ntb0ZpbmdlclJlYWQoKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHBsYXlBdWRpb0J5VXJsKHRoaXMuZGF0YS5lbmRfYXVkaW8sICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2FtZSBmaW5pc2gnKTtcblx0XHRcdFx0XHRcdFx0XHRvbkhvbWV3b3JrRmluaXNoKCk7XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdC8vIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSxyZWplY3QpID0+IHtcblx0XHRcdFx0XHRcdFx0Ly8gXHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdFx0Ly8gXHRcdGNvbnNvbGUubG9nKCdoaW50IGZpbmlzaCcpO1xuXHRcdFx0XHRcdFx0XHQvLyBcdFx0cmVzb2x2ZSgpXG5cdFx0XHRcdFx0XHRcdC8vIFx0fSwgMjAwMClcblx0XHRcdFx0XHRcdFx0Ly8gfSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcblx0XHRcdFx0fSxcblx0XHRcdH1cblx0XHR9O1xuXHRcdGNvbnN0IGFmdGVyID0ge307XG5cdFx0Zm9yKGxldCBpID0gMCA7aSAgPCB0aGlzLl9oaW50c05vZGVMaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCB0ID0gdGhpcy5faGludHNOb2RlTGlzdFtpXS5ub2RlO1xuXHRcdFx0Y29uc3QgayA9IHRoaXMuX2hpbnRzTm9kZUxpc3RbaV0uYWZ0ZXI7XG5cdFx0XHRhZnRlcltrXT0ge1xuXHRcdFx0XHRhY3Rpb25zOiAoKSA9PiB7XG5cblx0XHRcdFx0XHRpZiAodC5pc1NwaW5lKSB7XG5cblx0XHRcdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gdC5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRza2VsZXRvbi5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldEFuaW1hdGlvbigwLCAnZW5sYXJnZScsIGZhbHNlKTtcblx0XHRcdFx0XHRcdH0sIDEpO1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQvLyBza2VsZXRvbi5hbmltYXRpb24gPSBza2VsZXRvbi5hbmltYXRpb25OYW1lc1swXTtcblxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdGNvbnN0IGRyYWdvbkRpc3BsYXkgPSB0LmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpO1xuXHRcdFx0XHRcdFx0ZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdlbmxhcmdlJywgMSk7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhkcmFnb25EaXNwbGF5Ll9hcm1hdHVyZUtleSwgJ2VubGFyZ2UnKVxuXHRcdFx0XHRcdFx0ZHJhZ29uRGlzcGxheS5hZGRFdmVudExpc3RlbmVyKGRyYWdvbkJvbmVzLkV2ZW50T2JqZWN0LkNPTVBMRVRFLCAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETyDov5nph4zlhpnop6blj5Hkuovku7Zcblx0XHRcdFx0XHRcdFx0Ly8gZXZlbnQubmFtZeS4uuS6i+S7tuWQjeensFxuXHRcdFx0XHRcdFx0XHQvLyBldmVudC5hcm1hdHVyZS5hbmltYXRpb24ucGxheSgnbm9ybWFsJywgMCk7XG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV2ZW50LmFuaW1hdGlvblN0YXRlLm5hbWUsIGRyYWdvbkRpc3BsYXkuX2FybWF0dXJlS2V5LCAnZW5kJylcblx0XHRcdFx0XHRcdH0sIHRoaXMpO1xuXHRcdFx0XHRcdH1cblxuXG5cblx0XHRcdFx0XHQvLyBjb25zdCBkcmFnb25EaXNwbGF5ID0gdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHQvLyBkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24oJ2VubGFyZ2UnLCAxKTtcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkcmFnb25EaXNwbGF5Ll9hcm1hdHVyZUtleSwgJ2VubGFyZ2UnKVxuXHRcdFx0XHRcdC8vIGRyYWdvbkRpc3BsYXkuYWRkRXZlbnRMaXN0ZW5lcihkcmFnb25Cb25lcy5FdmVudE9iamVjdC5DT01QTEVURSwgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0Ly8gXHQvL1RPRE8g6L+Z6YeM5YaZ6Kem5Y+R5LqL5Lu2XG5cdFx0XHRcdFx0Ly8gXHQvL2V2ZW50Lm5hbWXkuLrkuovku7blkI3np7Bcblx0XHRcdFx0XHQvLyBcdGV2ZW50LmFybWF0dXJlLmFuaW1hdGlvbi5wbGF5KCdub3JtYWwnLCAwKTtcblx0XHRcdFx0XHQvLyBcdGNvbnNvbGUubG9nKGV2ZW50LmFuaW1hdGlvblN0YXRlLm5hbWUsIGRyYWdvbkRpc3BsYXkuX2FybWF0dXJlS2V5LCAnZW5kJylcblx0XHRcdFx0XHQvLyB9LCB0aGlzKTtcblx0XHRcdFx0fSBcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHRoaXMuZGF0YS5iZWdpbl9zZXBfdGltZSkge1xuXHRcdFx0Y29uc3QgdCA9ICt0aGlzLmRhdGEuYmVnaW5fc2VwX3RpbWUgKiAxMDAwO1xuXHRcdFx0YWZ0ZXJbdF0gPSB7XG5cdFx0XHRcdGFjdGlvbnM6ICgpID0+IHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2FtZSBiZWdpbiAyJyk7XG5cblx0XHRcdFx0XHRmb3IobGV0IGkgPSAwIDtpICA8IHRoaXMuX2FsbEFuaW1hdGlvbk5vZGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB0ID0gdGhpcy5fYWxsQW5pbWF0aW9uTm9kZXNbaV07XG5cdFx0XHRcdFx0XHRpZiAodC5pc1NwaW5lKSB7XG5cblx0XHRcdFx0XHRcdFx0Y29uc3Qgc2tlbGV0b24gPSB0LmdldENvbXBvbmVudChzcC5Ta2VsZXRvbik7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdza2VsZXRvbjogJywgc2tlbGV0b24pO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0c2tlbGV0b24uc2V0VG9TZXR1cFBvc2UoKTtcblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0c2tlbGV0b24uc2V0QW5pbWF0aW9uKDAsICdub3JtYWwnLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0fSwgMSk7XG5cdFx0XHRcdFx0XHRcdFxuXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdza2VsZXRvbiAyMjogJywgc2tlbGV0b24pO1xuXG5cdFx0XHRcdFx0XHRcdC8vIHNrZWxldG9uLmFuaW1hdGlvbiA9IHNrZWxldG9uLmFuaW1hdGlvbk5hbWVzWzBdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHRjb25zdCBkcmFnb25EaXNwbGF5ID0gdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdFx0ZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdub3JtYWwnLCAwKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdFx0c3RhdGUuc3RhdGVzLmJlZ2luLmFmdGVyID0gYWZ0ZXI7XG5cblxuXG5cdFx0Y29uc3QgZ2FtZU1hY2hpbmUgPSBjcmVhdGVNYWNoaW5lKHN0YXRlKTtcblx0XHR3aW5kb3cuZ2FtZU1hY2hpbmUgPSBnYW1lTWFjaGluZTtcblx0XHR0aGlzLmdhbWVNYWNoaW5lU2VydmljZSA9IGludGVycHJldChnYW1lTWFjaGluZSkub25UcmFuc2l0aW9uKChzdGF0ZSkgPT4ge1xuXHRcdC8vIGNvbnNvbGUubG9nKDEsIHN0YXRlLnZhbHVlLCBzdGF0ZS5jb250ZXh0KTtcblx0XHR9KTtcblx0XHR0aGlzLmdhbWVNYWNoaW5lU2VydmljZS5zdGFydCgpO1xuXHRcdGlmICh3aW5kb3cuZ2FtZU1hY2hpbmVTZXJ2aWNlKSB7XG5cdFx0XHR3aW5kb3cuZ2FtZU1hY2hpbmVTZXJ2aWNlID0gZ2FtZU1hY2hpbmVTZXJ2aWNlO1xuXHRcdH1cblxuXG5cdH0sXG5cblx0XG5cblxuXG5cdC8vIOeUn+WRveWRqOacnyBzdGFydFxuXHRzdGFydCgpIHtcblx0XHRsZXQgZ2V0RGF0YSA9IHRoaXMuZ2V0RGF0YS5iaW5kKHRoaXMpO1xuXHRcdGlmICh3aW5kb3cgJiYgd2luZG93LmNvdXJzZXdhcmUpIHtcblx0XHRcdGdldERhdGEgPSB3aW5kb3cuY291cnNld2FyZS5nZXREYXRhO1xuXHRcdH1cblxuXHRcdGdldERhdGEoKGRhdGEpID0+IHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdkYXRhOicsIGRhdGEpO1xuXHRcdFx0dGhpcy5kYXRhID0gZGF0YSB8fCB0aGlzLmdldERlZmF1bHREYXRhKCk7XG5cdFx0XHR0aGlzLmRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpXG5cdFx0XHRcblx0XHRcdHRoaXMucHJlbG9hZEl0ZW0oKVxuXHRcdH0pO1xuXHRcdHdpbmRvdy5haXIgPSB3aW5kb3cuYWlyIHx8IHt9XG5cdFx0aWYgKHdpbmRvdy5haXIpIHtcblx0XHRcdHdpbmRvdy5haXIub3Ntb0ZpbmdlclJlYWRDYWxsYmFjayA9IChyZXN1bHQpID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLmdhbWVNYWNoaW5lU2VydmljZSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBjb25zdCBzdCA9IHRoaXMuZ2FtZU1hY2hpbmVTZXJ2aWNlLnN0YXRlLnZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgPT0gJ09iamVjdCcgXG5cdFx0XHRcdC8vICYmIHRoaXMuZ2FtZU1hY2hpbmVTZXJ2aWNlLnN0YXRlLnZhbHVlWydwbGF5aW5nJ11cblx0XHRcdFx0Ly8gJiYgdGhpcy5nYW1lTWFjaGluZVNlcnZpY2Uuc3RhdGUudmFsdWVbJ3BsYXlpbmcnXS5jb25zdHJ1Y3Rvci5uYW1lID09ICdPYmplY3QnXG5cdFx0XHRcdC8vICYmIHRoaXMuZ2FtZU1hY2hpbmVTZXJ2aWNlLnN0YXRlLnZhbHVlWydwbGF5aW5nJ11bJ3BsYXknXVxuXHRcdFx0XHQvLyAmJiB0aGlzLmdhbWVNYWNoaW5lU2VydmljZS5zdGF0ZS52YWx1ZVsncGxheWluZyddWydwbGF5J10gPT0gJ2Fuc3dlcidcblx0XHRcdFx0Ly8gaWYgKHN0KSB7XG5cdFx0XHRcdC8vIH1cblx0XHRcdFx0Y29uc3QgcmVzdWx0T2JqID0gSlNPTi5wYXJzZShyZXN1bHQpO1xuXHRcdFx0XHRjb25zb2xlLmxvZygnW0dlbmlzZSBKU10gJysgSlNPTi5zdHJpbmdpZnkocmVzdWx0T2JqLmZpbmdlcl9wb3NfaW5fcGFnZSkpXG5cdFx0XHRcdGNvbnN0IHAgPSByZXN1bHRPYmouZmluZ2VyX3Bvc19pbl9wYWdlO1xuXHRcdFx0XHRpZiAocC54ID09IC0xIHx8IHAueSA9PSAtMSkge1xuXHRcdFx0XHRcdHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5wb3MgPSBudWxsO1xuXHRcdFx0XHRcdHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5kaXJ0eSA9IGZhbHNlO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24gPSB7XG5cdFx0XHRcdFx0cG9zOntcblx0XHRcdFx0XHRcdHg6IHAueCxcblx0XHRcdFx0XHRcdHk6IHAueVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZGlydHk6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmRlYnVnUG9pbnRlcihwLngsIHAueSlcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5pc0RlYnVnID0gZmFsc2U7XG5cdFx0XG5cdH0sXG5cdGNoZWNrSW5SZWdpb24ocikge1xuXHRcdGlmICghdGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uICYmICF0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24ucG9zKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0Y29uc3QgcCA9IHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbiA/IHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5wb3MgfHwge3g6MCwgeTowfSA6IHt4OjAsIHk6MH07XG5cblx0XHRjb25zb2xlLmxvZygnfnA6ICcsIHApO1xuXHRcdGNvbnNvbGUubG9nKCd+cjogJywgcik7XG5cblx0XHRjb25zdCB3ID0gcC54ID4gci54ICYmIHAueCA8IChyLnggKyByLndpZHRoKTtcblx0XHRjb25zdCBoID0gcC55ID4gci55ICYmIHAueSA8IChyLnkgKyByLmhlaWdodCk7XG5cdFx0cmV0dXJuIHcgJiYgaDtcblxuXHR9LFxuXG5cdGdldERhdGEoZnVuYykge1xuXHRcdGlmICh3aW5kb3cgJiYgd2luZG93LmNvdXJzZXdhcmUpIHtcblx0XHRcdHdpbmRvdy5jb3Vyc2V3YXJlLmdldERhdGEoZnVuYywgJ3NjZW5lJyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgbWlkZGxlTGF5ZXIgPSBjYy5maW5kKCdtaWRkbGVMYXllcicpO1xuXHRcdGlmIChtaWRkbGVMYXllcikge1xuXHRcdFx0Y29uc3QgbWlkZGxlTGF5ZXJDb21wb25lbnQgPSBtaWRkbGVMYXllci5nZXRDb21wb25lbnQoJ21pZGRsZUxheWVyJyk7XG5cdFx0XHRtaWRkbGVMYXllckNvbXBvbmVudC5nZXREYXRhKGZ1bmMpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGZ1bmModGhpcy5nZXREZWZhdWx0RGF0YSgpKTtcblx0fSxcblxuXHRnZXREZWZhdWx0RGF0YSgpIHtcblx0XHRyZXR1cm4ge1wiYmVnaW5fYXVkaW9cIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS85YmU0NmM5YWRiNTQwZWQ4YTYwNzYzZjFlNjU3Y2NiNy5tcDNcIixcImJlZ2luX3NlcF90aW1lXCI6NjYsXCJndWlkZV9hdWRpb1wiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzk1MjNjOGVkNDVmYWVlNjg2MzYzZGQxNTdiMGQ3NDI2Lm1wM1wiLFwicGxheWluZ19hdWRpb1wiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2Q2YTk1MzA1MmE2ZjgwNTQ5NzMwY2I0MzA3YzU1NzE5Lm1wM1wiLFwicmlnaHRfYXVkaW9cIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS80Mzc5MWZjNDE4ZTY2NmRmNWU5ZWMxYjdiZjkzNjQwOS5tcDNcIixcIndyb25nX2F1ZGlvXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vN2RkODVmMDI1YTEzMmMyZWVmOGRhZWUzOGQ5MDAyODcubXAzXCIsXCJ3cm9uZ19hdWRpbzFcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9hNzZhZmIwNmFmMDc5OWJmNTM4ZTM4ZjlmODBhMjI2MS5tcDNcIixcIndyb25nX2F1ZGlvMlwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2RhZWU4OGI2ZjJlYWRkNzhiNjA0MzZlZWRmZmNhZTA4Lm1wM1wiLFwiZW5kX2F1ZGlvXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vOWMxZTg3YjNjMTg0YjA2ZTE0ZTQ0YmIwNThiOTgwNGUubXAzXCIsXCJiZ0l0ZW1cIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8xNmI2ZGFjZDhlNmMxY2U2ZGExNmY1MDBhNjZiMzY2Yi5qcGdcIixcInJlY3RcIjp7XCJ4XCI6MzE5LjY4LFwieVwiOjAsXCJ3aWR0aFwiOjI1Ny42NCxcImhlaWdodFwiOjM0Mn19LFwiaG90Wm9uZUl0ZW1BcnJcIjpbe1wiaWRcIjpcIjE2NTA1NDQ4MDc4NzdcIixcImluZGV4XCI6MCxcIml0ZW1UeXBlXCI6XCJwaWNcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3Ni42NTIwNzg3NzQ2MTcwMn0sXCJnSWR4XCI6XCIxXCIsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzY2YzdjMDg0N2MzM2Y3Zjk1Y2IwMDM1ZmUxNGM0NDA1Lmpzb25cIixcIm5hbWVcIjpcIm1vbmtleV9za2UuanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vOThhODI3MmNkMmQ5NzA0N2IwOTBmZjEwZTk0OGI5NzguanNvblwiLFwibmFtZVwiOlwibW9ua2V5X3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2MzNWNlZDQwOGFkNjhhNTJjNGVjNTM3NTM3M2QzNjI3LnBuZ1wiLFwibmFtZVwiOlwibW9ua2V5X3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjEyOC44MyxcInlcIjoxNzEsXCJ3aWR0aFwiOjAsXCJoZWlnaHRcIjowfX0se1wiaWRcIjpcIjE2NTA1NDYwNzkwMDBcIixcImluZGV4XCI6MSxcImF1ZGlvX3VybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2Y5ZWRjODRhNjY5Njg4YzVhYmRkZDU1ZTJhYWIwMTVkLm1wM1wiLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIwXCIsXCJsYWJlbFRleHRcIjpcIjIxLjNcIixcInBvc1hcIjo2OTIuNDEyNzUwMDE5MzU5OCxcInBvc1lcIjoyMTguMTQ2OTU5NTkxODU1NTYsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2UzYzY3YTI1ZGQzYmIzNGZlMTEzZTEyNmU2ZTFjYzgxLmpzb25cIixcIm5hbWVcIjpcIm94X3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS84MWQ0ODdiZjMxZDNhNGQwZjI1ZjQ0YzE4NGJhOTIzMy5qc29uXCIsXCJuYW1lXCI6XCJveF90ZXguanNvblwifSxcInRleFBuZ0RhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9lMTk5MzkyYjUyYTczNWY2ZTM3YTY4MTVlYzNiYjEwZS5wbmdcIixcIm5hbWVcIjpcIm94X3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjE1OS4zNCxcInlcIjoxMzguNjYsXCJ3aWR0aFwiOjM4LjgzLFwiaGVpZ2h0XCI6MzguODN9fSx7XCJpZFwiOlwiMTY1MDU0NjIzMjE4OVwiLFwiaW5kZXhcIjoyLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIxXCIsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzBhM2VhOTNjNjJmZjQwODc4NTllZDU4NzAyMGM1M2I1Lmpzb25cIixcIm5hbWVcIjpcImNhcl9za2UuanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNjAwMGU0ZmJiYjk1ZjU0NWFmYTU0NTZjNjRkOGM3ZDEuanNvblwiLFwibmFtZVwiOlwiY2FyX3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzc1ZTk5NzJjMTVkMmE2N2RlZWRmNjBkNDQ4ZmQ0ZTY5LnBuZ1wiLFwibmFtZVwiOlwiY2FyX3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjM2LjQsXCJ5XCI6NzguNTYsXCJ3aWR0aFwiOjE4NC44NyxcImhlaWdodFwiOjE4NC44N319LHtcImlkXCI6XCIxNjUwNTQ2MzIxMTI3XCIsXCJpbmRleFwiOjMsXCJpdGVtVHlwZVwiOlwicmVjdFwiLFwiZm9udFNjYWxlXCI6MC43MDA3ODEyNSxcImltZ1NjYWxlXCI6MSxcImltZ1NpemVXXCI6MCxcImltZ1NpemVIXCI6MCxcIm1hcFNjYWxlXCI6MC43MDA3ODEyNSxcImRyYWdEb3RcIjp7XCJ4XCI6NDQ4LjUsXCJ5XCI6MTcwLjU0OTg0NTgzNzYxNTY2fSxcImdJZHhcIjpcIjFcIixcInNrZUpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZDRjMWUxYWJjZjNkOGY1NDE1NzQ3ZmQyNTk5YjhhOGMuanNvblwiLFwibmFtZVwiOlwiQ2hhaXJfc2tlLmpzb25cIn0sXCJ0ZXhKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzFkNzI1NGViN2ZhMzAwOGU4MTc4MzQ3YmI5NDRjZGNiLmpzb25cIixcIm5hbWVcIjpcIkNoYWlyX3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzQ4ZTg1ZThmZjM4NGVlZDcyZGZlODY1ZmM5ODFlMThjLnBuZ1wiLFwibmFtZVwiOlwiQ2hhaXJfdGV4LnBuZ1wifSxcInJlY3RcIjp7XCJ4XCI6MzYuNCxcInlcIjo3OC41NixcIndpZHRoXCI6MTg0Ljg3LFwiaGVpZ2h0XCI6MTg0Ljg3fX0se1wiaWRcIjpcIjE2NTA1NDYzMzUyNDBcIixcImluZGV4XCI6NCxcImF1ZGlvX3VybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzYxODJkNDZiYWQwOWZjY2I4OTM0MjE3ZDMzNTU3MjA0Lm1wM1wiLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIwXCIsXCJsYWJlbFRleHRcIjpcIjUzXCIsXCJwb3NYXCI6NDUyLjUsXCJwb3NZXCI6MTI5LFwic2tlSnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9iNDYyZDgwYzIxYWE3NTk5NWRkOTlmMGY0M2NjZjFlNi5qc29uXCIsXCJuYW1lXCI6XCJxdWlsdF9za2UuanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vODY2YzllMjk4Nzg3MDk0N2ZjNjNiY2UxMDhlZjE1N2EuanNvblwiLFwibmFtZVwiOlwicXVpbHRfdGV4Lmpzb25cIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZDk1MmMzN2Y0MGMzY2YwN2UwMjRlZGZkNDQxNjQyM2UucG5nXCIsXCJuYW1lXCI6XCJxdWlsdF90ZXgucG5nXCJ9LFwicmVjdFwiOntcInhcIjo3MS45OSxcInlcIjoxMDAuNzUsXCJ3aWR0aFwiOjUwLjgzLFwiaGVpZ2h0XCI6MzYuOTd9fSx7XCJpZFwiOlwiMTY1MDU0NjY0NDMzM1wiLFwiaW5kZXhcIjo1LFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIxXCIsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzZiOGExYTdiMGZkMjM2ODZlYTYwNDY1Mjc5Y2Q0ZGEwLmpzb25cIixcIm5hbWVcIjpcInJvYm90X3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zMWE3NGVkOTVmZTQ4YWRhYjAwNzAyNjc1ODExYzNhOC5qc29uXCIsXCJuYW1lXCI6XCJyb2JvdF90ZXguanNvblwifSxcInRleFBuZ0RhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9lNTcwNTI1MzdkODkzNTZiMGE3OWQ4Y2I3Nzk4MDIxOS5wbmdcIixcIm5hbWVcIjpcInJvYm90X3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjM2LjQsXCJ5XCI6NzguNTYsXCJ3aWR0aFwiOjE4NC44NyxcImhlaWdodFwiOjE4NC44N319LHtcImlkXCI6XCIxNjUwNTQ2NjU4Njk3XCIsXCJpbmRleFwiOjYsXCJpdGVtVHlwZVwiOlwicmVjdFwiLFwiZm9udFNjYWxlXCI6MC43MDA3ODEyNSxcImltZ1NjYWxlXCI6MSxcImltZ1NpemVXXCI6MCxcImltZ1NpemVIXCI6MCxcIm1hcFNjYWxlXCI6MC43MDA3ODEyNSxcImRyYWdEb3RcIjp7XCJ4XCI6NDQ4LjUsXCJ5XCI6MTcwLjU0OTg0NTgzNzYxNTY2fSxcImdJZHhcIjpcIjFcIixcInNrZUpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vYmYzNjE2MDYwNDYwNDM5ZWViM2ZkNTIyNzM3MGUxNWEuanNvblwiLFwibmFtZVwiOlwicGFuZGFfc2tlLmpzb25cIn0sXCJ0ZXhKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzJkYWZlYjI1Yzk3M2M5MTAwMzVmZjdlZDFhNmE2MzM0Lmpzb25cIixcIm5hbWVcIjpcInBhbmRhX3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzc1ZDkwYjA1MzQ1ZmE0NzAyODVhYzQ4OGNiMjA1Y2ZkLnBuZ1wiLFwibmFtZVwiOlwicGFuZGFfdGV4LnBuZ1wifSxcInJlY3RcIjp7XCJ4XCI6MzYuNCxcInlcIjo3OC41NixcIndpZHRoXCI6MTg0Ljg3LFwiaGVpZ2h0XCI6MTg0Ljg3fX0se1wiaWRcIjpcIjE2NTA1NDY2NzI0NDhcIixcImluZGV4XCI6NyxcIml0ZW1UeXBlXCI6XCJyZWN0XCIsXCJmb250U2NhbGVcIjowLjcwMDc4MTI1LFwiaW1nU2NhbGVcIjoxLFwiaW1nU2l6ZVdcIjowLFwiaW1nU2l6ZUhcIjowLFwibWFwU2NhbGVcIjowLjcwMDc4MTI1LFwiZHJhZ0RvdFwiOntcInhcIjo0NDguNSxcInlcIjoxNzAuNTQ5ODQ1ODM3NjE1NjZ9LFwiZ0lkeFwiOlwiMVwiLFwic2tlSnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS81ZmVmZjgxMWIwMTE3ZGQ4ZTY3OTczMDcyZTYwZDMxMC5qc29uXCIsXCJuYW1lXCI6XCJxdWVlbl8xX3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9iYjU4NTZiOTJiMDljNWZlN2ExZGEwMGJiNjgxMzRjYS5qc29uXCIsXCJuYW1lXCI6XCJxdWVlbl8xX3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2Y0ZTVhMTM4YjA4NmVmM2RjZmE1NzQzMjU0M2I2NmU5LnBuZ1wiLFwibmFtZVwiOlwicXVlZW5fMV90ZXgucG5nXCJ9LFwiYW5pbVR5cGVcIjpcImRyYWdvbkJvbmVcIixcInJlY3RcIjp7XCJ4XCI6MzYuNCxcInlcIjo3OC41NixcIndpZHRoXCI6MTg0Ljg3LFwiaGVpZ2h0XCI6MTg0Ljg3fX0se1wiaWRcIjpcIjE2NTA1NDY2ODcwNjlcIixcImluZGV4XCI6OCxcImF1ZGlvX3VybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzMwMTg1OGRmN2IwN2U2NjE0MjZhMDA2YWNiMjYwNTljLm1wM1wiLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIwXCIsXCJsYWJlbFRleHRcIjpcIjQyLjVcIixcInBvc1hcIjo1MTIuMzg4MzUyNDYyOTgzNCxcInBvc1lcIjoyNTkuODM2MTcxMjU4NDksXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2YzYThlZmNkMTg1MGVlOGE2Y2VlODlhMThlODZkYzRhLmpzb25cIixcIm5hbWVcIjpcIm1pbGtfc2tlLmpzb25cIn0sXCJ0ZXhKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzczYjA1ZjE5ZDQxOWJkM2FjMTdjMmI5MmRhYjg4NDIzLmpzb25cIixcIm5hbWVcIjpcIm1pbGtfdGV4Lmpzb25cIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZTM4Mzc1ZGE0NmY4NWEyMzIwMmQ1Y2JjODEyZDYyZTQucG5nXCIsXCJuYW1lXCI6XCJtaWxrX3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjM3LjcyLFwieVwiOjE2OC4xLFwid2lkdGhcIjoyMS4xNyxcImhlaWdodFwiOjQwLjM0fX0se1wiaWRcIjpcIjE2NTA1NDcwNjA0OTBcIixcImluZGV4XCI6OSxcImF1ZGlvX3VybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzA1ZTViMjlhZWZmYTRlZjk0YmNjNWIyMzE2N2FlYzkwLm1wM1wiLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIwXCIsXCJsYWJlbFRleHRcIjpcIjQ3LjdcIixcInBvc1hcIjo0ODMuMjIxMzU3MzQwMDY3MzYsXCJwb3NZXCI6MjQ1LjM4MDM5NDA3MDc2NTA1LFwic2tlSnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS85OWE2ZTZkOTM2MWVjYTdlNTFlZDM0Y2EyZTBmZDAxNy5qc29uXCIsXCJuYW1lXCI6XCJiaXJkX3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS82YTM3OWRkYmU2ZGYxODA2MzY4YzQzYzhlZTgyMzMyZC5qc29uXCIsXCJuYW1lXCI6XCJiaXJkX3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2NmMDRjNjMxMDRkODk1MTE5MDI1Nzg5NDQwNjFmOTgwLnBuZ1wiLFwibmFtZVwiOlwiYmlyZF90ZXgucG5nXCJ9LFwicmVjdFwiOntcInhcIjoxNy45MSxcInlcIjoxNDAuODMsXCJ3aWR0aFwiOjE4LjUyLFwiaGVpZ2h0XCI6NzMuOTV9fSx7XCJpZFwiOlwiMTY1MDU0NzM3Mzg2OVwiLFwiaW5kZXhcIjoxMCxcIml0ZW1UeXBlXCI6XCJyZWN0XCIsXCJmb250U2NhbGVcIjowLjcwMDc4MTI1LFwiaW1nU2NhbGVcIjoxLFwiaW1nU2l6ZVdcIjowLFwiaW1nU2l6ZUhcIjowLFwibWFwU2NhbGVcIjowLjcwMDc4MTI1LFwiZHJhZ0RvdFwiOntcInhcIjo0NDguNSxcInlcIjoxNzAuNTQ5ODQ1ODM3NjE1NjZ9LFwiZ0lkeFwiOlwiMVwiLFwibGFiZWxUZXh0XCI6XCI2MFwiLFwicG9zWFwiOjQyMC41LFwicG9zWVwiOjI5NSxcInNrZUpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vN2ViYzI4ZjNmMzM5YjE2Y2E0OGQyMGYyYTNlYjQ0YzEuanNvblwiLFwibmFtZVwiOlwiYWxsaWdhdG9yX3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9iMDRlODIwNmZkMjE3YmQyMmRjZGFjMTAwODM5MzMxNy5qc29uXCIsXCJuYW1lXCI6XCJhbGxpZ2F0b3JfdGV4Lmpzb25cIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vYjM5OTBkOTQ2MTJiZDNkNmUyNWNmMjAwZjg1ZTQzMzQucG5nXCIsXCJuYW1lXCI6XCJhbGxpZ2F0b3JfdGV4LnBuZ1wifSxcInJlY3RcIjp7XCJ4XCI6MTYuMDYsXCJ5XCI6MjI5LjI0LFwid2lkdGhcIjoxMDMuNTIsXCJoZWlnaHRcIjo4Ni44OX19LHtcImlkXCI6XCIxNjUwNTQ3NDgyMzk4XCIsXCJpbmRleFwiOjExLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIxXCIsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2ExOWYyZWQ3YzI5N2M3MGM2MzllNTRlOTY5ZDY0NTkzLmpzb25cIixcIm5hbWVcIjpcInJhYmJpdF9za2UuanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNGI0ZjgxODljZjc5ZmFkZDdlNjUzM2FkODRkYjk2YmUuanNvblwiLFwibmFtZVwiOlwicmFiYml0X3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzhmOTUzYzg2MWVhYzk0ZTRlMjJhOGU0ZWMzZWI1NmI1LnBuZ1wiLFwibmFtZVwiOlwicmFiYml0X3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjM2LjQsXCJ5XCI6NzguNTYsXCJ3aWR0aFwiOjE4NC44NyxcImhlaWdodFwiOjE4NC44N319LHtcImlkXCI6XCIxNjUwNTQ3NDk2MjMyXCIsXCJpbmRleFwiOjEyLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIxXCIsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzg5ZTBmYzYwODVjMjk0ODY2MTQyODAzYjRmZjI2N2JhLmpzb25cIixcIm5hbWVcIjpcIktpbmdfc2tlLmpzb25cIn0sXCJ0ZXhKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2Q2Y2ZkMmQ5Y2QyY2Q5YWZmMDlhYjdmMDNlMjg3NDIxLmpzb25cIixcIm5hbWVcIjpcIktpbmdfdGV4Lmpzb25cIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vOGMwMmMzNTYxYTJlZWEwNDIzY2IxMTAyMjAwZTc2ZjkucG5nXCIsXCJuYW1lXCI6XCJLaW5nX3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjM2LjQsXCJ5XCI6NzguNTYsXCJ3aWR0aFwiOjE4NC44NyxcImhlaWdodFwiOjE4NC44N319LHtcImlkXCI6XCIxNjUwNTQ3NTEwNjQ4XCIsXCJpbmRleFwiOjEzLFwiYXVkaW9fdXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNzE3ZWU5NzEzYjE4ZDMyZDM4ZWUwODljMGFiYzg1ZWEubXAzXCIsXCJpdGVtVHlwZVwiOlwicmVjdFwiLFwiZm9udFNjYWxlXCI6MC43MDA3ODEyNSxcImltZ1NjYWxlXCI6MSxcImltZ1NpemVXXCI6MCxcImltZ1NpemVIXCI6MCxcIm1hcFNjYWxlXCI6MC43MDA3ODEyNSxcImRyYWdEb3RcIjp7XCJ4XCI6NDQ4LjUsXCJ5XCI6MTcwLjU0OTg0NTgzNzYxNTY2fSxcImdJZHhcIjpcIjBcIixcImxhYmVsVGV4dFwiOlwiMTAuMlwiLFwicG9zWFwiOjY0MS42NjgwMTM0OTUxOTQ0LFwicG9zWVwiOjI4OC45MzY3MjcwMjU0MTI1NSxcInNrZUpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2I3MTEzZWJkZWRjYWU1NGJlNmQwYjk2MzM4NzViODguanNvblwiLFwibmFtZVwiOlwibmV0X3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9mYzgxMDc2MmYxZjIwMjU1ODVlNzIyZTQzZTk0MTM3Yi5qc29uXCIsXCJuYW1lXCI6XCJuZXRfdGV4Lmpzb25cIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNWM5MDgyMGRhNGY1NTkyODBmZWU0NTc5ZThkYjJkYmMucG5nXCIsXCJuYW1lXCI6XCJuZXRfdGV4LnBuZ1wifSxcInJlY3RcIjp7XCJ4XCI6MTIzLjAzLFwieVwiOjE4My4wMixcIndpZHRoXCI6MzcuOSxcImhlaWdodFwiOjUyLjY4fX0se1wiaWRcIjpcIjE2NTA1NDc1NTUwMThcIixcImluZGV4XCI6MTQsXCJpdGVtVHlwZVwiOlwicmVjdFwiLFwiZm9udFNjYWxlXCI6MC43MDA3ODEyNSxcImltZ1NjYWxlXCI6MSxcImltZ1NpemVXXCI6MCxcImltZ1NpemVIXCI6MCxcIm1hcFNjYWxlXCI6MC43MDA3ODEyNSxcImRyYWdEb3RcIjp7XCJ4XCI6NDQ4LjUsXCJ5XCI6MTcwLjU0OTg0NTgzNzYxNTY2fSxcImdJZHhcIjpcIjFcIixcInNrZUpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vMGE1YzhkZjVhMjNhY2E3YTc1NDBiODczNDBjNzYwOGYuanNvblwiLFwibmFtZVwiOlwib3N0cmljaF9za2UuanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vMjQ3ODU3M2M5MWQxYTgzZmEwMzhlN2Y2YTlkYjhhODUuanNvblwiLFwibmFtZVwiOlwib3N0cmljaF90ZXguanNvblwifSxcInRleFBuZ0RhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS80NjE5YWNlNjdlNTc3MGUxZmQ3ZmMzZmY3NmU3MjYzZS5wbmdcIixcIm5hbWVcIjpcIm9zdHJpY2hfdGV4LnBuZ1wifSxcInJlY3RcIjp7XCJ4XCI6MzYuNCxcInlcIjo3OC41NixcIndpZHRoXCI6MTg0Ljg3LFwiaGVpZ2h0XCI6MTg0Ljg3fX0se1wiaWRcIjpcIjE2NTA1NDc1NzMzMDVcIixcImluZGV4XCI6MTUsXCJhdWRpb191cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9iN2JjMTYxYzNhM2VlMTQzYTUzMDU4NjkxYWJmNGZhOS5tcDNcIixcIml0ZW1UeXBlXCI6XCJyZWN0XCIsXCJmb250U2NhbGVcIjowLjcwMDc4MTI1LFwiaW1nU2NhbGVcIjoxLFwiaW1nU2l6ZVdcIjowLFwiaW1nU2l6ZUhcIjowLFwibWFwU2NhbGVcIjowLjcwMDc4MTI1LFwiZHJhZ0RvdFwiOntcInhcIjo0NDguNSxcInlcIjoxNzAuNTQ5ODQ1ODM3NjE1NjZ9LFwiZ0lkeFwiOlwiMFwiLFwibGFiZWxUZXh0XCI6XCIxNS45XCIsXCJwb3NYXCI6NjcwLjgxMTk4Mzk3NzI3NTQsXCJwb3NZXCI6MTM3Ljg3OTQwODcwMjAxNjk3LFwic2tlSnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS85MWU4Y2EwM2QxZGY4OWU0ZWMyNDA0NDIxZDRjNjkyZi5qc29uXCIsXCJuYW1lXCI6XCJkdXJhem5vX3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zMmQyNTliMDE5NDM3MDYyNWY4ZmU5NGIxZGRjMGE4NS5qc29uXCIsXCJuYW1lXCI6XCJkdXJhem5vX3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzhlZWY1NmIyMGUyMjFhMzZmY2UxZDY3MjE5OTg1OWZmLnBuZ1wiLFwibmFtZVwiOlwiZHVyYXpub190ZXgucG5nXCJ9LFwicmVjdFwiOntcInhcIjoxNDYuOTIsXCJ5XCI6ODMuNzMsXCJ3aWR0aFwiOjMyLjM0LFwiaGVpZ2h0XCI6MzIuMzR9fV19XG5cdFx0Ly8gcmV0dXJuICB7XCJiZWdpbl9hdWRpb1wiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zZDMwN2EwMjY2M2UxY2Q2NjdiN2M5NTEzNDBlYzk4Yi5tcDNcIixcImJlZ2luX3NlcF90aW1lXCI6MSxcImd1aWRlX2F1ZGlvXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzNkMzA3YTAyNjYzZTFjZDY2N2I3Yzk1MTM0MGVjOThiLm1wM1wiLFwicGxheWluZ19hdWRpb1wiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zZDMwN2EwMjY2M2UxY2Q2NjdiN2M5NTEzNDBlYzk4Yi5tcDNcIixcInJpZ2h0X2F1ZGlvXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzNkMzA3YTAyNjYzZTFjZDY2N2I3Yzk1MTM0MGVjOThiLm1wM1wiLFwid3JvbmdfYXVkaW9cIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2QzMDdhMDI2NjNlMWNkNjY3YjdjOTUxMzQwZWM5OGIubXAzXCIsXCJ3cm9uZ19hdWRpbzFcIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2QzMDdhMDI2NjNlMWNkNjY3YjdjOTUxMzQwZWM5OGIubXAzXCIsXCJ3cm9uZ19hdWRpbzJcIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2QzMDdhMDI2NjNlMWNkNjY3YjdjOTUxMzQwZWM5OGIubXAzXCIsXCJlbmRfYXVkaW9cIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2QzMDdhMDI2NjNlMWNkNjY3YjdjOTUxMzQwZWM5OGIubXAzXCIsXCJiZ0l0ZW1cIjp7XCJ1cmxcIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vODRlYzZlZGMyMGJjZWFhYTlkYmU4MjQwOTJiNjg2MGQucG5nXCIsXCJyZWN0XCI6e1wieFwiOjczNi45NSxcInlcIjowLFwid2lkdGhcIjo1OTkuMDksXCJoZWlnaHRcIjo3NzV9fSxcImhvdFpvbmVJdGVtQXJyXCI6W3tcImlkXCI6XCIxNjU5MzMzNjQ1NTczXCIsXCJpbmRleFwiOjAsXCJhdWRpb191cmxcIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vNWExYTI2NzA4NDViZmU3NjY2MmU4NmQ5YTNhNjlmODEubXAzXCIsXCJpdGVtVHlwZVwiOlwicmVjdFwiLFwiZm9udFNjYWxlXCI6MS42MTk1MzEyNSxcImltZ1NjYWxlXCI6MSxcImltZ1NpemVXXCI6MCxcImltZ1NpemVIXCI6MCxcIm1hcFNjYWxlXCI6MS42MTk1MzEyNSxcImRyYWdEb3RcIjp7XCJ4XCI6MTAzNi41LFwieVwiOjM4Ny41fSxcImdJZHhcIjpcIjFcIixcImxhYmVsVGV4dFwiOlwiMVwiLFwicG9zWFwiOjg4Ny41LFwicG9zWVwiOjE2NS41LFwic2tlSnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vMTMzYTFmNjA3MTllZDI2MjQ3ZTM1ZGMwMjJkODI4NjIuanNvblwiLFwibmFtZVwiOlwic3BpbmVib3ktcHJvLmpzb25cIn0sXCJ0ZXhKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9lMDk0NWI4MjY1ZWEzYjgwNTNhZmI4MTRjNmI4NDlkMy5hdGxhc1wiLFwibmFtZVwiOlwic3BpbmVib3ktcHJvLmF0bGFzXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS81MTc1NTNmNTAyMjQ5MTUxNDhmOWVmYzViNzU1Njc5OC5wbmdcIixcIm5hbWVcIjpcInNwaW5lYm95LXByby5wbmdcIn0sXCJhbmltVHlwZVwiOlwic3BpbmVcIixcInJlY3RcIjp7XCJ4XCI6NDguMDUsXCJ5XCI6NjUuNSxcIndpZHRoXCI6MjA1LFwiaGVpZ2h0XCI6MjAwfX0se1wiaWRcIjpcIjE2NTkzMzQwOTg5MzBcIixcImluZGV4XCI6MSxcImF1ZGlvX3VybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8xNmViMDZhNmJlYjllNGZhNzdjOWI1ZDJkNjQzYWIyOS5tcDNcIixcIml0ZW1UeXBlXCI6XCJyZWN0XCIsXCJmb250U2NhbGVcIjoxLjYxOTUzMTI1LFwiaW1nU2NhbGVcIjoxLFwiaW1nU2l6ZVdcIjowLFwiaW1nU2l6ZUhcIjowLFwibWFwU2NhbGVcIjoxLjYxOTUzMTI1LFwiZHJhZ0RvdFwiOntcInhcIjoxMDM2LjUsXCJ5XCI6Mzg3LjV9LFwiZ0lkeFwiOlwiMFwiLFwibGFiZWxUZXh0XCI6XCIxXCIsXCJwb3NYXCI6MTIxMi41LFwicG9zWVwiOjY0My41LFwic2tlSnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vNjc5ZmVkMjZkYWE0NjQ4MTlkNTUzZGU2MzMxYjM1NTIuanNvblwiLFwibmFtZVwiOlwiYWxpZW4tcHJvLmpzb25cIn0sXCJ0ZXhKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS82NWQ4MjE0YzZiNWM1ZDA0OTZlMTdhZGIwNDA4Mjc2YS5hdGxhc1wiLFwibmFtZVwiOlwiYWxpZW4tcHJvLmF0bGFzXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9hMzE5YjM3Mjg5OTIzOTMyNWI5MGJiNGVjMDdiNDk3MC5wbmdcIixcIm5hbWVcIjpcImFsaWVuLXByby5wbmdcIn0sXCJhbmltVHlwZVwiOlwic3BpbmVcIixcInJlY3RcIjp7XCJ4XCI6Mzc1LjU2LFwieVwiOjU0My41LFwid2lkdGhcIjoyMDAsXCJoZWlnaHRcIjoyMDB9fV19XG5cdFx0Ly8gcmV0dXJuIGRlZmF1bHREYXRhO1xuXHR9LFxuXG5cdHByZWxvYWRJdGVtKCkge1xuXHRcdHRoaXMuYWRkUHJlbG9hZEltYWdlKCk7XG5cdFx0dGhpcy5hZGRQcmVsb2FkQXVkaW8oKTtcblx0XHR0aGlzLmFkZFByZWxvYWRBbmltYSgpO1xuXHRcdHRoaXMucHJlbG9hZCgpO1xuXHR9LFxuXG5cblx0YWRkUHJlbG9hZEltYWdlKCkge1xuXG5cdFx0dGhpcy5faW1hZ2VSZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS5iZ0l0ZW0udXJsfSk7XG5cblx0XHRmb3IgKGNvbnN0IHEgb2YgdGhpcy5kYXRhLmhvdFpvbmVJdGVtQXJyKSB7XG5cdFx0XHRpZiAocS5nSWR4ID09JzAnKSB7XG5cdFx0XHRcdHRoaXMuX2ltYWdlUmVzTGlzdC5wdXNoKHsgdXJsOiBxLnRleFBuZ0RhdGEudXJsfSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChxLmdJZHggPT0nMScpIHtcblx0XHRcdFx0dGhpcy5faW1hZ2VSZXNMaXN0LnB1c2goeyB1cmw6IHEudGV4UG5nRGF0YS51cmwgfSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocS5nSWR4ID09JzInKSB7XG5cdFx0XHRcdHRoaXMuX2ltYWdlUmVzTGlzdC5wdXNoKHsgdXJsOiBxLnBpY191cmx9KTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdHByZXBhcmVBdWRpb0NsaXAodXJsLCBrZXkpIHtcblx0XHRpZiAodXJsKSB7XG5cdFx0XHRjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZSh1cmwsIChlcnIsIGF1ZGlvQ2xpcCkgPT4ge1xuXHRcdFx0XHRpZiAoYXVkaW9DbGlwKSB7XG5cdFx0XHRcdFx0dGhpc1trZXldID0gYXVkaW9DbGlwO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cdGFkZFByZWxvYWRBdWRpbygpIHtcblxuXHRcdHRoaXMuX2F1ZGlvUmVzTGlzdC5wdXNoKHsgdXJsOiB0aGlzLmRhdGEuYmVnaW5fYXVkaW8gfSk7XG5cdFx0Ly8gdGhpcy5wcmVwYXJlQXVkaW9DbGlwKHRoaXMuZGF0YS5iZWdpbl9hdWRpbzEsICdiZWdpbl9hdWRpbzEnKVxuXHRcdC8vIHRoaXMuX2F1ZGlvUmVzTGlzdC5wdXNoKHsgdXJsOiB0aGlzLmRhdGEuYmVnaW5fYXVkaW8yIH0pO1xuXHRcdC8vIHRoaXMucHJlcGFyZUF1ZGlvQ2xpcCh0aGlzLmRhdGEuYmVnaW5fYXVkaW8yLCAnYmVnaW5fYXVkaW8yJylcblx0XHR0aGlzLl9hdWRpb1Jlc0xpc3QucHVzaCh7IHVybDogdGhpcy5kYXRhLmd1aWRlX2F1ZGlvIH0pO1xuXHRcdHRoaXMuX2F1ZGlvUmVzTGlzdC5wdXNoKHsgdXJsOiB0aGlzLmRhdGEucGxheWluZ19hdWRpbyB9KTtcblx0XHRpZiAodGhpcy5kYXRhLndyb25nX2F1ZGlvKSB7XG5cdFx0XHR0aGlzLl9hdWRpb1Jlc0xpc3QucHVzaCh7IHVybDogdGhpcy5kYXRhLndyb25nX2F1ZGlvIH0pO1xuXHRcdFx0dGhpcy53cm9uZ0F1ZGlvID0gdGhpcy5kYXRhLndyb25nX2F1ZGlvXG5cdFx0fVxuXHRcdGlmICh0aGlzLmRhdGEucmlnaHRfYXVkaW8pIHtcblx0XHRcdHRoaXMuX2F1ZGlvUmVzTGlzdC5wdXNoKHsgdXJsOiB0aGlzLmRhdGEucmlnaHRfYXVkaW8gfSk7XG5cdFx0XHR0aGlzLnJpZ2h0QXVkaW8gPSB0aGlzLmRhdGEucmlnaHRfYXVkaW9cblx0XHR9XG5cdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS53cm9uZ19hdWRpbzEgfSk7XG5cdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS53cm9uZ19hdWRpbzIgfSk7XG5cdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS5lbmRfYXVkaW8gfSk7XG5cblxuXHRcdGZvciAoY29uc3QgcSBvZiB0aGlzLmRhdGEuaG90Wm9uZUl0ZW1BcnIpIHtcblx0XHRcdGlmIChxLmdJZHggPT0nMCcpIHtcblx0XHRcdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHEuYXVkaW9fdXJsIH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0ZGVidWdQb2ludGVyKCkge1xuXHRcdGNvbnN0IGJveERlYnVnZ2VyID0gY2MuZmluZCgnQ2FudmFzL2JveC1kZWJ1Z2dlcicpO1xuXHRcdGlmICghdGhpcy5pc0RlYnVnKSB7XG5cdFx0XHRib3hEZWJ1Z2dlci5hY3RpdmUgPSBmYWxzZTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLlBPSU5URVJfTk9ERSkge1xuXHRcdFx0dGhpcy5QT0lOVEVSX05PREUgPSBuZXcgY2MuTm9kZSgpO1xuXHRcdFx0dGhpcy5QT0lOVEVSX05PREUucGFyZW50ID0gYm94RGVidWdnZXI7XG5cdFx0XHR0aGlzLlBPSU5URVJfTk9ERS5uYW1lID0gJ1BPSU5URVJfTk9ERSdcblx0XHRcdHRoaXMuUE9JTlRFUl9OT0RFLmFkZENvbXBvbmVudChjYy5HcmFwaGljcyk7XG5cdFx0fVxuXHRcdGNvbnN0IGdyYXAgPSB0aGlzLlBPSU5URVJfTk9ERS5nZXRDb21wb25lbnQoY2MuR3JhcGhpY3MpO1xuXHRcdGdyYXAuY2xlYXIoKTtcblx0XHRjb25zdCBncm91bmQgPSBjYy5maW5kKCdDYW52YXMvZnJhbWUtYm9yZGVyL2dyb3VuZCcpO1xuXHRcdGNvbnN0IHt3aWR0aDogYmFzZVcsIGhlaWdodDogYmFzZUh9ID0gZ3JvdW5kO1xuXHRcdGNvbnN0IHt4OiBweCwgeTogcHl9ID0gdGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uLnBvcztcblx0XHRsZXQgeCA9IGJhc2VXICogcHggLSBiYXNlVyAvIDI7XG5cdFx0bGV0IHkgPSBiYXNlSCAtIChiYXNlSCAqIHB5KSAtIGJhc2VIIC8gMiAtIDE2O1xuXHRcdGNvbnN0IHBuID0gbmV3IGNjLk5vZGUoKTtcblx0XHRcblx0XHRncmFwLmZpbGxDb2xvcj1jYy5jb2xvcigyNTUsIDAsIDApO1xuXHRcdGdyYXAuY2lyY2xlKHgsIHksIDMyKTtcblx0XHRncmFwLmZpbGwoKTtcblx0XHRncmFwLnN0cm9rZSgpO1xuXHR9LFxuXHRkZWJ1Z0dyYXBoaWNzKCkge1xuXHRcdGNvbnN0IGJveERlYnVnZ2VyID0gY2MuZmluZCgnQ2FudmFzL2JveC1kZWJ1Z2dlcicpO1xuXHRcdGlmICghdGhpcy5pc0RlYnVnKSB7XG5cdFx0XHRib3hEZWJ1Z2dlci5hY3RpdmUgPSBmYWxzZTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Ym94RGVidWdnZXIuYWN0aXZlID0gdHJ1ZTtcblx0XHRjb25zb2xlLmxvZygnc2hvdyBkZWJ1ZyBncmFwaGljcycpO1xuXHRcdGNvbnN0IGdyb3VuZCA9IGNjLmZpbmQoJ0NhbnZhcy9mcmFtZS1ib3JkZXIvZ3JvdW5kJyk7XG5cdFx0Y29uc3QgY2FudmFzID0gY2MuZmluZCgnQ2FudmFzJyk7XG5cdFx0Y29uc3Qge3dpZHRoOiBiYXNlVywgaGVpZ2h0OiBiYXNlSH0gPSBncm91bmQ7XG5cdFx0Y29uc3Qge3dpZHRoOiBiZ1csIGhlaWdodDogYmdIfSA9IHRoaXMuZGF0YS5iZ0l0ZW0ucmVjdFxuXHRcdGNvbnN0IHNjYWxlWCA9IGJnVyAvIGJhc2VXO1xuXHRcdGNvbnN0IHNjYWxlWSA9IGJnSCAvIGJhc2VIO1xuXHRcdGxldCBhZGRlZCAgPWZhbHNlXG5cdFx0dGhpcy5kYXRhLmhvdFpvbmVJdGVtQXJyLmZvckVhY2goYXJlYSA9PiB7XG5cdFx0XHRcblx0XHRcdGlmIChhZGRlZCkge1xuXHRcdFx0XHQvLyByZXR1cm5cblx0XHRcdH1cblx0XHRcdGlmIChhcmVhLmdJZHggIT0gJzAnKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGFkZGVkID0gdHJ1ZTtcblx0XHRcdGNvbnN0IGRuID0gbmV3IGNjLk5vZGUoKTtcblx0XHRcdGNvbnN0IGxibE5vZGUgPSBuZXcgY2MuTm9kZSgpO1xuXHRcdFx0bGJsTm9kZS5wYXJlbnQgPSBkblxuXHRcdFx0Y29uc3QgbGJsID0gbGJsTm9kZS5hZGRDb21wb25lbnQoY2MuTGFiZWwpO1xuXHRcdFx0bGJsTm9kZS5jb2xvciA9IGNjLmNvbG9yKDAsMCwwKVxuXHRcdFx0bGJsLnN0cmluZyA9IGFyZWEuc2tlSnNvbkRhdGEubmFtZS5zdWJzdHJpbmcoMCwgYXJlYS5za2VKc29uRGF0YS5uYW1lLmxlbmd0aCAtIDkpXG5cdFx0XHRkbi5uYW1lID0gbGJsLnN0cmluZztcblx0XHRcdGRuLnBhcmVudCA9IGJveERlYnVnZ2VyO1xuXHRcdFx0ZG4ud2lkdGggPSBiYXNlVztcblx0XHRcdGRuLmhlaWdodCA9IGJhc2VIO1xuXHRcdFx0XG5cdFx0XHRjb25zdCBncmFwID0gZG4uYWRkQ29tcG9uZW50KGNjLkdyYXBoaWNzKTtcblx0XHRcdGNvbnN0IHIgPSBSYW5kb21JbnQoMSwyNTUpXG5cdFx0XHRjb25zdCBnID0gUmFuZG9tSW50KDEsMjU1KVxuXHRcdFx0Y29uc3QgYiA9IFJhbmRvbUludCgxLDI1NSlcblx0XHRcdGdyYXAuZmlsbENvbG9yPWNjLmNvbG9yKHIsIGcsIGIsIDEyNyk7XG5cdFx0XHRjb25zdCB7eDogcngsIHk6IHJ5LCB3aWR0aDogcncsIGhlaWdodDogcmh9ID0gIGFyZWEucmVjdDtcblx0XHRcdGxldCB3ID0gKHJ3IC8gYmdXKSAqIGJhc2VXO1xuXHRcdFx0bGV0IGggPSAocmggLyBiZ0gpICogYmFzZUg7XG5cdFx0XHRsZXQgeCA9IChyeCAvIGJnVykgKiBiYXNlVyAtIGJhc2VXIC8gMjtcblx0XHRcdGxldCB5ID0gYmFzZUggLSAoKHJ5IC8gYmdIKSAqIGJhc2VIKSAtIGggLSBiYXNlSCAvIDI7XG5cdFx0XHQvLyB3ICo9IHNjYWxlWFxuXHRcdFx0Ly8gaCAqPSBzY2FsZVlcblx0XHRcdC8vIHggKj0gc2NhbGVYXG5cdFx0XHQvLyB5ICo9IHNjYWxlWVxuICAgICAgICAgICAgLy8gY29uc3QgcCA9IGJveERlYnVnZ2VyLmNvbnZlcnRUb05vZGVTcGFjZUFSKGNjLnYyKHgseSkpO1xuXHRcdFx0Ly8geCA9IHAueDtcblx0XHRcdC8vIHkgPSBwLnk7XG5cdFx0XHRsYmxOb2RlLnggPSB4O1xuXHRcdFx0bGJsTm9kZS55ID0geSArIGg7XG5cdFx0XHQvLyBkbi5zY2FsZVggPSBzY2FsZVg7XG5cdFx0XHQvLyBkbi5zY2FsZVkgPSBzY2FsZVk7XG5cdFx0XHQvLyBkbi5zY2FsZSA9IGFyZWEubWFwU2NhbGU7IC8vIG1pblNjYWxlOyAvLyB0aGlzLl9tYXBTY2FsZU1heCAqIGFyZWEubWFwU2NhbGU7IC8vIDtcblx0XHRcdGNvbnNvbGUubG9nKCdbZGVidWddJywgYXJlYS5za2VKc29uRGF0YS5uYW1lLCB4LCB5LCB3LCBoKTtcblx0XHRcdGdyYXAuZmlsbFJlY3QoeCwgeSwgdywgaCk7XG5cdFx0XHRncmFwLnN0cm9rZSgpO1xuXHRcdFx0XG5cdFx0fSk7XG5cblx0fSxcblx0YWRkUHJlbG9hZEFuaW1hKCkge1xuXG5cdH0sXG5cblx0cHJlbG9hZCgpIHtcblxuXHRcdGNvbnN0IHByZWxvYWRBcnIgPSB0aGlzLl9pbWFnZVJlc0xpc3QuY29uY2F0KHRoaXMuX2F1ZGlvUmVzTGlzdCkuY29uY2F0KHRoaXMuX2FuaW1hUmVzTGlzdCk7XG5cdFx0Ly8gY29uc29sZS5sb2cocHJlbG9hZEFycik7XG5cdFx0Y2MuYXNzZXRNYW5hZ2VyLmxvYWRBbnkocHJlbG9hZEFyciwgbnVsbCwgKGYsIHQsIGl0ZW0pID0+IHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGYsIHQsIGl0ZW0pXG5cdFx0fSwgKGVyciwgZGF0YSkgPT4ge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZXJyLCBkYXRhKTtcblx0XHRcdGNvbnN0IGdyb3VuZCA9IGNjLmZpbmQoYENhbnZhcy9mcmFtZS1ib3JkZXIvZ3JvdW5kYCk7XG5cdFx0XHRjb25zdCBncm91bmRCZyA9IGNjLmZpbmQoYENhbnZhcy9mcmFtZS1ib3JkZXIvZ3JvdW5kL2JnYCk7XG5cdFx0XHRncm91bmRCZy5hY3RpdmUgPSBmYWxzZTtcblx0XHRcdGNvbnN0IGJhc2VSZWN0ID0gdGhpcy5kYXRhLmJnSXRlbS5yZWN0O1xuXHRcdFx0Z2V0U3ByaXRlRnJpbWVCeVVybCh0aGlzLmRhdGEuYmdJdGVtLnVybCwgKHNmKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGdzID0gZ3JvdW5kQmcuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSk7XG5cdFx0XHRcdGdzLnNwcml0ZUZyYW1lID0gc2Y7XG5cdFx0XHRcdGdyb3VuZEJnLmFjdGl2ZSA9IHRydWU7XG5cblx0XHRcdFx0bGV0IGRiQ291bnQgPSAwO1xuXHRcdFx0XHRsZXQgZmluaXNoRGJDb3VudCA9IDBcblx0XHRcdFx0Zm9yKGNvbnN0IGJsb2NrIG9mIHRoaXMuZGF0YS5ob3Rab25lSXRlbUFycikge1xuXHRcdFx0XHRcdGlmIChibG9jay5nSWR4ID09ICcwJyB8fCBibG9jay5nSWR4ID09ICcxJykge1xuXHRcdFx0XHRcdFx0ZGJDb3VudCsrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IoY29uc3QgYmxvY2sgb2YgdGhpcy5kYXRhLmhvdFpvbmVJdGVtQXJyKSB7XG5cblx0XHRcdFx0XHRcblx0XHRcdFx0XHRpZiAoYmxvY2suZ0lkeCA9PSAnMicpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHMxID0gKChncm91bmQud2lkdGggIC8gYmxvY2suaW1nU2l6ZVcpICsgKGdyb3VuZC5oZWlnaHQgIC8gYmxvY2suaW1nU2l6ZUgpKSAvIDJcblx0XHRcdFx0XHRcdGNvbnN0IG5vZGUgPSBuZXcgY2MuTm9kZSgpO1xuXHRcdFx0XHRcdFx0bm9kZS5wYXJlbnQgPSBncm91bmQ7XG5cdFx0XHRcdFx0XHRjb25zdCBzcHIgPSBub2RlLmFkZENvbXBvbmVudChjYy5TcHJpdGUpO1xuXHRcdFx0XHRcdFx0Z2V0U3ByaXRlRnJpbWVCeVVybChibG9jay5waWNfdXJsLCAoc2YpID0+IHtcblx0XHRcdFx0XHRcdHNwci5zcHJpdGVGcmFtZSA9IHNmO1xuXHRcdFx0XHRcdFx0bm9kZS5zY2FsZSA9IHMxO1xuXHRcdFx0XHRcdFx0fSlcblxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoYmxvY2suZ0lkeCA9PSAnMCcgfHwgYmxvY2suZ0lkeCA9PSAnMScpIHtcblxuXHRcdFx0XHRcdFx0Y29uc3QgbiA9IG5ldyBjYy5Ob2RlKCk7XG5cdFx0XHRcdFx0XHQvLyBuLnNjYWxlID0gMC4yNTtcblx0XHRcdFx0XHRcdG4uc2NhbGUgPSBncm91bmQud2lkdGggLyBncm91bmRCZy53aWR0aDtcblxuXHRcdFx0XHRcdFx0bi5wYXJlbnQgPSBncm91bmQ7XG5cdFx0XHRcdFx0XHRuLmFjdGl2ZSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHRpZiAoYmxvY2suYW5pbVR5cGUgPT0gJ3NwaW5lJykge1xuXHRcdFx0XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gbi5hZGRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xuXHRcdFx0XHRcdFx0XHRuLmlzU3BpbmUgPSB0cnVlO1xuXG5cdFx0XHRcdFx0XHRcdGxvYWRTcGluZShza2VsZXRvbiwgYmxvY2sudGV4UG5nRGF0YS5uYW1lLCB7XG5cdFx0XHRcdFx0XHRcdFx0dGV4OiBibG9jay50ZXhQbmdEYXRhLnVybCwgXG5cdFx0XHRcdFx0XHRcdFx0YXRsYXM6IGJsb2NrLnRleEpzb25EYXRhLnVybCxcblx0XHRcdFx0XHRcdFx0XHRza2U6IGJsb2NrLnNrZUpzb25EYXRhLnVybCxcblx0XHRcdFx0XHRcdFx0fSkudGhlbigoe3dpZHRoLCBoZWlnaHR9KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bi53aWR0aCA9IHdpZHRoO1xuXHRcdFx0XHRcdFx0XHRcdG4uaGVpZ2h0ID0gaGVpZ2h0O1x0XG5cdFx0XHRcdFx0XHRcdFx0bi5hY3RpdmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdC8vIGRiLnBsYXlBbmltYXRpb24oJ251bGwnLCAwKTtcblx0XHRcdFx0XHRcdFx0XHQvLyBza2VsZXRvbi5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdFx0XHRcdFx0XHRcdC8vIHNrZWxldG9uLnNldEFuaW1hdGlvbigwLCAnZW5sYXJnZScsIHRydWUpO1x0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5fYWxsQW5pbWF0aW9uTm9kZXMucHVzaChuKTtcblx0XHRcdFx0XHRcdFx0XHRmaW5pc2hEYkNvdW50Kys7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZmluaXNoRGJDb3VudCwgZGJDb3VudClcblx0XHRcdFx0XHRcdFx0XHRpZiAoZmluaXNoRGJDb3VudCA9PSBkYkNvdW50KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pLmNhdGNoKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRmaW5pc2hEYkNvdW50Kys7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZmluaXNoRGJDb3VudCwgZGJDb3VudClcblx0XHRcdFx0XHRcdFx0XHRpZiAoZmluaXNoRGJDb3VudCA9PSBkYkNvdW50KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGRiID0gbi5hZGRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblxuXHRcdFx0XHRcdFx0XHRsb2FkRHJhZ29uQm9uZXMoZGIsIHtcblx0XHRcdFx0XHRcdFx0XHR0ZXg6IGJsb2NrLnRleFBuZ0RhdGEudXJsLCBcblx0XHRcdFx0XHRcdFx0XHRhdGxhczogYmxvY2sudGV4SnNvbkRhdGEudXJsLFxuXHRcdFx0XHRcdFx0XHRcdHNrZTogYmxvY2suc2tlSnNvbkRhdGEudXJsLFxuXHRcdFx0XHRcdFx0XHR9KS50aGVuKCh7d2lkdGgsIGhlaWdodH0pID0+IHtcblx0XHRcdFx0XHRcdFx0XHRuLndpZHRoID0gd2lkdGg7XG5cdFx0XHRcdFx0XHRcdFx0bi5oZWlnaHQgPSBoZWlnaHQ7XHRcblx0XHRcdFx0XHRcdFx0XHRuLmFjdGl2ZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0ZGIucGxheUFuaW1hdGlvbignbnVsbCcsIDApO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuX2FsbEFuaW1hdGlvbk5vZGVzLnB1c2gobik7XG5cdFx0XHRcdFx0XHRcdFx0ZmluaXNoRGJDb3VudCsrO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGZpbmlzaERiQ291bnQsIGRiQ291bnQpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGZpbmlzaERiQ291bnQgPT0gZGJDb3VudCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkRW5kKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KS5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0ZmluaXNoRGJDb3VudCsrO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGZpbmlzaERiQ291bnQsIGRiQ291bnQpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGZpbmlzaERiQ291bnQgPT0gZGJDb3VudCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkRW5kKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XG5cblx0XHRcdFx0XHRcdGlmIChibG9jay5nSWR4ID09ICcwJykge1xuXHRcdFx0XHRcdFx0XHRjb25zdCByZWN0SW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0XHRub2RlOiBuLFxuXHRcdFx0XHRcdFx0XHRcdGF1ZGlvX3VybDogYmxvY2suYXVkaW9fdXJsICxcblx0XHRcdFx0XHRcdFx0XHRyZWN0OiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR4OiBibG9jay5yZWN0LnggLyBiYXNlUmVjdC53aWR0aCxcblx0XHRcdFx0XHRcdFx0XHRcdHk6IGJsb2NrLnJlY3QueSAvIGJhc2VSZWN0LmhlaWdodCxcblx0XHRcdFx0XHRcdFx0XHRcdHdpZHRoOiBibG9jay5yZWN0LndpZHRoIC8gYmFzZVJlY3Qud2lkdGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ6IGJsb2NrLnJlY3QuaGVpZ2h0IC8gYmFzZVJlY3QuaGVpZ2h0LFxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fZmlndXJlUG9pbnRSZWN0QXJyYXkucHVzaChyZWN0SW5mbyk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gdGhpcy5hZGRSZWN0Tm9kZUxpc3RlbmVyKGJsb2NrKTtcblx0XHRcblx0XHRcdFx0XHRcdFx0aWYgKGJsb2NrLmxhYmVsVGV4dCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGsgPSArYmxvY2subGFiZWxUZXh0ICogMTAwMDtcblx0XHRcdFx0XHRcdFx0XHRpZighaXNOYU4oaykpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuX2hpbnRzTm9kZUxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGU6IG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFmdGVyOiBrXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0XG5cdFx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEpO1xuXHRcdFx0Y29uc29sZS5sb2coJ3Jlc291cmNlIHBlcmxvYWQgZmluaXNoJyk7XG5cbi8vIDw8PDw8PDwgSEVBRFxuLy8gPT09PT09PVxuLy8gXHRcdFx0aWYgKHdpbmRvdyAmJiB3aW5kb3dbXCJhaXJcIl0pIHtcbi8vIFx0XHRcdFx0Ly8gY2MuZmluZCgnQ2FudmFzJykub3BhY2l0eSA9IDA7XG4vLyBcdFx0XHRcdHdpbmRvdy5haXIub25Db3Vyc2VJblNjcmVlbiA9IChuZXh0KSA9PiB7XG4vLyBcdFx0XHRcdFx0Ly8gY2MuZmluZCgnQ2FudmFzJykub3BhY2l0eSA9IDI1NTtcbi8vIFx0XHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcbi8vIFx0XHRcdFx0XHRuZXh0KCk7XG4vLyBcdFx0XHRcdH1cbi8vIFx0XHRcdFx0d2luZG93LmFpci5oaWRlQWlyQ2xhc3NMb2FkaW5nKCk7XG4vLyBcdFx0XHR9IGVsc2Uge1xuLy8gXHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcbi8vIFx0XHRcdH1cbi8vID4+Pj4+Pj4gMmQ0NjFlMTkxMDU3MWJjZmM2YWQ0ZGM5M2MyY2VkYWZjMjA5MjNlYVxuXG5cdFx0XHRjYy5kZWJ1Zy5zZXREaXNwbGF5U3RhdHMoZmFsc2UpO1xuXHRcdH0pO1xuXHR9LFxuXG5cblx0bG9hZEVuZCgpIHtcblx0XHRpZiAod2luZG93ICYmIHdpbmRvd1tcImFpclwiXSAmJiB3aW5kb3dbXCJhaXJcIl0uaGlkZUFpckNsYXNzTG9hZGluZykge1xuXHRcdFx0d2luZG93W1wiYWlyXCJdLmhpZGVBaXJDbGFzc0xvYWRpbmcoKTtcblx0XHR9XG5cdFx0dGhpcy5pbml0RGF0YSgpO1xuXHRcdC8vIHRoaXMuaW5pdEF1ZGlvKCk7XG5cdFx0Ly8gdGhpcy5pbml0VmlldygpO1xuXHRcdHRoaXMuaW5pdEJnKCk7XG5cdFx0Ly8gdGhpcy5pbml0TGlzdGVuZXIoKTtcblx0XHR0aGlzLmRlYnVnR3JhcGhpY3MoKTtcblx0XHR0aGlzLmNyZWF0ZVN0YXRlTWFjaGluZSgpO1xuXHR9LFxuXG5cdF9jYW50b3VjaDogbnVsbCxcblx0aW5pdERhdGEoKSB7XG5cdFx0Ly8g5omA5pyJ5YWo5bGA5Y+Y6YePIOm7mOiupOmDveaYr251bGwgXG5cdFx0dGhpcy5fY2FudG91Y2ggPSB0cnVlO1xuXHR9LFxuXG5cdC8vIGF1ZGlvQnRuOiBudWxsLFxuXHQvLyBpbml0QXVkaW8oKSB7XG5cdC8vIFx0Y29uc3QgYXVkaW9Ob2RlID0gY2MuZmluZCgnQ2FudmFzL3Jlcy9hdWRpbycpO1xuXG5cdC8vIFx0Y29uc3QgZ2V0QXVkaW9CeVJlc05hbWUgPSAocmVzTmFtZSkgPT4ge1xuXHQvLyBcdFx0cmV0dXJuIGF1ZGlvTm9kZS5nZXRDaGlsZEJ5TmFtZShyZXNOYW1lKS5nZXRDb21wb25lbnQoY2MuQXVkaW9Tb3VyY2UpO1xuXHQvLyBcdH1cblxuXHQvLyBcdHRoaXMuYXVkaW9CdG4gPSBnZXRBdWRpb0J5UmVzTmFtZSgnYnRuJyk7XG5cblx0Ly8gfSxcblxuXG5cdC8vIGluaXRWaWV3KCkge1xuXG5cdC8vIFx0Ly8gdGhpcy5pbml0QmcoKTtcblx0Ly8gXHQvLyB0aGlzLmluaXRQaWMoKTtcblx0Ly8gXHQvLyB0aGlzLmluaXRCdG4oKTtcblx0Ly8gXHR0aGlzLmluaXRJY29uKCk7XG5cdC8vIH0sXG5cblx0YWRkUmVjdE5vZGVMaXN0ZW5lcihkYXRhKSB7XG5cblxuXHRcdGNvbnN0IGJnID0gY2MuZmluZChgQ2FudmFzL2ZyYW1lLWJvcmRlci9ncm91bmQvYmdgKS5wYXJlbnQ7XG5cblx0XHRjb25zdCByYXRlID0gKGJnLnNjYWxlICogYmcud2lkdGgpIC8gdGhpcy5kYXRhLmJnSXRlbS5yZWN0LndpZHRoO1xuXG5cdFx0Y29uc3QgcmVjdE5vZGUgPSBuZXcgY2MuTm9kZSgpO1xuXHRcdHJlY3ROb2RlLm5hbWUgPSAncmVjdCcgKyBkYXRhLmluZGV4O1xuXHRcdGJnLmFkZENoaWxkKHJlY3ROb2RlLCAyMCk7XG5cblxuXHRcdGNvbnN0IGN0eCA9IHJlY3ROb2RlLmFkZENvbXBvbmVudChjYy5HcmFwaGljcyk7XG5cdFx0Ly8g57qi6Imy55+p5b2iXG5cdFx0Y3R4LmxpbmVXaWR0aCA9IDQ7XG5cdFx0Y3R4LnN0cm9rZUNvbG9yID0gY2MuQ29sb3IuQkxBQ0s7XG5cdFx0Y3R4LmZpbGxDb2xvciA9IGNjLkNvbG9yLldISVRFLnNldEEoMTAwKTtcblxuXHRcdGNvbnN0IHNjYWxlID0gcmF0ZSAvIGJnLnNjYWxlWTtcblxuXHRcdGNvbnNvbGUubG9nKCdzY2FsZX4gOiAnLCBzY2FsZSlcblxuXHRcdHJlY3ROb2RlLndpZHRoID0gZGF0YS5yZWN0LndpZHRoICogc2NhbGU7XG5cdFx0cmVjdE5vZGUuaGVpZ2h0ID0gZGF0YS5yZWN0LmhlaWdodCAqIHNjYWxlO1xuXHRcdHJlY3ROb2RlLnggPSAtYmcud2lkdGggLyAyICsgZGF0YS5yZWN0LnggKiBzY2FsZSArIGJnLng7XG5cdFx0cmVjdE5vZGUueSA9IGJnLmhlaWdodCAvIDIgLSBkYXRhLnJlY3QuaGVpZ2h0ICogc2NhbGUgLSBkYXRhLnJlY3QueSAqIHNjYWxlICsgYmcueTtcblxuXHRcdHJlY3ROb2RlLmFuY2hvclggPSByZWN0Tm9kZS5hbmNob3JZID0gMDtcblxuXHRcdGNvbnNvbGUubG9nKCdkYXRhOiAnLCBkYXRhKTtcblx0XHRjb25zb2xlLmxvZygncmVjdE5vZGU6ICcsIHJlY3ROb2RlKTtcblxuXG5cdFx0Ly8gaWYgKHBhZ2VEYXRhLmJnSXRlbS5pc1Nob3dEZWJ1Z0xpbmUpIHtcblx0XHRcdGN0eC5yZWN0KDAsIDAsIHJlY3ROb2RlLndpZHRoLCByZWN0Tm9kZS5oZWlnaHQpO1xuXHRcdFx0Ly8gY3R4LmZpbGxSZWN0KDAsIDAsIDIwMCwgMjAwKTtcblx0XHQvLyB9XG5cdFx0Y3R4LnN0cm9rZSgpO1xuXHRcdGN0eC5maWxsKCk7XG5cblx0XHRyZWN0Tm9kZS5hZGRDb21wb25lbnQoY2MuQnV0dG9uKTtcblx0XHRyZWN0Tm9kZS5vbihcImNsaWNrXCIsICgpID0+IHtcblx0XHRcdGNvbnNvbGUubG9nKFwiIGluIHJlY3ROb2RlIGNsaWNrXCIpO1xuXG5cblx0XHRcdGNvbnN0IF94ID0gcmVjdE5vZGUueCAvIGJnLndpZHRoO1xuXHRcdFx0Y29uc3QgX3kgPSByZWN0Tm9kZS55IC8gYmcuaGVpZ2h0O1xuXHRcdFx0Y29uc3QgX3cgPSByZWN0Tm9kZS53aWR0aCAvIGJnLndpZHRoO1xuXHRcdFx0Y29uc3QgX2ggPSByZWN0Tm9kZS5oZWlnaHQgLyBiZy5oZWlnaHQ7XG5cblx0XHRcdGNvbnN0IHBvcyA9IHtcblx0XHRcdFx0eDogX3ggKyBfdyAvIDIgKyAwLjUsXG5cdFx0XHRcdHk6IC0oX3kgKyBfaCAvIDIgLSAwLjUpXG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24gPSB7XG5cdFx0XHRcdHBvczogcG9zLFxuXHRcdFx0XHRkaXJ0eTogdHJ1ZVxuXHRcdFx0fTtcblxuXHRcdH0pXG5cblx0fSxcblxuXHRpbml0QmcoKSB7XG5cdFx0Y29uc3QgYmdOb2RlID0gY2MuZmluZCgnQ2FudmFzL2JnJyk7XG5cdFx0YmdOb2RlLnNjYWxlID0gdGhpcy5fbWFwU2NhbGVNYXg7XG5cdFx0Y29uc29sZS5sb2coJ3RoaXMuX21hcFNjYWxlTWF4JywgdGhpcy5fbWFwU2NhbGVNYXgpO1xuXHR9LFxuXG5cdFxuXHRcblxuXHQvKmluaXRCdG4oKSB7XG5cblx0XHR0aGlzLmN1clBhZ2UgPSAwO1xuXHRcdGNvbnN0IGJvdHRvbVBhcnQgPSBjYy5maW5kKCdDYW52YXMvYm90dG9tUGFydCcpO1xuXHRcdGJvdHRvbVBhcnQuekluZGV4ID0gNTsgLy8g5o+Q6auY5bGC57qnXG5cblx0XHRib3R0b21QYXJ0LnggPSBib3R0b21QYXJ0LnBhcmVudC53aWR0aCAvIDI7XG5cdFx0Ym90dG9tUGFydC55ID0gLWJvdHRvbVBhcnQucGFyZW50LmhlaWdodCAvIDI7XG5cblx0XHRjb25zdCBsZWZ0QnRuTm9kZSA9IGJvdHRvbVBhcnQuZ2V0Q2hpbGRCeU5hbWUoJ2J0bl9sZWZ0Jyk7XG5cdFx0Ly/oioLngrnkuK3mt7vliqDkuoZidXR0b27nu4Tku7Yg5YiZ5Y+v5Lul5re75YqgY2xpY2vkuovku7bnm5HlkKxcblx0XHRsZWZ0QnRuTm9kZS5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRpZiAoIXRoaXMuX2NhbnRvdWNoKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICh0aGlzLmN1clBhZ2UgPT0gMCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmN1clBhZ2UgPSAwXG5cdFx0XHR0aGlzLmxlZnRNb3ZlKCk7XG5cblx0XHRcdC8vIOa4uOaIj+e7k+adn+aXtumcgOimgeiwg+eUqOi/meS4quaWueazlemAmuefpeezu+e7n+S9nOS4muWujOaIkFxuXHRcdFx0b25Ib21ld29ya0ZpbmlzaCgpO1xuXG5cdFx0XHRjYy5hdWRpb0VuZ2luZS5wbGF5KHRoaXMuYXVkaW9CdG4uY2xpcCwgZmFsc2UsIDAuOClcblx0XHR9KVxuXG5cdFx0Y29uc3QgcmlnaHRCdG5Ob2RlID0gYm90dG9tUGFydC5nZXRDaGlsZEJ5TmFtZSgnYnRuX3JpZ2h0Jyk7XG5cdFx0Ly/oioLngrnkuK3mt7vliqDkuoZidXR0b27nu4Tku7Yg5YiZ5Y+v5Lul5re75YqgY2xpY2vkuovku7bnm5HlkKxcblx0XHRyaWdodEJ0bk5vZGUub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLl9jYW50b3VjaCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5jdXJQYWdlID09IDEpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmN1clBhZ2UgPSAxXG5cdFx0XHR0aGlzLnJpZ2h0TW92ZSgpO1xuXG5cdFx0XHRjYy5hdWRpb0VuZ2luZS5wbGF5KHRoaXMuYXVkaW9CdG4uY2xpcCwgZmFsc2UsIDAuNSlcblx0XHR9KVxuXHR9LCovXG5cblxuXG5cblx0Ly8gdXBkYXRlIChkdCkge30sXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXHRfdGltZW91dElkczogbnVsbCxcblx0X2ludGVydmFsSWRzOiBudWxsLFxuXHQvLyDnlJ/lkb3lkajmnJ9cblx0b25EZXN0cm95KCkge1xuXHRcdGNvbnNvbGUubG9nKCdvcDE1IG9uRGVzdHJveScpO1xuXHRcdHRoaXMuX3RpbWVvdXRJZHMuZm9yRWFjaChpZCA9PiB7XG5cdFx0XHRjbGVhclRpbWVvdXQoaWQpO1xuXHRcdH0pO1xuXHRcdHRoaXMuX2ludGVydmFsSWRzLmZvckVhY2goaWQgPT4ge1xuXHRcdFx0Y2xlYXJJbnRlcnZhbChpZCk7XG5cdFx0fSk7XG5cdFx0dGhpcy5nYW1lTWFjaGluZVNlcnZpY2Uuc3RvcENoaWxkKCk7XG5cdFx0dGhpcy5nYW1lTWFjaGluZVNlcnZpY2Uuc3RvcCgpO1xuXHRcdGlmKHdpbmRvdy5jb3Vyc2V3YXJlICYmIHdpbmRvdy5jb3Vyc2V3YXJlLmNsb3NlT3Ntb0ZpbmdlclJlYWQpIHtcblx0XHRcdGlmICh0aGlzLmlzT3BlbmVkT3Ntb0ZpbmdlclJlYWQpIHtcblx0XHRcdFx0d2luZG93LmNvdXJzZXdhcmUuY2xvc2VPc21vRmluZ2VyUmVhZCgpXG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cblxuXG5cbn0pO1xuIl19
+//------QC-SOURCE-SPLIT------
 
-          break;
+                (function() {
+                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
+                    var __module = nodeEnv ? module : {exports:{}};
+                    var __filename = 'preview-scripts/assets/OP15/script/util.js';
+                    var __require = nodeEnv ? function (request) {
+                        return cc.require(request);
+                    } : function (request) {
+                        return __quick_compile_project__.require(request, __filename);
+                    };
+                    function __define (exports, require, module) {
+                        if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
+cc._RF.push(module, 'ade7a9A1W1Ah7vGKIj+9VNT', 'util');
+// OP15/script/util.js
 
-        case Q:
-          this.stopChild(e.activity.id);
-          break;
+"use strict";
 
-        case nt:
-          var m = e.label,
-              S = e.value;
-          m ? this.logger(m, S) : this.logger(S);
-      }
-    }, n.prototype.removeChild = function (t) {
-      var e;
-      this.children["delete"](t), this.forwardTo["delete"](t), null === (e = this.state) || void 0 === e || delete e.children[t];
-    }, n.prototype.stopChild = function (t) {
-      var e = this.children.get(t);
-      e && (this.removeChild(t), N(e.stop) && e.stop());
-    }, n.prototype.spawn = function (t, n, r) {
-      if (w(t)) return this.spawnPromise(Promise.resolve(t), n);
-      if (N(t)) return this.spawnCallback(t, n);
-      if (function (t) {
-        try {
-          return "function" == typeof t.send;
-        } catch (t) {
-          return !1;
-        }
-      }(o = t) && "id" in o) return this.spawnActor(t, n);
-      if (function (t) {
-        try {
-          return "subscribe" in t && N(t.subscribe);
-        } catch (t) {
-          return !1;
-        }
-      }(t)) return this.spawnObservable(t, n);
-      if (k(t)) return this.spawnMachine(t, _e(_e({}, r), {
-        id: n
-      }));
-      if (null !== (i = t) && "object" == typeof i && "transition" in i && "function" == typeof i.transition) return this.spawnBehavior(t, n);
-      throw new Error('Unable to spawn entity "'.concat(n, '" of type "').concat(typeof t, '".'));
-      var i, o;
-    }, n.prototype.spawnMachine = function (t, r) {
-      var i = this;
-      void 0 === r && (r = {});
+exports.__esModule = true;
+exports.getPosByAngle = getPosByAngle;
+exports.getAngleByPos = getAngleByPos;
+exports.exchangeNodePos = exchangeNodePos;
+exports.RandomInt = RandomInt;
+exports.randomSortByArr = randomSortByArr;
+exports.setSprNodeMaxLen = setSprNodeMaxLen;
+exports.localPosTolocalPos = localPosTolocalPos;
+exports.worldPosToLocalPos = worldPosToLocalPos;
+exports.getScaleRateBy2Node = getScaleRateBy2Node;
+exports.getDistance = getDistance;
+exports.playAudioByUrl = playAudioByUrl;
+exports.btnClickAnima = btnClickAnima;
+exports.getSpriteFrimeByUrl = getSpriteFrimeByUrl;
+exports.getSprNode = getSprNode;
+exports.getSprNodeByUrl = getSprNodeByUrl;
+exports.playAudio = playAudio;
+exports.asyncDelay = asyncDelay;
+exports.showFireworks = showFireworks;
+exports.asyncTweenTo = asyncTweenTo;
+exports.asyncTweenBy = asyncTweenBy;
+exports.showTrebleFirework = showTrebleFirework;
+exports.onHomeworkFinish = onHomeworkFinish;
+exports.loadDragonBones = loadDragonBones;
+exports.loadSpine = loadSpine;
+exports.FireworkSettings = void 0;
 
-      var o = new n(t, _e(_e({}, this.options), {
-        parent: this,
-        id: r.id || t.id
-      })),
-          a = _e(_e({}, Yt), r);
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
 
-      a.sync && o.onTransition(function (t) {
-        i.send(st, {
-          state: t,
-          id: o.id
-        });
-      });
-      var s = o;
-      return this.children.set(o.id, s), a.autoForward && this.forwardTo.add(o.id), o.onDone(function (t) {
-        i.removeChild(o.id), i.send(L(t, {
-          origin: o.id
-        }));
-      }).start(), s;
-    }, n.prototype.spawnBehavior = function (t, e) {
-      var n = Qt(t, {
-        id: e,
-        parent: this
-      });
-      return this.children.set(e, n), n;
-    }, n.prototype.spawnPromise = function (t, e) {
-      var n,
-          r = this,
-          i = !1;
-      t.then(function (t) {
-        i || (n = t, r.removeChild(e), r.send(L(Nt(e, t), {
-          origin: e
-        })));
-      }, function (t) {
-        if (!i) {
-          r.removeChild(e);
-          var n = At(e, t);
-
-          try {
-            r.send(L(n, {
-              origin: e
-            }));
-          } catch (t) {
-            r.devTools && r.devTools.send(n, r.state), r.machine.strict && r.stop();
-          }
-        }
-      });
-      var o = {
-        id: e,
-        send: function send() {},
-        subscribe: function subscribe(e, n, r) {
-          var i = z(e, n, r),
-              o = !1;
-          return t.then(function (t) {
-            o || (i.next(t), o || i.complete());
-          }, function (t) {
-            o || i.error(t);
-          }), {
-            unsubscribe: function unsubscribe() {
-              return o = !0;
-            }
-          };
-        },
-        stop: function stop() {
-          i = !0;
-        },
-        toJSON: function toJSON() {
-          return {
-            id: e
-          };
-        },
-        getSnapshot: function getSnapshot() {
-          return n;
-        }
-      };
-      return this.children.set(e, o), o;
-    }, n.prototype.spawnCallback = function (t, e) {
-      var n,
-          r,
-          i = this,
-          o = !1,
-          a = new Set(),
-          s = new Set();
+function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
 
-      try {
-        r = t(function (t) {
-          n = t, s.forEach(function (e) {
-            return e(t);
-          }), o || i.send(L(t, {
-            origin: e
-          }));
-        }, function (t) {
-          a.add(t);
-        });
-      } catch (t) {
-        this.send(At(e, t));
-      }
+function getPosByAngle(angle, len) {
+  var radian = angle * Math.PI / 180;
+  var x = Math.sin(radian) * len;
+  var y = Math.cos(radian) * len;
+  return {
+    x: x,
+    y: y
+  };
+}
 
-      if (w(r)) return this.spawnPromise(r, e);
-      var c = {
-        id: e,
-        send: function send(t) {
-          return a.forEach(function (e) {
-            return e(t);
-          });
-        },
-        subscribe: function subscribe(t) {
-          return s.add(t), {
-            unsubscribe: function unsubscribe() {
-              s["delete"](t);
-            }
-          };
-        },
-        stop: function stop() {
-          o = !0, N(r) && r();
-        },
-        toJSON: function toJSON() {
-          return {
-            id: e
-          };
-        },
-        getSnapshot: function getSnapshot() {
-          return n;
-        }
-      };
-      return this.children.set(e, c), c;
-    }, n.prototype.spawnObservable = function (t, e) {
-      var n,
-          r = this,
-          i = t.subscribe(function (t) {
-        n = t, r.send(L(t, {
-          origin: e
-        }));
-      }, function (t) {
-        r.removeChild(e), r.send(L(At(e, t), {
-          origin: e
-        }));
-      }, function () {
-        r.removeChild(e), r.send(L(Nt(e), {
-          origin: e
-        }));
-      }),
-          o = {
-        id: e,
-        send: function send() {},
-        subscribe: function subscribe(e, n, r) {
-          return t.subscribe(e, n, r);
-        },
-        stop: function stop() {
-          return i.unsubscribe();
-        },
-        getSnapshot: function getSnapshot() {
-          return n;
-        },
-        toJSON: function toJSON() {
-          return {
-            id: e
-          };
-        }
-      };
-      return this.children.set(e, o), o;
-    }, n.prototype.spawnActor = function (t, e) {
-      return this.children.set(e, t), t;
-    }, n.prototype.spawnActivity = function (t) {
-      var e = this.machine.options && this.machine.options.activities ? this.machine.options.activities[t.type] : void 0;
+function getAngleByPos(px, py, mx, my) {
+  var x = Math.abs(px - mx);
+  var y = Math.abs(py - my);
+  var z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
+  var cos = y / z;
+  var radina = Math.acos(cos); // 用反三角函数求弧度
 
-      if (e) {
-        var n = e(this.state.context, t);
-        this.spawnEffect(t.id, n);
-      }
-    }, n.prototype.spawnEffect = function (t, e) {
-      this.children.set(t, {
-        id: t,
-        send: function send() {},
-        subscribe: function subscribe() {
-          return {
-            unsubscribe: function unsubscribe() {}
-          };
-        },
-        stop: e || void 0,
-        getSnapshot: function getSnapshot() {},
-        toJSON: function toJSON() {
-          return {
-            id: t
-          };
-        }
-      });
-    }, n.prototype.attachDev = function () {
-      var t = Gt();
+  var angle = Math.floor(180 / (Math.PI / radina) * 100) / 100; // 将弧度转换成角度
 
-      if (this.options.devTools && t) {
-        if (t.__REDUX_DEVTOOLS_EXTENSION__) {
-          var n = "object" == typeof this.options.devTools ? this.options.devTools : void 0;
-          this.devTools = t.__REDUX_DEVTOOLS_EXTENSION__.connect(_e(_e({
-            name: this.id,
-            autoPause: !0,
-            stateSanitizer: function stateSanitizer(t) {
-              return {
-                value: t.value,
-                context: t.context,
-                actions: t.actions
-              };
-            }
-          }, n), {
-            features: _e({
-              jump: !1,
-              skip: !1
-            }, n ? n.features : void 0)
-          }), this.machine), this.devTools.init(this.state);
-        }
+  if (mx > px && my > py) {
+    // 鼠标在第四象限
+    angle = 180 - angle;
+  }
 
-        Kt(this);
-      }
-    }, n.prototype.toJSON = function () {
-      return {
-        id: this.id
-      };
-    }, n.prototype[P] = function () {
-      return this;
-    }, n.prototype.getSnapshot = function () {
-      return this.status === t.InterpreterStatus.NotStarted ? this.initialState : this._state;
-    }, n.defaultOptions = function (t) {
-      return {
-        execute: !0,
-        deferEvents: !0,
-        clock: {
-          setTimeout: function (_setTimeout) {
-            function setTimeout(_x, _x2) {
-              return _setTimeout.apply(this, arguments);
-            }
+  if (mx === px && my > py) {
+    // 鼠标在y轴负方向上
+    angle = 180;
+  }
 
-            setTimeout.toString = function () {
-              return _setTimeout.toString();
-            };
+  if (mx > px && my === py) {
+    // 鼠标在x轴正方向上
+    angle = 90;
+  }
 
-            return setTimeout;
-          }(function (t, e) {
-            return setTimeout(t, e);
-          }),
-          clearTimeout: function (_clearTimeout) {
-            function clearTimeout(_x3) {
-              return _clearTimeout.apply(this, arguments);
-            }
+  if (mx < px && my > py) {
+    // 鼠标在第三象限
+    angle = 180 + angle;
+  }
 
-            clearTimeout.toString = function () {
-              return _clearTimeout.toString();
-            };
+  if (mx < px && my === py) {
+    // 鼠标在x轴负方向
+    angle = 270;
+  }
 
-            return clearTimeout;
-          }(function (t) {
-            return clearTimeout(t);
-          })
-        },
-        logger: t.console.log.bind(console),
-        devTools: !1
-      };
-    }("undefined" != typeof self ? self : global), n.interpret = te, n;
-  }();
+  if (mx < px && my < py) {
+    // 鼠标在第二象限
+    angle = 360 - angle;
+  } // console.log('angle: ', angle);
 
-  function te(t, e) {
-    return new Zt(t, e);
+
+  return angle;
+}
+
+function exchangeNodePos(baseNode, targetNode) {
+  return baseNode.convertToNodeSpaceAR(targetNode._parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y)));
+}
+
+function RandomInt(a, b) {
+  if (b === void 0) {
+    b = 0;
   }
 
-  var ee = {
-    raise: vt,
-    send: yt,
-    sendParent: gt,
-    sendUpdate: mt,
-    log: function log(t, e) {
-      return void 0 === t && (t = St), {
-        type: nt,
-        label: e,
-        expr: t
-      };
+  var max = Math.max(a, b);
+  var min = Math.min(a, b);
+  return Math.floor(Math.random() * (max - min) + min);
+}
+
+function randomSortByArr(arr) {
+  var newArr = [];
+  var tmpArr = arr.concat();
+
+  while (tmpArr.length > 0) {
+    var randomIndex = Math.floor(tmpArr.length * Math.random());
+    newArr.push(tmpArr[randomIndex]);
+    tmpArr.splice(randomIndex, 1);
+  }
+
+  return newArr;
+}
+
+function setSprNodeMaxLen(sprNode, maxW, maxH) {
+  var sx = maxW / sprNode.width;
+  var sy = maxH / sprNode.height;
+  var s = Math.min(sx, sy);
+  sprNode.scale = Math.round(s * 1000) / 1000;
+}
+
+function localPosTolocalPos(baseNode, targetNode) {
+  var worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y));
+  var localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));
+  return localPos;
+}
+
+function worldPosToLocalPos(worldPos, baseNode) {
+  var localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));
+  return localPos;
+}
+
+function getScaleRateBy2Node(baseNode, targetNode, maxFlag) {
+  if (maxFlag === void 0) {
+    maxFlag = true;
+  }
+
+  var worldRect1 = targetNode.getBoundingBoxToWorld();
+  var worldRect2 = baseNode.getBoundingBoxToWorld();
+  var sx = worldRect1.width / worldRect2.width;
+  var sy = worldRect1.height / worldRect2.height;
+
+  if (maxFlag) {
+    return Math.max(sx, sy);
+  } else {
+    return Math.min(sx, sy);
+  }
+}
+
+function getDistance(start, end) {
+  var pos = cc.v2(start.x - end.x, start.y - end.y);
+  var dis = Math.sqrt(pos.x * pos.x + pos.y * pos.y);
+  return dis;
+}
+
+function playAudioByUrl(audio_url, cb) {
+  if (cb === void 0) {
+    cb = null;
+  }
+
+  if (audio_url) {
+    if (audio_url instanceof cc.AudioClip && audio_url.constructor.name == 'cc_AudioClip') {
+      var audioId = cc.audioEngine.play(audio_url, false, 0.8);
+
+      if (cb) {
+        cc.audioEngine.setFinishCallback(audioId, function () {
+          cb();
+        });
+      }
+    } else {
+      cc.assetManager.loadRemote(audio_url, function (err, audioClip) {
+        var audioId = cc.audioEngine.play(audioClip, false, 0.8);
+
+        if (cb) {
+          cc.audioEngine.setFinishCallback(audioId, function () {
+            cb();
+          });
+        }
+      });
+    }
+  }
+}
+
+function btnClickAnima(btn, time, rate) {
+  if (time === void 0) {
+    time = 0.15;
+  }
+
+  if (rate === void 0) {
+    rate = 1.05;
+  }
+
+  btn.tmpScale = btn.scale;
+  btn.on(cc.Node.EventType.TOUCH_START, function () {
+    cc.tween(btn).to(time / 2, {
+      scale: btn.scale * rate
+    }).start();
+  });
+  btn.on(cc.Node.EventType.TOUCH_CANCEL, function () {
+    cc.tween(btn).to(time / 2, {
+      scale: btn.tmpScale
+    }).start();
+  });
+  btn.on(cc.Node.EventType.TOUCH_END, function () {
+    cc.tween(btn).to(time / 2, {
+      scale: btn.tmpScale
+    }).start();
+  });
+}
+
+function getSpriteFrimeByUrl(url, cb) {
+  cc.loader.load({
+    url: url
+  }, function (err, img) {
+    var spriteFrame = new cc.SpriteFrame(img);
+
+    if (cb) {
+      cb(spriteFrame);
+    }
+  });
+}
+
+function getSprNode(resName) {
+  var sf = cc.find('Canvas/res/img/' + resName).getComponent(cc.Sprite).spriteFrame;
+  var node = new cc.Node();
+  node.addComponent(cc.Sprite).spriteFrame = sf;
+  return node;
+}
+
+function getSprNodeByUrl(url, cb) {
+  var node = new cc.Node();
+  var spr = node.addComponent(cc.Sprite);
+  getSpriteFrimeByUrl(url, function (sf) {
+    spr.spriteFrame = sf;
+
+    if (cb) {
+      cb(spr);
+    }
+  });
+}
+
+function playAudio(audioClip, cb) {
+  if (cb === void 0) {
+    cb = null;
+  }
+
+  if (audioClip) {
+    var audioId = cc.audioEngine.playEffect(audioClip, false, 0.8);
+
+    if (cb) {
+      cc.audioEngine.setFinishCallback(audioId, function () {
+        cb();
+      });
+    }
+  }
+}
+
+function asyncDelay(_x) {
+  return _asyncDelay.apply(this, arguments);
+}
+
+function _asyncDelay() {
+  _asyncDelay = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(time) {
+    return regeneratorRuntime.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            return _context.abrupt("return", new Promise(function (resolve, reject) {
+              try {
+                setTimeout(function () {
+                  resolve();
+                }, time * 1000);
+              } catch (e) {
+                reject(e);
+              }
+            }));
+
+          case 1:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
+  return _asyncDelay.apply(this, arguments);
+}
+
+var FireworkSettings = /*#__PURE__*/function () {
+  // 父节点
+  // 火花节点的array
+  // 发射点
+  // 发射方向
+  // 扩散范围
+  // 发射数量
+  // 缩放范围
+  function FireworkSettings(baseNode, nodeList, pos, side, range, number, scalseRange) {
+    if (pos === void 0) {
+      pos = cc.v2(0, 0);
+    }
+
+    if (side === void 0) {
+      side = cc.v2(0, 100);
+    }
+
+    if (range === void 0) {
+      range = 50;
+    }
+
+    if (number === void 0) {
+      number = 100;
+    }
+
+    if (scalseRange === void 0) {
+      scalseRange = 0;
+    }
+
+    this.baseNode = void 0;
+    this.nodeList = void 0;
+    this.pos = void 0;
+    this.side = void 0;
+    this.range = void 0;
+    this.number = void 0;
+    this.scalseRange = void 0;
+    this.baseNode = baseNode;
+    this.nodeList = nodeList;
+    this.pos = pos;
+    this.side = side;
+    this.range = range;
+    this.number = number;
+    this.scalseRange = scalseRange;
+  }
+
+  FireworkSettings.copy = function copy(firework) {
+    return new FireworkSettings(firework.baseNode, firework.nodeList, firework.pos, firework.side, firework.range, firework.number);
+  };
+
+  return FireworkSettings;
+}();
+
+exports.FireworkSettings = FireworkSettings;
+
+function showFireworks(_x2) {
+  return _showFireworks.apply(this, arguments);
+}
+
+function _showFireworks() {
+  _showFireworks = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(fireworkSettings) {
+    var baseNode, nodeList, pos, side, range, number, scalseRange;
+    return regeneratorRuntime.wrap(function _callee3$(_context3) {
+      while (1) {
+        switch (_context3.prev = _context3.next) {
+          case 0:
+            baseNode = fireworkSettings.baseNode, nodeList = fireworkSettings.nodeList, pos = fireworkSettings.pos, side = fireworkSettings.side, range = fireworkSettings.range, number = fireworkSettings.number, scalseRange = fireworkSettings.scalseRange;
+            new Array(number).fill(' ').forEach( /*#__PURE__*/function () {
+              var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, i) {
+                var rabbonNode, node, rate, angle;
+                return regeneratorRuntime.wrap(function _callee2$(_context2) {
+                  while (1) {
+                    switch (_context2.prev = _context2.next) {
+                      case 0:
+                        rabbonNode = new cc.Node();
+                        rabbonNode.parent = baseNode;
+                        rabbonNode.x = pos.x;
+                        rabbonNode.y = pos.y;
+                        rabbonNode.angle = 60 * Math.random() - 30;
+                        node = cc.instantiate(nodeList[RandomInt(nodeList.length)]);
+                        node.parent = rabbonNode;
+                        node.active = true;
+                        node.x = 0;
+                        node.y = 0;
+                        node.angle = 0;
+                        node.scale = (Math.random() - 0.5) * scalseRange + 1;
+                        rate = Math.random();
+                        angle = Math.PI * (Math.random() * 2 - 1);
+                        _context2.next = 16;
+                        return asyncTweenBy(rabbonNode, 0.3, {
+                          x: side.x * rate + Math.cos(angle) * range * rate,
+                          y: side.y * rate + Math.sin(angle) * range * rate
+                        }, {
+                          easing: 'quadIn'
+                        });
+
+                      case 16:
+                        cc.tween(rabbonNode).by(8, {
+                          y: -2000
+                        }).start();
+                        cc.tween(rabbonNode).to(5, {
+                          scale: (Math.random() - 0.5) * scalseRange + 1
+                        }).start();
+                        rabbonFall(rabbonNode);
+                        _context2.next = 21;
+                        return asyncDelay(Math.random());
+
+                      case 21:
+                        cc.tween(node).by(0.15, {
+                          x: -10,
+                          angle: -10
+                        }).by(0.3, {
+                          x: 20,
+                          angle: 20
+                        }).by(0.15, {
+                          x: -10,
+                          angle: -10
+                        }).union().repeatForever().start();
+                        cc.tween(rabbonNode).delay(5).to(0.3, {
+                          opacity: 0
+                        }).call(function () {
+                          node.stopAllActions();
+                          node.active = false;
+                          node.parent = null;
+                          node = null;
+                        }).start();
+
+                      case 23:
+                      case "end":
+                        return _context2.stop();
+                    }
+                  }
+                }, _callee2);
+              }));
+
+              return function (_x12, _x13) {
+                return _ref3.apply(this, arguments);
+              };
+            }());
+
+          case 2:
+          case "end":
+            return _context3.stop();
+        }
+      }
+    }, _callee3);
+  }));
+  return _showFireworks.apply(this, arguments);
+}
+
+function rabbonFall(_x3) {
+  return _rabbonFall.apply(this, arguments);
+}
+
+function _rabbonFall() {
+  _rabbonFall = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(node) {
+    var time, offsetX;
+    return regeneratorRuntime.wrap(function _callee4$(_context4) {
+      while (1) {
+        switch (_context4.prev = _context4.next) {
+          case 0:
+            time = 1 + Math.random();
+            offsetX = RandomInt(-200, 200) * time;
+            _context4.next = 4;
+            return asyncTweenBy(node, time, {
+              x: offsetX,
+              angle: offsetX * 60 / 200
+            });
+
+          case 4:
+            rabbonFall(node);
+
+          case 5:
+          case "end":
+            return _context4.stop();
+        }
+      }
+    }, _callee4);
+  }));
+  return _rabbonFall.apply(this, arguments);
+}
+
+function asyncTweenTo(_x4, _x5, _x6, _x7) {
+  return _asyncTweenTo.apply(this, arguments);
+}
+
+function _asyncTweenTo() {
+  _asyncTweenTo = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(node, duration, obj, ease) {
+    return regeneratorRuntime.wrap(function _callee5$(_context5) {
+      while (1) {
+        switch (_context5.prev = _context5.next) {
+          case 0:
+            if (ease === void 0) {
+              ease = undefined;
+            }
+
+            return _context5.abrupt("return", new Promise(function (resolve, reject) {
+              try {
+                cc.tween(node).to(duration, obj, ease).call(function () {
+                  resolve();
+                }).start();
+              } catch (e) {
+                reject(e);
+              }
+            }));
+
+          case 2:
+          case "end":
+            return _context5.stop();
+        }
+      }
+    }, _callee5);
+  }));
+  return _asyncTweenTo.apply(this, arguments);
+}
+
+function asyncTweenBy(_x8, _x9, _x10, _x11) {
+  return _asyncTweenBy.apply(this, arguments);
+}
+
+function _asyncTweenBy() {
+  _asyncTweenBy = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(node, duration, obj, ease) {
+    return regeneratorRuntime.wrap(function _callee6$(_context6) {
+      while (1) {
+        switch (_context6.prev = _context6.next) {
+          case 0:
+            if (ease === void 0) {
+              ease = undefined;
+            }
+
+            return _context6.abrupt("return", new Promise(function (resolve, reject) {
+              try {
+                cc.tween(node).by(duration, obj, ease).call(function () {
+                  resolve();
+                }).start();
+              } catch (e) {
+                reject(e);
+              }
+            }));
+
+          case 2:
+          case "end":
+            return _context6.stop();
+        }
+      }
+    }, _callee6);
+  }));
+  return _asyncTweenBy.apply(this, arguments);
+}
+
+function showTrebleFirework(baseNode, rabbonList) {
+  var middle = new FireworkSettings(baseNode, rabbonList);
+  middle.pos = cc.v2(0, -400);
+  middle.side = cc.v2(0, 1000);
+  middle.range = 200;
+  middle.number = 100;
+  middle.scalseRange = 0.4;
+  var left = FireworkSettings.copy(middle);
+  left.pos = cc.v2(-600, -400);
+  left.side = cc.v2(200, 1000);
+  var right = FireworkSettings.copy(middle);
+  right.pos = cc.v2(600, -400);
+  right.side = cc.v2(-200, 1000);
+  showFireworks(middle);
+  showFireworks(left);
+  showFireworks(right);
+}
+
+function onHomeworkFinish() {
+  var middleLayer = cc.find('middleLayer');
+
+  if (middleLayer) {
+    var middleLayerComponent = middleLayer.getComponent('middleLayer');
+
+    if (middleLayerComponent.role == 'student') {
+      middleLayerComponent.onHomeworkFinish(function () {});
+    }
+  } else {
+    console.log('onHomeworkFinish');
+  }
+}
+
+function loadDragonBones(dragonDisplay, _ref) {
+  var tex = _ref.tex,
+      atlas = _ref.atlas,
+      ske = _ref.ske;
+  return new Promise(function (resolve, reject) {
+    cc.loader.load({
+      url: tex,
+      type: 'png'
+    }, function (error, texture) {
+      if (error) {
+        reject();
+        return;
+      }
+
+      cc.loader.load({
+        url: atlas,
+        type: 'txt'
+      }, function (error, atlasJson) {
+        if (error) {
+          reject();
+          return;
+        }
+
+        cc.loader.load({
+          url: ske,
+          type: 'txt'
+        }, function (error, dragonBonesJson) {
+          if (error) {
+            reject();
+            return;
+          }
+
+          var atlasObj = new dragonBones.DragonBonesAtlasAsset();
+          atlasObj.uuid = atlas;
+          atlasObj.atlasJson = atlasJson;
+          atlasObj.texture = texture;
+          var asset = new dragonBones.DragonBonesAsset();
+          asset.uuid = ske;
+          asset.dragonBonesJson = dragonBonesJson;
+          var armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';
+          dragonDisplay.armatureName = armatureName;
+          dragonDisplay.dragonAtlasAsset = atlasObj;
+          dragonDisplay.dragonAsset = asset;
+          resolve(asset._dragonBonesJsonData.armature[0].aabb);
+        });
+      });
+    });
+  });
+}
+
+function loadSpine(skeleton, picName, _ref2) {
+  var tex = _ref2.tex,
+      atlas = _ref2.atlas,
+      ske = _ref2.ske;
+  return new Promise(function (resolve, reject) {
+    // cc.loader.load({ url: tex, type: 'png' }, (error, texture) => {
+    cc.assetManager.loadRemote(tex, function (error, texture) {
+      if (error) {
+        reject();
+        return;
+      } // cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
+
+
+      cc.assetManager.loadAny({
+        url: atlas
+      }, function (error, atlasJson) {
+        if (error) {
+          reject();
+          return;
+        } // cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {
+
+
+        cc.assetManager.loadAny({
+          url: ske
+        }, function (error, dragonBonesJson) {
+          if (error) {
+            reject();
+            return;
+          }
+
+          var asset = new sp.SkeletonData();
+          asset._uuid = ske;
+          asset.skeletonJson = JSON.stringify(dragonBonesJson);
+          asset.atlasText = atlasJson;
+          asset.textures = [texture];
+          asset.textureNames = [picName];
+          console.log('picName: ', picName);
+          skeleton.skeletonData = asset;
+          var jsonObj = dragonBonesJson; //JSON.parse( assets[1]);
+
+          var animationNameObj = jsonObj.animations;
+          var animationNames = [];
+
+          for (var name in animationNameObj) {
+            console.log('name~~:  ', name);
+            animationNames.push(name);
+          }
+
+          console.log("skeleton.animation: ", skeleton.animation);
+          skeleton.animationNames = animationNames;
+          skeleton.loop = false;
+          console.log("jsonObj['skeleton'] : ", jsonObj['skeleton']);
+          resolve(jsonObj['skeleton']); // const atlasObj = new dragonBones.DragonBonesAtlasAsset()
+          // atlasObj.uuid = atlas
+          // atlasObj.atlasJson = atlasJson
+          // atlasObj.texture = texture
+          // const asset = new dragonBones.DragonBonesAsset()
+          // asset.uuid = ske
+          // asset.dragonBonesJson = dragonBonesJson;
+          // const armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';
+          // dragonDisplay.armatureName = armatureName;
+          // dragonDisplay.dragonAtlasAsset = atlasObj
+          // dragonDisplay.dragonAsset = asset;
+          // resolve(asset._dragonBonesJsonData.armature[0].aabb);
+        });
+      });
+    });
+  });
+}
+
+cc._RF.pop();
+                    }
+                    if (nodeEnv) {
+                        __define(__module.exports, __require, __module);
+                    }
+                    else {
+                        __quick_compile_project__.registerModuleFunc(__filename, function () {
+                            __define(__module.exports, __require, __module);
+                        });
+                    }
+                })();
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9PUDE1L3NjcmlwdC91dGlsLmpzIl0sIm5hbWVzIjpbImdldFBvc0J5QW5nbGUiLCJhbmdsZSIsImxlbiIsInJhZGlhbiIsIk1hdGgiLCJQSSIsIngiLCJzaW4iLCJ5IiwiY29zIiwiZ2V0QW5nbGVCeVBvcyIsInB4IiwicHkiLCJteCIsIm15IiwiYWJzIiwieiIsInNxcnQiLCJwb3ciLCJyYWRpbmEiLCJhY29zIiwiZmxvb3IiLCJleGNoYW5nZU5vZGVQb3MiLCJiYXNlTm9kZSIsInRhcmdldE5vZGUiLCJjb252ZXJ0VG9Ob2RlU3BhY2VBUiIsIl9wYXJlbnQiLCJjb252ZXJ0VG9Xb3JsZFNwYWNlQVIiLCJjYyIsInYyIiwiUmFuZG9tSW50IiwiYSIsImIiLCJtYXgiLCJtaW4iLCJyYW5kb20iLCJyYW5kb21Tb3J0QnlBcnIiLCJhcnIiLCJuZXdBcnIiLCJ0bXBBcnIiLCJjb25jYXQiLCJsZW5ndGgiLCJyYW5kb21JbmRleCIsInB1c2giLCJzcGxpY2UiLCJzZXRTcHJOb2RlTWF4TGVuIiwic3ByTm9kZSIsIm1heFciLCJtYXhIIiwic3giLCJ3aWR0aCIsInN5IiwiaGVpZ2h0IiwicyIsInNjYWxlIiwicm91bmQiLCJsb2NhbFBvc1RvbG9jYWxQb3MiLCJ3b3JsZFBvcyIsInBhcmVudCIsImxvY2FsUG9zIiwid29ybGRQb3NUb0xvY2FsUG9zIiwiZ2V0U2NhbGVSYXRlQnkyTm9kZSIsIm1heEZsYWciLCJ3b3JsZFJlY3QxIiwiZ2V0Qm91bmRpbmdCb3hUb1dvcmxkIiwid29ybGRSZWN0MiIsImdldERpc3RhbmNlIiwic3RhcnQiLCJlbmQiLCJwb3MiLCJkaXMiLCJwbGF5QXVkaW9CeVVybCIsImF1ZGlvX3VybCIsImNiIiwiQXVkaW9DbGlwIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiYXVkaW9JZCIsImF1ZGlvRW5naW5lIiwicGxheSIsInNldEZpbmlzaENhbGxiYWNrIiwiYXNzZXRNYW5hZ2VyIiwibG9hZFJlbW90ZSIsImVyciIsImF1ZGlvQ2xpcCIsImJ0bkNsaWNrQW5pbWEiLCJidG4iLCJ0aW1lIiwicmF0ZSIsInRtcFNjYWxlIiwib24iLCJOb2RlIiwiRXZlbnRUeXBlIiwiVE9VQ0hfU1RBUlQiLCJ0d2VlbiIsInRvIiwiVE9VQ0hfQ0FOQ0VMIiwiVE9VQ0hfRU5EIiwiZ2V0U3ByaXRlRnJpbWVCeVVybCIsInVybCIsImxvYWRlciIsImxvYWQiLCJpbWciLCJzcHJpdGVGcmFtZSIsIlNwcml0ZUZyYW1lIiwiZ2V0U3ByTm9kZSIsInJlc05hbWUiLCJzZiIsImZpbmQiLCJnZXRDb21wb25lbnQiLCJTcHJpdGUiLCJub2RlIiwiYWRkQ29tcG9uZW50IiwiZ2V0U3ByTm9kZUJ5VXJsIiwic3ByIiwicGxheUF1ZGlvIiwicGxheUVmZmVjdCIsImFzeW5jRGVsYXkiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNldFRpbWVvdXQiLCJlIiwiRmlyZXdvcmtTZXR0aW5ncyIsIm5vZGVMaXN0Iiwic2lkZSIsInJhbmdlIiwibnVtYmVyIiwic2NhbHNlUmFuZ2UiLCJjb3B5IiwiZmlyZXdvcmsiLCJzaG93RmlyZXdvcmtzIiwiZmlyZXdvcmtTZXR0aW5ncyIsIkFycmF5IiwiZmlsbCIsImZvckVhY2giLCJfIiwiaSIsInJhYmJvbk5vZGUiLCJpbnN0YW50aWF0ZSIsImFjdGl2ZSIsImFzeW5jVHdlZW5CeSIsImVhc2luZyIsImJ5IiwicmFiYm9uRmFsbCIsInVuaW9uIiwicmVwZWF0Rm9yZXZlciIsImRlbGF5Iiwib3BhY2l0eSIsImNhbGwiLCJzdG9wQWxsQWN0aW9ucyIsIm9mZnNldFgiLCJhc3luY1R3ZWVuVG8iLCJkdXJhdGlvbiIsIm9iaiIsImVhc2UiLCJ1bmRlZmluZWQiLCJzaG93VHJlYmxlRmlyZXdvcmsiLCJyYWJib25MaXN0IiwibWlkZGxlIiwibGVmdCIsInJpZ2h0Iiwib25Ib21ld29ya0ZpbmlzaCIsIm1pZGRsZUxheWVyIiwibWlkZGxlTGF5ZXJDb21wb25lbnQiLCJyb2xlIiwiY29uc29sZSIsImxvZyIsImxvYWREcmFnb25Cb25lcyIsImRyYWdvbkRpc3BsYXkiLCJ0ZXgiLCJhdGxhcyIsInNrZSIsInR5cGUiLCJlcnJvciIsInRleHR1cmUiLCJhdGxhc0pzb24iLCJkcmFnb25Cb25lc0pzb24iLCJhdGxhc09iaiIsImRyYWdvbkJvbmVzIiwiRHJhZ29uQm9uZXNBdGxhc0Fzc2V0IiwidXVpZCIsImFzc2V0IiwiRHJhZ29uQm9uZXNBc3NldCIsImFybWF0dXJlTmFtZSIsIl9kcmFnb25Cb25lc0pzb25EYXRhIiwiYXJtYXR1cmUiLCJkcmFnb25BdGxhc0Fzc2V0IiwiZHJhZ29uQXNzZXQiLCJhYWJiIiwibG9hZFNwaW5lIiwic2tlbGV0b24iLCJwaWNOYW1lIiwibG9hZEFueSIsInNwIiwiU2tlbGV0b25EYXRhIiwiX3V1aWQiLCJza2VsZXRvbkpzb24iLCJKU09OIiwic3RyaW5naWZ5IiwiYXRsYXNUZXh0IiwidGV4dHVyZXMiLCJ0ZXh0dXJlTmFtZXMiLCJza2VsZXRvbkRhdGEiLCJqc29uT2JqIiwiYW5pbWF0aW9uTmFtZU9iaiIsImFuaW1hdGlvbnMiLCJhbmltYXRpb25OYW1lcyIsImFuaW1hdGlvbiIsImxvb3AiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLFNBQVNBLGFBQVQsQ0FBdUJDLEtBQXZCLEVBQThCQyxHQUE5QixFQUFtQztBQUV4QyxNQUFNQyxNQUFNLEdBQUdGLEtBQUssR0FBR0csSUFBSSxDQUFDQyxFQUFiLEdBQWtCLEdBQWpDO0FBQ0EsTUFBTUMsQ0FBQyxHQUFHRixJQUFJLENBQUNHLEdBQUwsQ0FBU0osTUFBVCxJQUFtQkQsR0FBN0I7QUFDQSxNQUFNTSxDQUFDLEdBQUdKLElBQUksQ0FBQ0ssR0FBTCxDQUFTTixNQUFULElBQW1CRCxHQUE3QjtBQUVBLFNBQU87QUFBRUksSUFBQUEsQ0FBQyxFQUFEQSxDQUFGO0FBQUtFLElBQUFBLENBQUMsRUFBREE7QUFBTCxHQUFQO0FBRUQ7O0FBRU0sU0FBU0UsYUFBVCxD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VixPQUFELENBQXJCO0FBRUExQixVQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxXQUFaLEVBQXlCeUIsT0FBekI7QUFFSEQsVUFBQUEsUUFBUSxDQUFDWSxZQUFULEdBQXdCckIsS0FBeEI7QUFHRyxjQUFNc0IsT0FBTyxHQUFHM0IsZUFBaEIsQ0FuQmdFLENBbUJoQzs7QUFDaEMsY0FBTTRCLGdCQUFnQixHQUFHRCxPQUFPLENBQUNFLFVBQWpDO0FBQ0EsY0FBSUMsY0FBYyxHQUFHLEVBQXJCOztBQUNBLGVBQUssSUFBSW5JLElBQVQsSUFBaUJpSSxnQkFBakIsRUFBbUM7QUFDakN2QyxZQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxXQUFaLEVBQXlCM0YsSUFBekI7QUFDQW1JLFlBQUFBLGNBQWMsQ0FBQ3BLLElBQWYsQ0FBb0JpQyxJQUFwQjtBQUNEOztBQUNKMEYsVUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksc0JBQVosRUFBb0N3QixRQUFRLENBQUNpQixTQUE3QztBQUNHakIsVUFBQUEsUUFBUSxDQUFDZ0IsY0FBVCxHQUEwQkEsY0FBMUI7QUFDSGhCLFVBQUFBLFFBQVEsQ0FBQ2tCLElBQVQsR0FBZ0IsS0FBaEI7QUFFRzNDLFVBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLHdCQUFaLEVBQXNDcUMsT0FBTyxDQUFDLFVBQUQsQ0FBN0M7QUFFQXJGLFVBQUFBLE9BQU8sQ0FBQ3FGLE9BQU8sQ0FBQyxVQUFELENBQVIsQ0FBUCxDQWhDZ0UsQ0FtQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNELFNBbEREO0FBbURILE9BekREO0FBMERELEtBaEVEO0FBaUVELEdBbkVNLENBQVA7QUFxRUQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRQb3NCeUFuZ2xlKGFuZ2xlLCBsZW4pIHtcblxuICBjb25zdCByYWRpYW4gPSBhbmdsZSAqIE1hdGguUEkgLyAxODA7XG4gIGNvbnN0IHggPSBNYXRoLnNpbihyYWRpYW4pICogbGVuO1xuICBjb25zdCB5ID0gTWF0aC5jb3MocmFkaWFuKSAqIGxlbjtcblxuICByZXR1cm4geyB4LCB5IH07XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZ2xlQnlQb3MocHgsIHB5LCBteCwgbXkpIHtcblxuICBjb25zdCB4ID0gTWF0aC5hYnMocHggLSBteCk7XG4gIGNvbnN0IHkgPSBNYXRoLmFicyhweSAtIG15KTtcblxuICBjb25zdCB6ID0gTWF0aC5zcXJ0KE1hdGgucG93KHgsIDIpICsgTWF0aC5wb3coeSwgMikpO1xuICBjb25zdCBjb3MgPSB5IC8gejtcbiAgY29uc3QgcmFkaW5hID0gTWF0aC5hY29zKGNvcyk7IC8vIOeUqOWPjeS4ieinkuWHveaVsOaxguW8p+W6plxuICBsZXQgYW5nbGUgPSBNYXRoLmZsb29yKDE4MCAvIChNYXRoLlBJIC8gcmFkaW5hKSAqIDEwMCkgLyAxMDA7IC8vIOWwhuW8p+W6pui9rOaNouaIkOinkuW6plxuXG4gIGlmIChteCA+IHB4ICYmIG15ID4gcHkpIHsvLyDpvKDmoIflnKjnrKzlm5vosaHpmZBcbiAgICBhbmdsZSA9IDE4MCAtIGFuZ2xlO1xuICB9XG4gIGlmIChteCA9PT0gcHggJiYgbXkgPiBweSkgey8vIOm8oOagh+WcqHnovbTotJ/mlrnlkJHkuIpcbiAgICBhbmdsZSA9IDE4MDtcbiAgfVxuICBpZiAobXggPiBweCAmJiBteSA9PT0gcHkpIHsvLyDpvKDmoIflnKh46L205q2j5pa55ZCR5LiKXG4gICAgYW5nbGUgPSA5MDtcbiAgfVxuICBpZiAobXggPCBweCAmJiBteSA+IHB5KSB7Ly8g6byg5qCH5Zyo56ys5LiJ6LGh6ZmQXG4gICAgYW5nbGUgPSAxODAgKyBhbmdsZTtcbiAgfVxuICBpZiAobXggPCBweCAmJiBteSA9PT0gcHkpIHsvLyDpvKDmoIflnKh46L206LSf5pa55ZCRXG4gICAgYW5nbGUgPSAyNzA7XG4gIH1cbiAgaWYgKG14IDwgcHggJiYgbXkgPCBweSkgey8vIOm8oOagh+WcqOesrOS6jOixoemZkFxuICAgIGFuZ2xlID0gMzYwIC0gYW5nbGU7XG4gIH1cblxuICAvLyBjb25zb2xlLmxvZygnYW5nbGU6ICcsIGFuZ2xlKTtcbiAgcmV0dXJuIGFuZ2xlO1xuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGNoYW5nZU5vZGVQb3MoYmFzZU5vZGUsIHRhcmdldE5vZGUpIHtcbiAgcmV0dXJuIGJhc2VOb2RlLmNvbnZlcnRUb05vZGVTcGFjZUFSKHRhcmdldE5vZGUuX3BhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoY2MudjIodGFyZ2V0Tm9kZS54LCB0YXJnZXROb2RlLnkpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYW5kb21JbnQoYSwgYiA9IDApIHtcbiAgbGV0IG1heCA9IE1hdGgubWF4KGEsIGIpO1xuICBsZXQgbWluID0gTWF0aC5taW4oYSwgYik7XG4gIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21Tb3J0QnlBcnIoYXJyKSB7XG4gIGNvbnN0IG5ld0FyciA9IFtdO1xuICBjb25zdCB0bXBBcnIgPSBhcnIuY29uY2F0KCk7XG4gIHdoaWxlICh0bXBBcnIubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcih0bXBBcnIubGVuZ3RoICogTWF0aC5yYW5kb20oKSk7XG4gICAgbmV3QXJyLnB1c2godG1wQXJyW3JhbmRvbUluZGV4XSk7XG4gICAgdG1wQXJyLnNwbGljZShyYW5kb21JbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIG5ld0Fycjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNwck5vZGVNYXhMZW4oc3ByTm9kZSwgbWF4VywgbWF4SCkge1xuICBjb25zdCBzeCA9IG1heFcgLyBzcHJOb2RlLndpZHRoO1xuICBjb25zdCBzeSA9IG1heEggLyBzcHJOb2RlLmhlaWdodDtcbiAgY29uc3QgcyA9IE1hdGgubWluKHN4LCBzeSk7XG4gIHNwck5vZGUuc2NhbGUgPSBNYXRoLnJvdW5kKHMgKiAxMDAwKSAvIDEwMDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFBvc1RvbG9jYWxQb3MoYmFzZU5vZGUsIHRhcmdldE5vZGUpIHtcblx0Y29uc3Qgd29ybGRQb3MgPSB0YXJnZXROb2RlLnBhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoY2MudjIodGFyZ2V0Tm9kZS54LCB0YXJnZXROb2RlLnkpKTtcblx0Y29uc3QgbG9jYWxQb3MgPSBiYXNlTm9kZS5wYXJlbnQuY29udmVydFRvTm9kZVNwYWNlQVIoY2MudjIod29ybGRQb3MueCwgd29ybGRQb3MueSkpO1xuXHRyZXR1cm4gbG9jYWxQb3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3b3JsZFBvc1RvTG9jYWxQb3Mod29ybGRQb3MsIGJhc2VOb2RlKSB7XG5cdGNvbnN0IGxvY2FsUG9zID0gYmFzZU5vZGUucGFyZW50LmNvbnZlcnRUb05vZGVTcGFjZUFSKGNjLnYyKHdvcmxkUG9zLngsIHdvcmxkUG9zLnkpKTtcblx0cmV0dXJuIGxvY2FsUG9zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVSYXRlQnkyTm9kZShiYXNlTm9kZSwgdGFyZ2V0Tm9kZSwgbWF4RmxhZyA9IHRydWUpIHtcblx0Y29uc3Qgd29ybGRSZWN0MSA9IHRhcmdldE5vZGUuZ2V0Qm91bmRpbmdCb3hUb1dvcmxkKCk7XG5cdGNvbnN0IHdvcmxkUmVjdDIgPSBiYXNlTm9kZS5nZXRCb3VuZGluZ0JveFRvV29ybGQoKTtcblxuXHRjb25zdCBzeCA9IHdvcmxkUmVjdDEud2lkdGggLyB3b3JsZFJlY3QyLndpZHRoO1xuXHRjb25zdCBzeSA9IHdvcmxkUmVjdDEuaGVpZ2h0IC8gd29ybGRSZWN0Mi5oZWlnaHQ7XG5cdGlmIChtYXhGbGFnKSB7XG5cdFx0cmV0dXJuIE1hdGgubWF4KHN4LCBzeSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIE1hdGgubWluKHN4LCBzeSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RhbmNlIChzdGFydCwgZW5kKXtcbiAgICB2YXIgcG9zID0gY2MudjIoc3RhcnQueCAtIGVuZC54LCBzdGFydC55IC0gZW5kLnkpO1xuICAgIHZhciBkaXMgPSBNYXRoLnNxcnQocG9zLngqcG9zLnggKyBwb3MueSpwb3MueSk7XG4gICAgcmV0dXJuIGRpcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBsYXlBdWRpb0J5VXJsKGF1ZGlvX3VybCwgY2I9bnVsbCkge1xuXHRpZiAoYXVkaW9fdXJsKSB7XG4gICAgaWYgKChhdWRpb191cmwgaW5zdGFuY2VvZiBjYy5BdWRpb0NsaXApICYmYXVkaW9fdXJsLmNvbnN0cnVjdG9yLm5hbWUgPT0gJ2NjX0F1ZGlvQ2xpcCcpIHtcbiAgICAgIGNvbnN0IGF1ZGlvSWQgPSBjYy5hdWRpb0VuZ2luZS5wbGF5KGF1ZGlvX3VybCwgZmFsc2UsIDAuOCk7XG4gICAgICBpZiAoY2IpIHtcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RmluaXNoQ2FsbGJhY2soYXVkaW9JZCwgKCkgPT4ge1xuICAgICAgICAgIGNiKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZShhdWRpb191cmwsIChlcnIsIGF1ZGlvQ2xpcCkgPT4ge1xuICAgICAgICBjb25zdCBhdWRpb0lkID0gY2MuYXVkaW9FbmdpbmUucGxheShhdWRpb0NsaXAsIGZhbHNlLCAwLjgpO1xuICAgICAgICBpZiAoY2IpIHtcbiAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhhdWRpb0lkLCAoKSA9PiB7XG4gICAgICAgICAgICBjYigpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTsgICAgfVxuXHRcdFxuXHR9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGJ0bkNsaWNrQW5pbWEoYnRuLCB0aW1lPTAuMTUsIHJhdGU9MS4wNSkge1xuICBidG4udG1wU2NhbGUgPSBidG4uc2NhbGU7XG4gIGJ0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9TVEFSVCwgKCkgPT4ge1xuICAgIGNjLnR3ZWVuKGJ0bilcbiAgICAgIC50byh0aW1lIC8gMiwge3NjYWxlOiBidG4uc2NhbGUgKiByYXRlfSlcbiAgICAgIC5zdGFydCgpXG4gIH0pXG4gIGJ0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9DQU5DRUwsICgpID0+IHtcbiAgICBjYy50d2VlbihidG4pXG4gICAgICAudG8odGltZSAvIDIsIHtzY2FsZTogYnRuLnRtcFNjYWxlfSlcbiAgICAgIC5zdGFydCgpXG4gIH0pXG4gIGJ0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQsICgpID0+IHtcbiAgICBjYy50d2VlbihidG4pXG4gICAgICAudG8odGltZSAvIDIsIHtzY2FsZTogYnRuLnRtcFNjYWxlfSlcbiAgICAgIC5zdGFydCgpXG4gIH0pXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNwcml0ZUZyaW1lQnlVcmwodXJsLCBjYikge1xuICBjYy5sb2FkZXIubG9hZCh7IHVybCB9LCAoZXJyLCBpbWcpID0+IHtcbiAgICBjb25zdCBzcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZShpbWcpXG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihzcHJpdGVGcmFtZSk7XG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ByTm9kZShyZXNOYW1lKSB7XG4gIGNvbnN0IHNmID0gY2MuZmluZCgnQ2FudmFzL3Jlcy9pbWcvJyArIHJlc05hbWUpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lO1xuICBjb25zdCBub2RlID0gbmV3IGNjLk5vZGUoKTtcbiAgbm9kZS5hZGRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNmO1xuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNwck5vZGVCeVVybCh1cmwsIGNiKSB7XG4gIGNvbnN0IG5vZGUgPSBuZXcgY2MuTm9kZSgpO1xuICBjb25zdCBzcHIgPSBub2RlLmFkZENvbXBvbmVudChjYy5TcHJpdGUpO1xuICBnZXRTcHJpdGVGcmltZUJ5VXJsKHVybCwgKHNmKSA9PiB7XG4gICAgc3ByLnNwcml0ZUZyYW1lID0gc2Y7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihzcHIpO1xuICAgIH1cbiAgfSlcbn1cblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBwbGF5QXVkaW8oYXVkaW9DbGlwLCBjYiA9IG51bGwpIHtcbiAgaWYgKGF1ZGlvQ2xpcCkge1xuICAgIGNvbnN0IGF1ZGlvSWQgPSBjYy5hdWRpb0VuZ2luZS5wbGF5RWZmZWN0KGF1ZGlvQ2xpcCwgZmFsc2UsIDAuOCk7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhhdWRpb0lkLCAoKSA9PiB7XG4gICAgICAgIGNiKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jRGVsYXkodGltZSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSwgdGltZSAqIDEwMDApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBjbGFzcyBGaXJld29ya1NldHRpbmdzIHtcbiAgYmFzZU5vZGU7IC8vIOeItuiKgueCuVxuICBub2RlTGlzdDsgLy8g54Gr6Iqx6IqC54K555qEYXJyYXlcbiAgcG9zOyAvLyDlj5HlsITngrlcbiAgc2lkZTsgLy8g5Y+R5bCE5pa55ZCRXG4gIHJhbmdlOyAvLyDmianmlaPojIPlm7RcbiAgbnVtYmVyOyAvLyDlj5HlsITmlbDph49cbiAgc2NhbHNlUmFuZ2U7IC8vIOe8qeaUvuiMg+WbtFxuICBjb25zdHJ1Y3RvcihiYXNlTm9kZSwgbm9kZUxpc3QsXG4gICAgcG9zID0gY2MudjIoMCwgMCksXG4gICAgc2lkZSA9IGNjLnYyKDAsIDEwMCksXG4gICAgcmFuZ2UgPSA1MCxcbiAgICBudW1iZXIgPSAxMDAsXG4gICAgc2NhbHNlUmFuZ2UgPSAwXG4gICkge1xuICAgIHRoaXMuYmFzZU5vZGUgPSBiYXNlTm9kZTtcbiAgICB0aGlzLm5vZGVMaXN0ID0gbm9kZUxpc3Q7XG4gICAgdGhpcy5wb3MgPSBwb3M7XG4gICAgdGhpcy5zaWRlID0gc2lkZTtcbiAgICB0aGlzLnJhbmdlID0gcmFuZ2U7XG4gICAgdGhpcy5udW1iZXIgPSBudW1iZXI7XG4gICAgdGhpcy5zY2Fsc2VSYW5nZSA9IHNjYWxzZVJhbmdlO1xuICB9XG5cbiAgc3RhdGljIGNvcHkoZmlyZXdvcmspIHtcbiAgICByZXR1cm4gbmV3IEZpcmV3b3JrU2V0dGluZ3MoXG4gICAgICBmaXJld29yay5iYXNlTm9kZSxcbiAgICAgIGZpcmV3b3JrLm5vZGVMaXN0LFxuICAgICAgZmlyZXdvcmsucG9zLFxuICAgICAgZmlyZXdvcmsuc2lkZSxcbiAgICAgIGZpcmV3b3JrLnJhbmdlLFxuICAgICAgZmlyZXdvcmsubnVtYmVyLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3dGaXJld29ya3MoZmlyZXdvcmtTZXR0aW5ncykge1xuICBjb25zdCB7IGJhc2VOb2RlLCBub2RlTGlzdCwgcG9zLCBzaWRlLCByYW5nZSwgbnVtYmVyLCBzY2Fsc2VSYW5nZSB9ID0gZmlyZXdvcmtTZXR0aW5ncztcbiAgbmV3IEFycmF5KG51bWJlcikuZmlsbCgnICcpLmZvckVhY2goYXN5bmMgKF8sIGkpID0+IHtcblxuICAgIGxldCByYWJib25Ob2RlID0gbmV3IGNjLk5vZGUoKTtcbiAgICByYWJib25Ob2RlLnBhcmVudCA9IGJhc2VOb2RlO1xuICAgIHJhYmJvbk5vZGUueCA9IHBvcy54O1xuICAgIHJhYmJvbk5vZGUueSA9IHBvcy55O1xuICAgIHJhYmJvbk5vZGUuYW5nbGUgPSA2MCAqIE1hdGgucmFuZG9tKCkgLSAzMDtcblxuICAgIGxldCBub2RlID0gY2MuaW5zdGFudGlhdGUobm9kZUxpc3RbUmFuZG9tSW50KG5vZGVMaXN0Lmxlbmd0aCldKTtcbiAgICBub2RlLnBhcmVudCA9IHJhYmJvbk5vZGU7XG4gICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xuICAgIG5vZGUueCA9IDA7XG4gICAgbm9kZS55ID0gMDtcbiAgICBub2RlLmFuZ2xlID0gMDtcbiAgICBub2RlLnNjYWxlID0gKE1hdGgucmFuZG9tKCkgLSAwLjUpICogc2NhbHNlUmFuZ2UgKyAxO1xuXG4gICAgY29uc3QgcmF0ZSA9IE1hdGgucmFuZG9tKCk7XG4gICAgY29uc3QgYW5nbGUgPSBNYXRoLlBJICogKE1hdGgucmFuZG9tKCkgKiAyIC0gMSk7XG5cbiAgICBhd2FpdCBhc3luY1R3ZWVuQnkocmFiYm9uTm9kZSwgMC4zLCB7XG4gICAgICB4OiBzaWRlLnggKiByYXRlICsgTWF0aC5jb3MoYW5nbGUpICogcmFuZ2UgKiByYXRlLFxuICAgICAgeTogc2lkZS55ICogcmF0ZSArIE1hdGguc2luKGFuZ2xlKSAqIHJhbmdlICogcmF0ZVxuICAgIH0sIHtcbiAgICAgIGVhc2luZzogJ3F1YWRJbidcbiAgICB9KTtcblxuICAgIGNjLnR3ZWVuKHJhYmJvbk5vZGUpXG4gICAgICAuYnkoOCwgeyB5OiAtMjAwMCB9KVxuICAgICAgLnN0YXJ0KCk7XG5cbiAgICBjYy50d2VlbihyYWJib25Ob2RlKVxuICAgICAgLnRvKDUsIHsgc2NhbGU6IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIHNjYWxzZVJhbmdlICsgMSB9KVxuICAgICAgLnN0YXJ0KCk7XG5cbiAgICByYWJib25GYWxsKHJhYmJvbk5vZGUpO1xuXG4gICAgYXdhaXQgYXN5bmNEZWxheShNYXRoLnJhbmRvbSgpKTtcbiAgICBjYy50d2Vlbihub2RlKVxuICAgICAgLmJ5KDAuMTUsIHsgeDogLTEwLCBhbmdsZTogLTEwIH0pXG4gICAgICAuYnkoMC4zLCB7IHg6IDIwLCBhbmdsZTogMjAgfSlcbiAgICAgIC5ieSgwLjE1LCB7IHg6IC0xMCwgYW5nbGU6IC0xMCB9KVxuICAgICAgLnVuaW9uKClcbiAgICAgIC5yZXBlYXRGb3JldmVyKClcbiAgICAgIC5zdGFydCgpO1xuXG4gICAgY2MudHdlZW4ocmFiYm9uTm9kZSlcbiAgICAgIC5kZWxheSg1KVxuICAgICAgLnRvKDAuMywgeyBvcGFjaXR5OiAwIH0pXG4gICAgICAuY2FsbCgoKSA9PiB7XG4gICAgICAgIG5vZGUuc3RvcEFsbEFjdGlvbnMoKTtcbiAgICAgICAgbm9kZS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgbm9kZS5wYXJlbnQgPSBudWxsO1xuICAgICAgICBub2RlID0gbnVsbDtcbiAgICAgIH0pXG4gICAgICAuc3RhcnQoKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJhYmJvbkZhbGwobm9kZSkge1xuICBjb25zdCB0aW1lID0gMSArIE1hdGgucmFuZG9tKCk7XG4gIGNvbnN0IG9mZnNldFggPSBSYW5kb21JbnQoLTIwMCwgMjAwKSAqIHRpbWU7XG4gIGF3YWl0IGFzeW5jVHdlZW5CeShub2RlLCB0aW1lLCB7IHg6IG9mZnNldFgsIGFuZ2xlOiBvZmZzZXRYICogNjAgLyAyMDAgfSk7XG4gIHJhYmJvbkZhbGwobm9kZSk7XG59XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jVHdlZW5Ubyhub2RlLCBkdXJhdGlvbiwgb2JqLCBlYXNlID0gdW5kZWZpbmVkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNjLnR3ZWVuKG5vZGUpXG4gICAgICAgIC50byhkdXJhdGlvbiwgb2JqLCBlYXNlKVxuICAgICAgICAuY2FsbCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuc3RhcnQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZWplY3QoZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jVHdlZW5CeShub2RlLCBkdXJhdGlvbiwgb2JqLCBlYXNlID0gdW5kZWZpbmVkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNjLnR3ZWVuKG5vZGUpXG4gICAgICAgIC5ieShkdXJhdGlvbiwgb2JqLCBlYXNlKVxuICAgICAgICAuY2FsbCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuc3RhcnQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZWplY3QoZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dUcmVibGVGaXJld29yayhiYXNlTm9kZSwgcmFiYm9uTGlzdCkge1xuICBjb25zdCBtaWRkbGUgPSBuZXcgRmlyZXdvcmtTZXR0aW5ncyhiYXNlTm9kZSwgcmFiYm9uTGlzdCk7XG4gIG1pZGRsZS5wb3MgPSBjYy52MigwLCAtNDAwKTtcbiAgbWlkZGxlLnNpZGUgPSBjYy52MigwLCAxMDAwKTtcbiAgbWlkZGxlLnJhbmdlID0gMjAwO1xuICBtaWRkbGUubnVtYmVyID0gMTAwO1xuICBtaWRkbGUuc2NhbHNlUmFuZ2UgPSAwLjQ7XG5cbiAgY29uc3QgbGVmdCA9IEZpcmV3b3JrU2V0dGluZ3MuY29weShtaWRkbGUpO1xuICBsZWZ0LnBvcyA9IGNjLnYyKC02MDAsIC00MDApO1xuICBsZWZ0LnNpZGUgPSBjYy52MigyMDAsIDEwMDApO1xuXG4gIGNvbnN0IHJpZ2h0ID0gRmlyZXdvcmtTZXR0aW5ncy5jb3B5KG1pZGRsZSk7XG4gIHJpZ2h0LnBvcyA9IGNjLnYyKDYwMCwgLTQwMCk7XG4gIHJpZ2h0LnNpZGUgPSBjYy52MigtMjAwLCAxMDAwKTtcblxuICBzaG93RmlyZXdvcmtzKG1pZGRsZSk7XG4gIHNob3dGaXJld29ya3MobGVmdCk7XG4gIHNob3dGaXJld29ya3MocmlnaHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25Ib21ld29ya0ZpbmlzaCgpIHtcbiAgY29uc3QgbWlkZGxlTGF5ZXIgPSBjYy5maW5kKCdtaWRkbGVMYXllcicpO1xuICBpZiAobWlkZGxlTGF5ZXIpIHtcbiAgICBjb25zdCBtaWRkbGVMYXllckNvbXBvbmVudCA9IG1pZGRsZUxheWVyLmdldENvbXBvbmVudCgnbWlkZGxlTGF5ZXInKTtcbiAgICBpZiAobWlkZGxlTGF5ZXJDb21wb25lbnQucm9sZSA9PSAnc3R1ZGVudCcpIHtcbiAgICAgIG1pZGRsZUxheWVyQ29tcG9uZW50Lm9uSG9tZXdvcmtGaW5pc2goKCkgPT4geyB9KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coJ29uSG9tZXdvcmtGaW5pc2gnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZERyYWdvbkJvbmVzKGRyYWdvbkRpc3BsYXkse3RleCwgYXRsYXMsIHNrZX0pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjYy5sb2FkZXIubG9hZCh7IHVybDogdGV4LCB0eXBlOiAncG5nJyB9LCAoZXJyb3IsIHRleHR1cmUpID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZWplY3QoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2MubG9hZGVyLmxvYWQoeyB1cmw6IGF0bGFzLCB0eXBlOiAndHh0JyB9LCAoZXJyb3IsIGF0bGFzSnNvbikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgICBjYy5sb2FkZXIubG9hZCh7IHVybDogc2tlLCB0eXBlOiAndHh0JyB9LCAoZXJyb3IsIGRyYWdvbkJvbmVzSnNvbikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhdGxhc09iaiA9IG5ldyBkcmFnb25Cb25lcy5EcmFnb25Cb25lc0F0bGFzQXNzZXQoKVxuICAgICAgICAgICAgYXRsYXNPYmoudXVpZCA9IGF0bGFzXG4gICAgICAgICAgICBhdGxhc09iai5hdGxhc0pzb24gPSBhdGxhc0pzb25cbiAgICAgICAgICAgIGF0bGFzT2JqLnRleHR1cmUgPSB0ZXh0dXJlXG4gIFxuICAgICAgICAgICAgY29uc3QgYXNzZXQgPSBuZXcgZHJhZ29uQm9uZXMuRHJhZ29uQm9uZXNBc3NldCgpXG4gICAgICAgICAgICBhc3NldC51dWlkID0gc2tlXG4gICAgICAgICAgICBhc3NldC5kcmFnb25Cb25lc0pzb24gPSBkcmFnb25Cb25lc0pzb247XG5cbiAgICAgICAgICAgIGNvbnN0IGFybWF0dXJlTmFtZSA9IGFzc2V0Ll9kcmFnb25Cb25lc0pzb25EYXRhLmFybWF0dXJlWzBdLm5hbWUgfHwgJ2RlZmF1bHQnO1xuICAgICAgICAgICAgZHJhZ29uRGlzcGxheS5hcm1hdHVyZU5hbWUgPSBhcm1hdHVyZU5hbWU7XG4gIFxuICAgICAgICAgICAgZHJhZ29uRGlzcGxheS5kcmFnb25BdGxhc0Fzc2V0ID0gYXRsYXNPYmpcbiAgICAgICAgICAgIGRyYWdvbkRpc3BsYXkuZHJhZ29uQXNzZXQgPSBhc3NldDtcbiAgICAgICAgICAgIHJlc29sdmUoYXNzZXQuX2RyYWdvbkJvbmVzSnNvbkRhdGEuYXJtYXR1cmVbMF0uYWFiYik7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIFxufVxuXG5cblxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFNwaW5lKHNrZWxldG9uLCBwaWNOYW1lLCB7dGV4LCBhdGxhcywgc2tlfSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIGNjLmxvYWRlci5sb2FkKHsgdXJsOiB0ZXgsIHR5cGU6ICdwbmcnIH0sIChlcnJvciwgdGV4dHVyZSkgPT4ge1xuICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHRleCwgKGVycm9yLCB0ZXh0dXJlKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIGNjLmxvYWRlci5sb2FkKHsgdXJsOiBhdGxhcywgdHlwZTogJ3R4dCcgfSwgKGVycm9yLCBhdGxhc0pzb24pID0+IHtcbiAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkQW55KHsgdXJsOiBhdGxhcyB9LCAoZXJyb3IsIGF0bGFzSnNvbikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgICAvLyBjYy5sb2FkZXIubG9hZCh7IHVybDogc2tlLCB0eXBlOiAndHh0JyB9LCAoZXJyb3IsIGRyYWdvbkJvbmVzSnNvbikgPT4ge1xuICAgICAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkQW55KHsgdXJsOiBza2UgfSwgKGVycm9yLCBkcmFnb25Cb25lc0pzb24pID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIHZhciBhc3NldCA9IG5ldyBzcC5Ta2VsZXRvbkRhdGEoKTtcbiAgICAgICAgICAgIGFzc2V0Ll91dWlkID0gc2tlO1xuICAgICAgICAgICAgYXNzZXQuc2tlbGV0b25Kc29uID0gSlNPTi5zdHJpbmdpZnkoIGRyYWdvbkJvbmVzSnNvbiApO1xuICAgICAgICAgICAgYXNzZXQuYXRsYXNUZXh0ID0gYXRsYXNKc29uO1xuICAgICAgICAgICAgYXNzZXQudGV4dHVyZXMgPSBbdGV4dHVyZV07XG4gICAgICAgICAgICBhc3NldC50ZXh0dXJlTmFtZXMgPSBbcGljTmFtZV07XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwaWNOYW1lOiAnLCBwaWNOYW1lKTtcblxuXHRcdFx0ICAgICAgc2tlbGV0b24uc2tlbGV0b25EYXRhID0gYXNzZXQ7XG5cdFxuXG4gICAgICAgICAgICBjb25zdCBqc29uT2JqID0gZHJhZ29uQm9uZXNKc29uIC8vSlNPTi5wYXJzZSggYXNzZXRzWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGFuaW1hdGlvbk5hbWVPYmogPSBqc29uT2JqLmFuaW1hdGlvbnM7XG4gICAgICAgICAgICBsZXQgYW5pbWF0aW9uTmFtZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IG5hbWUgaW4gYW5pbWF0aW9uTmFtZU9iaikge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbmFtZX5+OiAgJywgbmFtZSk7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbk5hbWVzLnB1c2gobmFtZSk7XG4gICAgICAgICAgICB9XG5cdFx0XHQgICAgICBjb25zb2xlLmxvZyhcInNrZWxldG9uLmFuaW1hdGlvbjogXCIsIHNrZWxldG9uLmFuaW1hdGlvbik7XG4gICAgICAgICAgICBza2VsZXRvbi5hbmltYXRpb25OYW1lcyA9IGFuaW1hdGlvbk5hbWVzO1xuXHRcdFx0ICAgICAgc2tlbGV0b24ubG9vcCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImpzb25PYmpbJ3NrZWxldG9uJ10gOiBcIiwganNvbk9ialsnc2tlbGV0b24nXSlcblxuICAgICAgICAgICAgcmVzb2x2ZShqc29uT2JqWydza2VsZXRvbiddKTtcblxuXG4gICAgICAgICAgICAvLyBjb25zdCBhdGxhc09iaiA9IG5ldyBkcmFnb25Cb25lcy5EcmFnb25Cb25lc0F0bGFzQXNzZXQoKVxuICAgICAgICAgICAgLy8gYXRsYXNPYmoudXVpZCA9IGF0bGFzXG4gICAgICAgICAgICAvLyBhdGxhc09iai5hdGxhc0pzb24gPSBhdGxhc0pzb25cbiAgICAgICAgICAgIC8vIGF0bGFzT2JqLnRleHR1cmUgPSB0ZXh0dXJlXG4gIFxuICAgICAgICAgICAgLy8gY29uc3QgYXNzZXQgPSBuZXcgZHJhZ29uQm9uZXMuRHJhZ29uQm9uZXNBc3NldCgpXG4gICAgICAgICAgICAvLyBhc3NldC51dWlkID0gc2tlXG4gICAgICAgICAgICAvLyBhc3NldC5kcmFnb25Cb25lc0pzb24gPSBkcmFnb25Cb25lc0pzb247XG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGFybWF0dXJlTmFtZSA9IGFzc2V0Ll9kcmFnb25Cb25lc0pzb25EYXRhLmFybWF0dXJlWzBdLm5hbWUgfHwgJ2RlZmF1bHQnO1xuICAgICAgICAgICAgLy8gZHJhZ29uRGlzcGxheS5hcm1hdHVyZU5hbWUgPSBhcm1hdHVyZU5hbWU7XG4gIFxuICAgICAgICAgICAgLy8gZHJhZ29uRGlzcGxheS5kcmFnb25BdGxhc0Fzc2V0ID0gYXRsYXNPYmpcbiAgICAgICAgICAgIC8vIGRyYWdvbkRpc3BsYXkuZHJhZ29uQXNzZXQgPSBhc3NldDtcbiAgICAgICAgICAgIC8vIHJlc29sdmUoYXNzZXQuX2RyYWdvbkJvbmVzSnNvbkRhdGEuYXJtYXR1cmVbMF0uYWFiYik7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIFxufVxuIl19
+//------QC-SOURCE-SPLIT------
+
+                (function() {
+                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
+                    var __module = nodeEnv ? module : {exports:{}};
+                    var __filename = 'preview-scripts/assets/OP15/script/defaultData.js';
+                    var __require = nodeEnv ? function (request) {
+                        return cc.require(request);
+                    } : function (request) {
+                        return __quick_compile_project__.require(request, __filename);
+                    };
+                    function __define (exports, require, module) {
+                        if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
+cc._RF.push(module, 'c41b05RVddEPK86siw92bnl', 'defaultData');
+// OP15/script/defaultData.js
+
+"use strict";
+
+exports.__esModule = true;
+exports.defaultData = void 0;
+var defaultData = {
+  // "begin_audio": "http://staging-teach.cdn.ireadabc.com/b1e5378083adac9950839772c7b67f34.mp3",
+  "begin_audio": "http://staging-teach.cdn.ireadabc.com/81e7a94e1420a4cbcaa583d4188ab145.mp3",
+  "playing_audio": "http://teach.cdn.ireadabc.com/549347d1be620d9d91b7420d45b3cb7a.mp3",
+  "end_audio": "http://staging-teach.cdn.ireadabc.com/81e7a94e1420a4cbcaa583d4188ab145.mp3",
+  "bgItem": {
+    "url": "http://teach.cdn.ireadabc.com/adcccbd26e2cfa259920e24df01d4b92.png",
+    "rect": {
+      "x": 374.6,
+      "y": 0,
+      "width": 293.8,
+      "height": 390
+    }
+  },
+  "hotZoneItemArr": [{
+    "id": "1638090450402",
+    "index": 0,
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/c5c6cd890660a3c22fde393a3770458f.json",
+      "name": "小汽车_ske.json"
+    },
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/cea107517406463474d907e306163226.json",
+      "name": "小汽车_tex.json"
+    },
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/84bce64cd4259e604a458d08ddd75bec.png",
+      "name": "小汽车_tex.png"
+    },
+    "dragDot": {
+      "x": 521.5,
+      "y": 195
+    },
+    "gIdx": "1",
+    "rect": {
+      "x": 46.9,
+      "y": 95,
+      "width": 200,
+      "height": 200
+    }
+  }, {
+    "id": "1638090465133",
+    "index": 1,
+    "pic_url": "http://teach.cdn.ireadabc.com/70d02ee3788e373f707a45530cd2f9c0.png",
+    "itemType": "pic",
+    "fontScale": 0.81484375,
+    "imgScale": 0.23579201934703747,
+    "imgSizeW": 1246,
+    "imgSizeH": 1654,
+    "mapScale": 0.81484375,
+    "dragDot": {
+      "x": 521.5,
+      "y": 195
+    },
+    "gIdx": "2",
+    "rect": {
+      "x": 0,
+      "y": 1,
+      "width": 293.8,
+      "height": 390
+    }
+  }, {
+    "id": "1638090485031",
+    "index": 2,
+    "audio_url": "http://teach.cdn.ireadabc.com/e31c3b1914837a611d4d3bb1ceb00773.mp3",
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/d2d7de9f8079f36e8354d16e4ca26476.json",
+      "name": "房子_ske.json"
+    },
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/204ea18018a352a30fd233a46f9a0a1a.json",
+      "name": "房子_tex.json"
+    },
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/cf8da0ab00a7d9f34bdf8f490c29dcbf.png",
+      "name": "房子_tex.png"
+    },
+    "dragDot": {
+      "x": 521.5,
+      "y": 195
+    },
+    "gIdx": "0",
+    "labelText": "14",
+    "posX": 578,
+    "posY": 160.99791334496155,
+    "rect": {
+      "x": 124.9,
+      "y": 108,
+      "width": 170,
+      "height": 106
+    }
+  }, {
+    "id": "1638090539787",
+    "index": 3,
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/ed2ac4931a9c00ff6c4298381722676e.json",
+      "name": "牛_ske.json"
+    },
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/0e153093ee7265b6a843847543d6110b.json",
+      "name": "牛_tex.json"
+    },
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/631661e13616eea6cde9f9e6610f5008.png",
+      "name": "牛_tex.png"
+    },
+    "dragDot": {
+      "x": 521.5,
+      "y": 197.46116504854368
+    },
+    "gIdx": "1",
+    "rect": {
+      "x": 46.9,
+      "y": 95,
+      "width": 200,
+      "height": 200
+    }
+  }, {
+    "id": "1638090562867",
+    "index": 4,
+    "audio_url": "http://teach.cdn.ireadabc.com/bf1924c502ca1a4ac928a31e7c8aa70e.mp3",
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/bd3c2cc93b1593433a58d8482972ff66.json",
+      "name": "苹果_ske.json"
+    },
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/1f54df317a8c86271e29d6db3ffb55ce.json",
+      "name": "苹果_tex.json"
+    },
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/734ac06a7ef018b457e7ac7692789ffa.png",
+      "name": "苹果_tex.png"
+    },
+    "dragDot": {
+      "x": 521.5,
+      "y": 197.46116504854368
+    },
+    "gIdx": "0",
+    "labelText": "6",
+    "posX": 429,
+    "posY": 146,
+    "rect": {
+      "x": -0.1,
+      "y": 70,
+      "width": 122,
+      "height": 152
+    }
+  }, {
+    "id": "1638090594247",
+    "index": 5,
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/1d4b251caf0c0b8245fb17cd8445672c.json",
+      "name": "农夫_ske.json"
+    },
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/1fdd04cacb6d543cf05ce64e8124a6ff.json",
+      "name": "农夫_tex.json"
+    },
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/8f582cb39eb349da08e06289b0ce6c16.png",
+      "name": "农夫_tex.png"
+    },
+    "dragDot": {
+      "x": 521.5,
+      "y": 197.46116504854368
+    },
+    "gIdx": "1",
+    "rect": {
+      "x": 46.9,
+      "y": 95,
+      "width": 200,
+      "height": 200
+    }
+  }, {
+    "id": "1638090663056",
+    "index": 6,
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/4503721901880d0b6c3ad6d4261e958b.json",
+      "name": "小女孩_ske.json"
+    },
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/fc4fd0b2f672dff7c7b2148830164090.json",
+      "name": "小女孩_tex.json"
+    },
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/4be41c15972caf99eef956ba48759c91.png",
+      "name": "小女孩_tex.png"
+    },
+    "dragDot": {
+      "x": 521.5,
+      "y": 197.46116504854368
+    },
+    "gIdx": "1",
+    "rect": {
+      "x": 46.9,
+      "y": 95,
+      "width": 200,
+      "height": 200
+    }
+  }, {
+    "id": "1638090685571",
+    "index": 7,
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/55951c794b414ab58cca023642819e37.json",
+      "name": "母鸡_ske.json"
+    },
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/47b93323b1d1e1e6020704c537f46820.json",
+      "name": "母鸡_tex.json"
+    },
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/dd66021ff860b02a559d59817c71e27f.png",
+      "name": "母鸡_tex.png"
+    },
+    "dragDot": {
+      "x": 521.5,
+      "y": 197.46116504854368
+    },
+    "gIdx": "1",
+    "rect": {
+      "x": 46.9,
+      "y": 95,
+      "width": 200,
+      "height": 200
+    }
+  }, {
+    "id": "1638090695652",
+    "index": 8,
+    "audio_url": "http://teach.cdn.ireadabc.com/323feb19d153069702ffd21097f18f79.mp3",
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/cd7c7a756c0f79d28f419576e3b85b0c.json",
+      "name": "鸭子_ske.json"
+    },
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/7613f30893a5f64773a77723c1d67f0d.json",
+      "name": "鸭子_tex.json"
+    },
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/59b2293ef4eea9d64ff9821bc5d69a6d.png",
+      "name": "鸭子_tex.png"
+    },
+    "dragDot": {
+      "x": 521.5,
+      "y": 197.46116504854368
+    },
+    "gIdx": "0",
+    "labelText": "11",
+    "posX": 564.4993151491155,
+    "posY": 247.99735690361797,
+    "rect": {
+      "x": 127.9,
+      "y": 216,
+      "width": 124,
+      "height": 64
+    }
+  }, {
+    "id": "1638090758159",
+    "index": 9,
+    "audio_url": "http://teach.cdn.ireadabc.com/b903b174f09107517b5d6f8934b73447.mp3",
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/b9fa85c227daa6539f12cab5a5058052.json",
+      "name": "鸡蛋_ske.json"
+    },
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/99aa8de7b69000ac6c5e0fb6a508b692.json",
+      "name": "鸡蛋_tex.json"
+    },
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/09bd0a34a4508613fd7c167724e4a969.png",
+      "name": "鸡蛋_tex.png"
+    },
+    "dragDot": {
+      "x": 521.5,
+      "y": 197.46116504854368
     },
-    cancel: xt,
-    start: wt,
-    stop: bt,
-    assign: _t,
-    after: Et,
-    done: Tt,
-    respond: function respond(t, n) {
-      return yt(t, _e(_e({}, n), {
-        to: function to(t, e, n) {
-          return n._event.origin;
-        }
-      }));
+    "gIdx": "0",
+    "labelText": "7",
+    "posX": 471.50036382703234,
+    "posY": 291.99683256465954,
+    "rect": {
+      "x": 67.4,
+      "y": 223,
+      "width": 59,
+      "height": 138
+    }
+  }, {
+    "id": "1638090812155",
+    "index": 10,
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/357fef8204228afb43d0ce73746228e5.json",
+      "name": "é±¼_ske.json"
     },
-    forwardTo: Ot,
-    escalate: function escalate(n, r) {
-      return gt(function (t, e, r) {
-        return {
-          type: at,
-          data: N(n) ? n(t, e, r) : n
-        };
-      }, _e(_e({}, r), {
-        to: t.SpecialTargets.Parent
-      }));
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/f694e5442095a317fc7d8b1390e630c7.json",
+      "name": "é±¼_tex.json"
     },
-    choose: function choose(e) {
-      return {
-        type: t.ActionTypes.Choose,
-        conds: e
-      };
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/f566cca10fd83f62a465b144ac73d483.png",
+      "name": "é±¼_tex.png"
     },
-    pure: function pure(e) {
-      return {
-        type: t.ActionTypes.Pure,
-        get: e
-      };
+    "dragDot": {
+      "x": 521.5,
+      "y": 197.46116504854368
+    },
+    "gIdx": "1",
+    "rect": {
+      "x": 46.9,
+      "y": 95,
+      "width": 200,
+      "height": 200
     }
-  };
-  t.Interpreter = Zt, t.Machine = function (t, e, n) {
-    return void 0 === n && (n = t.context), new zt(t, e, n);
-  }, t.State = kt, t.StateNode = zt, t.actions = ee, t.assign = _t, t.createMachine = function (t, e) {
-    return new zt(t, e);
-  }, t.createSchema = function (t) {
-    return t;
-  }, t.doneInvoke = Nt, t.forwardTo = Ot, t.interpret = te, t.mapState = function (t, e) {
-    var n, i, o;
-
-    try {
-      for (var a = r(s(t)), u = a.next(); !u.done; u = a.next()) {
-        var h = u.value;
-        c(h, e) && (!o || e.length > o.length) && (o = h);
-      }
-    } catch (t) {
-      n = {
-        error: t
-      };
-    } finally {
-      try {
-        u && !u.done && (i = a["return"]) && i.call(a);
-      } finally {
-        if (n) throw n.error;
-      }
+  }, {
+    "id": "1638090824244",
+    "index": 11,
+    "audio_url": "http://teach.cdn.ireadabc.com/2656b72aec7f6def07713fbc99309168.mp3",
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/20cbf3d186a197baaed38204dd017f51.json",
+      "name": "猫_ske.json"
+    },
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/d7de5a32de3ee1ad660dc509ba8adf1d.json",
+      "name": "猫_tex.json"
+    },
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/af86e967aab8632cd0b26d60a62f0675.png",
+      "name": "猫_tex.png"
+    },
+    "dragDot": {
+      "x": 521.5,
+      "y": 197.46116504854368
+    },
+    "gIdx": "0",
+    "labelText": "10",
+    "posX": 408.50114498507236,
+    "posY": 288.99689676943,
+    "rect": {
+      "x": 1.4,
+      "y": 222,
+      "width": 65,
+      "height": 134
     }
-
-    return t[o];
-  }, t.matchState = function (t, e, n) {
-    var o,
-        a,
-        s = kt.from(t, t instanceof kt ? t.context : void 0);
-
-    try {
-      for (var c = r(e), u = c.next(); !u.done; u = c.next()) {
-        var h = i(u.value, 2),
-            f = h[0],
-            l = h[1];
-        if (s.matches(f)) return l(s);
-      }
-    } catch (t) {
-      o = {
-        error: t
-      };
-    } finally {
-      try {
-        u && !u.done && (a = c["return"]) && a.call(c);
-      } finally {
-        if (o) throw o.error;
-      }
+  }, {
+    "id": "1638090897644",
+    "index": 12,
+    "audio_url": "http://teach.cdn.ireadabc.com/9bbf8ba2fa7f96ea5a95c27a384414a2.mp3",
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/d8506ebddb29c8d08b4b93376b45f5c9.json",
+      "name": "鸟_ske.json"
+    },
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/9fad47c99025b7b229df52afb797ec5c.json",
+      "name": "鸟_tex.json"
+    },
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/e86b136b9706768c5ca0dba3dc0aab21.png",
+      "name": "鸟_tex.png"
+    },
+    "dragDot": {
+      "x": 521.5,
+      "y": 197.46116504854368
+    },
+    "gIdx": "0",
+    "labelText": "9",
+    "posX": 573,
+    "posY": 74,
+    "rect": {
+      "x": 127.9,
+      "y": 41,
+      "width": 154,
+      "height": 66
     }
-
-    return n(s);
-  }, t.matchesState = c, t.send = yt, t.sendParent = gt, t.sendUpdate = mt, t.spawn = function (t, n) {
-    var r = function (t) {
-      return A(t) ? _e(_e({}, Yt), {
-        name: t
-      }) : _e(_e(_e({}, Yt), {
-        name: C()
-      }), t);
-    }(n);
-
-    return function (e) {
-      return e ? e.spawn(t, r.name, r) : Vt(t, r.name);
-    }(It[It.length - 1]);
-  }, Object.defineProperty(t, "__esModule", {
-    value: !0
-  });
-});
+  }, {
+    "id": "1638090948950",
+    "index": 13,
+    "itemType": "rect",
+    "fontScale": 0.81484375,
+    "imgScale": 1,
+    "imgSizeW": 0,
+    "imgSizeH": 0,
+    "mapScale": 0.81484375,
+    "skeJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/3d1d49e583d97cd5097d08102265b1c6.json",
+      "name": "蚂蚁_ske.json"
+    },
+    "texJsonData": {
+      "url": "http://teach.cdn.ireadabc.com/9a3a5c871b288aebb1e6920f1e9709f8.json",
+      "name": "蚂蚁_tex.json"
+    },
+    "texPngData": {
+      "url": "http://teach.cdn.ireadabc.com/1fad62f313b6ff72a642cb4b15aeaf04.png",
+      "name": "蚂蚁_tex.png"
+    },
+    "dragDot": {
+      "x": 521.5,
+      "y": 197.46116504854368
+    },
+    "gIdx": "1",
+    "rect": {
+      "x": 46.9,
+      "y": 95,
+      "width": 200,
+      "height": 200
+    }
+  }],
+  "guide_audio": "http://staging-teach.cdn.ireadabc.com/d6c1d3b84a4774a0fc183a14abbb6c09.mp3",
+  "wrong_audio1": "http://staging-teach.cdn.ireadabc.com/b77ef2a6cdcb6504520484a9b197b2fd.mp3",
+  "wrong_audio2": "http://staging-teach.cdn.ireadabc.com/8dacb2445816e1f068ea116752c21173.mp3",
+  "begin_audio1": "http://staging-teach.cdn.ireadabc.com/e45ad0823ae2c8e04246d76c7f57030d.mp3",
+  "begin_audio2": "http://staging-teach.cdn.ireadabc.com/05232ad51f8d9e1af6dd1273147bc58f.mp3",
+  "right_audio": "http://staging-teach.cdn.ireadabc.com/330eff8d5e8cc429965da82652207ff2.mp3",
+  "wrong_audio": "http://staging-teach.cdn.ireadabc.com/1664170e569d974279bcec626be176d9.mp3",
+  "begin_sep_time": 15
+};
+exports.defaultData = defaultData;
 
 cc._RF.pop();
-
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
                     }
                     if (nodeEnv) {
                         __define(__module.exports, __require, __module);
@@ -5834,5 +6335,5 @@ cc._RF.pop();
                         });
                     }
                 })();
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hc3NldHMvT1AxNS9zY3JpcHQveHN0YXRlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLENBQUMsVUFBUyxDQUFULEVBQVcsQ0FBWCxFQUFhO0FBQUMsY0FBVSxPQUFPLE9BQWpCLElBQTBCLGVBQWEsT0FBTyxNQUE5QyxHQUFxRCxDQUFDLENBQUMsT0FBRCxDQUF0RCxHQUFnRSxjQUFZLE9BQU8sTUFBbkIsSUFBMkIsTUFBTSxDQUFDLEdBQWxDLEdBQXNDLE1BQU0sQ0FBQyxDQUFDLFNBQUQsQ0FBRCxFQUFhLENBQWIsQ0FBNUMsR0FBNEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLGVBQWEsT0FBTyxVQUFwQixHQUErQixVQUEvQixHQUEwQyxDQUFDLElBQUUsSUFBaEQsRUFBc0QsTUFBdEQsR0FBNkQsRUFBOUQsQ0FBN0g7QUFBK0wsQ0FBN00sU0FBb04sVUFBUyxDQUFULEVBQVc7QUFBQztBQUNqTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUFvRixNQUFJLEVBQUMsR0FBQyxhQUFVO0FBQUMsV0FBTSxDQUFDLEVBQUMsR0FBQyxNQUFNLENBQUMsTUFBUCxJQUFlLFVBQVMsQ0FBVCxFQUFXO0FBQUMsV0FBSSxJQUFJLENBQUosRUFBTSxDQUFDLEdBQUMsQ0FBUixFQUFVLENBQUMsR0FBQyxTQUFTLENBQUMsTUFBMUIsRUFBaUMsQ0FBQyxHQUFDLENBQW5DLEVBQXFDLENBQUMsRUFBdEM7QUFBeUMsYUFBSSxJQUFJLENBQVIsSUFBYSxDQUFDLEdBQUMsU0FBUyxDQUFDLENBQUQsQ0FBeEI7QUFBNEIsVUFBQSxNQUFNLENBQUMsU0FBUCxDQUFpQixjQUFqQixDQUFnQyxJQUFoQyxDQUFxQyxDQUFyQyxFQUF1QyxDQUF2QyxNQUE0QyxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUssQ0FBQyxDQUFDLENBQUQsQ0FBbEQ7QUFBNUI7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LEVBQUosQ0FBRixFQUFVO0FBQUMsUUFBQSxJQUFJLEVBQUM7QUFBTixPQUFWLENBQU4sR0FBMEIsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRCxFQUFJLEVBQUosQ0FBRixFQUFVO0FBQUMsUUFBQSxJQUFJLEVBQUMsQ0FBQztBQUFQLE9BQVYsQ0FBRixFQUF3QixDQUF4QixDQUFsQztBQUE2RCxLQUF6RSxDQUEwRSxDQUExRSxDQUFOOztBQUFtRixXQUFPLFVBQVMsQ0FBVCxFQUFXO0FBQUMsYUFBTyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUYsQ0FBUSxDQUFSLEVBQVUsQ0FBQyxDQUFDLElBQVosRUFBaUIsQ0FBakIsQ0FBRCxHQUFxQixFQUFFLENBQUMsQ0FBRCxFQUFHLENBQUMsQ0FBQyxJQUFMLENBQS9CO0FBQTBDLEtBQXRELENBQXVELEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBSCxHQUFVLENBQVgsQ0FBekQsQ0FBUDtBQUErRSxHQUFuakMsRUFBb2pDLE1BQU0sQ0FBQyxjQUFQLENBQXNCLENBQXRCLEVBQXdCLFlBQXhCLEVBQXFDO0FBQUMsSUFBQSxLQUFLLEVBQUMsQ0FBQztBQUFSLEdBQXJDLENBQXBqQztBQUFxbUMsQ0FkaGdwRCxDQUFEIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIhZnVuY3Rpb24odCxlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9lKGV4cG9ydHMpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW1wiZXhwb3J0c1wiXSxlKTplKCh0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dHx8c2VsZikuWFN0YXRlPXt9KX0odGhpcywoZnVuY3Rpb24odCl7XCJ1c2Ugc3RyaWN0XCI7XG4vKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxuICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cblxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcbiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcbiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG4gICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcbiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL3ZhciBlPWZ1bmN0aW9uKCl7cmV0dXJuKGU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIGkgaW4gZT1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJih0W2ldPWVbaV0pO3JldHVybiB0fSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBuKHQsZSl7dmFyIG49e307Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJmUuaW5kZXhPZihyKTwwJiYobltyXT10W3JdKTtpZihudWxsIT10JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7aTxyLmxlbmd0aDtpKyspZS5pbmRleE9mKHJbaV0pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0LHJbaV0pJiYobltyW2ldXT10W3JbaV1dKX1yZXR1cm4gbn1mdW5jdGlvbiByKHQpe3ZhciBlPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLG49ZSYmdFtlXSxyPTA7aWYobilyZXR1cm4gbi5jYWxsKHQpO2lmKHQmJlwibnVtYmVyXCI9PXR5cGVvZiB0Lmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZyPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtyKytdLGRvbmU6IXR9fX07dGhyb3cgbmV3IFR5cGVFcnJvcihlP1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9ZnVuY3Rpb24gaSh0LGUpe3ZhciBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdO2lmKCFuKXJldHVybiB0O3ZhciByLGksbz1uLmNhbGwodCksYT1bXTt0cnl7Zm9yKDsodm9pZCAwPT09ZXx8ZS0tID4wKSYmIShyPW8ubmV4dCgpKS5kb25lOylhLnB1c2goci52YWx1ZSl9Y2F0Y2godCl7aT17ZXJyb3I6dH19ZmluYWxseXt0cnl7ciYmIXIuZG9uZSYmKG49by5yZXR1cm4pJiZuLmNhbGwobyl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXJldHVybiBhfWZ1bmN0aW9uIG8odCxlLG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcixpPTAsbz1lLmxlbmd0aDtpPG87aSsrKSFyJiZpIGluIGV8fChyfHwocj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLDAsaSkpLHJbaV09ZVtpXSk7cmV0dXJuIHQuY29uY2F0KHJ8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKX12YXIgYT17fTtmdW5jdGlvbiBzKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KX1mdW5jdGlvbiBjKHQsZSxuKXt2b2lkIDA9PT1uJiYobj1cIi5cIik7dmFyIHI9Zih0LG4pLGk9ZihlLG4pO3JldHVybiBBKGkpPyEhQShyKSYmaT09PXI6QShyKT9yIGluIGk6cyhyKS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gaSYmYyhyW3RdLGlbdF0pfSkpfWZ1bmN0aW9uIHUodCl7dHJ5e3JldHVybiBBKHQpfHxcIm51bWJlclwiPT10eXBlb2YgdD9cIlwiLmNvbmNhdCh0KTp0LnR5cGV9Y2F0Y2godCl7dGhyb3cgbmV3IEVycm9yKFwiRXZlbnRzIG11c3QgYmUgc3RyaW5ncyBvciBvYmplY3RzIHdpdGggYSBzdHJpbmcgZXZlbnQudHlwZSBwcm9wZXJ0eS5cIil9fWZ1bmN0aW9uIGgodCxlKXt0cnl7cmV0dXJuIFQodCk/dDp0LnRvU3RyaW5nKCkuc3BsaXQoZSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKFwiJ1wiLmNvbmNhdCh0LFwiJyBpcyBub3QgYSB2YWxpZCBzdGF0ZSBwYXRoLlwiKSl9fWZ1bmN0aW9uIGYodCxlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2Yobj10KSYmXCJ2YWx1ZVwiaW4gbiYmXCJjb250ZXh0XCJpbiBuJiZcImV2ZW50XCJpbiBuJiZcIl9ldmVudFwiaW4gbj90LnZhbHVlOlQodCk/bCh0KTpcInN0cmluZ1wiIT10eXBlb2YgdD90OmwoaCh0LGUpKTt2YXIgbn1mdW5jdGlvbiBsKHQpe2lmKDE9PT10Lmxlbmd0aClyZXR1cm4gdFswXTtmb3IodmFyIGU9e30sbj1lLHI9MDtyPHQubGVuZ3RoLTE7cisrKXI9PT10Lmxlbmd0aC0yP25bdFtyXV09dFtyKzFdOihuW3Rbcl1dPXt9LG49blt0W3JdXSk7cmV0dXJuIGV9ZnVuY3Rpb24gZCh0LGUpe2Zvcih2YXIgbj17fSxyPXModCksaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgbz1yW2ldO25bb109ZSh0W29dLG8sdCxpKX1yZXR1cm4gbn1mdW5jdGlvbiBwKHQsZSxuKXt2YXIgaSxvLGE9e307dHJ5e2Zvcih2YXIgYz1yKHModCkpLHU9Yy5uZXh0KCk7IXUuZG9uZTt1PWMubmV4dCgpKXt2YXIgaD11LnZhbHVlLGY9dFtoXTtuKGYpJiYoYVtoXT1lKGYsaCx0KSl9fWNhdGNoKHQpe2k9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3UmJiF1LmRvbmUmJihvPWMucmV0dXJuKSYmby5jYWxsKGMpfWZpbmFsbHl7aWYoaSl0aHJvdyBpLmVycm9yfX1yZXR1cm4gYX12YXIgdj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG4saSxvPWU7dHJ5e2Zvcih2YXIgYT1yKHQpLHM9YS5uZXh0KCk7IXMuZG9uZTtzPWEubmV4dCgpKXtvPW9bcy52YWx1ZV19fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3MmJiFzLmRvbmUmJihpPWEucmV0dXJuKSYmaS5jYWxsKGEpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gb319O2Z1bmN0aW9uIHkodCl7cmV0dXJuIHQ/QSh0KT9bW3RdXTpnKHModCkubWFwKChmdW5jdGlvbihlKXt2YXIgbj10W2VdO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBufHxuJiZPYmplY3Qua2V5cyhuKS5sZW5ndGg/eSh0W2VdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybltlXS5jb25jYXQodCl9KSk6W1tlXV19KSkpOltbXV19ZnVuY3Rpb24gZyh0KXt2YXIgZTtyZXR1cm4oZT1bXSkuY29uY2F0LmFwcGx5KGUsbyhbXSxpKHQpLCExKSl9ZnVuY3Rpb24gbSh0KXtyZXR1cm4gVCh0KT90Olt0XX1mdW5jdGlvbiBTKHQpe3JldHVybiB2b2lkIDA9PT10P1tdOm0odCl9ZnVuY3Rpb24geCh0LGUsbil7dmFyIGksbztpZihOKHQpKXJldHVybiB0KGUsbi5kYXRhKTt2YXIgYT17fTt0cnl7Zm9yKHZhciBzPXIoT2JqZWN0LmtleXModCkpLGM9cy5uZXh0KCk7IWMuZG9uZTtjPXMubmV4dCgpKXt2YXIgdT1jLnZhbHVlLGg9dFt1XTtOKGgpP2FbdV09aChlLG4uZGF0YSk6YVt1XT1ofX1jYXRjaCh0KXtpPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtjJiYhYy5kb25lJiYobz1zLnJldHVybikmJm8uY2FsbChzKX1maW5hbGx5e2lmKGkpdGhyb3cgaS5lcnJvcn19cmV0dXJuIGF9ZnVuY3Rpb24gdyh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFByb21pc2V8fCEobnVsbD09PXR8fCFOKHQpJiZcIm9iamVjdFwiIT10eXBlb2YgdHx8IU4odC50aGVuKSl9ZnVuY3Rpb24gYih0LGUpe3ZhciBuLG8sYT1pKFtbXSxbXV0sMikscz1hWzBdLGM9YVsxXTt0cnl7Zm9yKHZhciB1PXIodCksaD11Lm5leHQoKTshaC5kb25lO2g9dS5uZXh0KCkpe3ZhciBmPWgudmFsdWU7ZShmKT9zLnB1c2goZik6Yy5wdXNoKGYpfX1jYXRjaCh0KXtuPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtoJiYhaC5kb25lJiYobz11LnJldHVybikmJm8uY2FsbCh1KX1maW5hbGx5e2lmKG4pdGhyb3cgbi5lcnJvcn19cmV0dXJuW3MsY119ZnVuY3Rpb24gXyh0LGUpe3JldHVybiBkKHQuc3RhdGVzLChmdW5jdGlvbih0LG4pe2lmKHQpe3ZhciByPShBKGUpP3ZvaWQgMDplW25dKXx8KHQ/dC5jdXJyZW50OnZvaWQgMCk7aWYocilyZXR1cm57Y3VycmVudDpyLHN0YXRlczpfKHQscil9fX0pKX1mdW5jdGlvbiBFKHQsZSxuLGkpe3JldHVybiB0P24ucmVkdWNlKChmdW5jdGlvbih0LG4pe3ZhciBvLGEsYz1uLmFzc2lnbm1lbnQsdT17c3RhdGU6aSxhY3Rpb246bixfZXZlbnQ6ZX0saD17fTtpZihOKGMpKWg9Yyh0LGUuZGF0YSx1KTtlbHNlIHRyeXtmb3IodmFyIGY9cihzKGMpKSxsPWYubmV4dCgpOyFsLmRvbmU7bD1mLm5leHQoKSl7dmFyIGQ9bC52YWx1ZSxwPWNbZF07aFtkXT1OKHApP3AodCxlLmRhdGEsdSk6cH19Y2F0Y2godCl7bz17ZXJyb3I6dH19ZmluYWxseXt0cnl7bCYmIWwuZG9uZSYmKGE9Zi5yZXR1cm4pJiZhLmNhbGwoZil9ZmluYWxseXtpZihvKXRocm93IG8uZXJyb3J9fXJldHVybiBPYmplY3QuYXNzaWduKHt9LHQsaCl9KSx0KTp0fWZ1bmN0aW9uIFQodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCl9ZnVuY3Rpb24gTih0KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0fWZ1bmN0aW9uIEEodCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHR9ZnVuY3Rpb24gTyh0LGUpe2lmKHQpcmV0dXJuIEEodCk/e3R5cGU6XCJ4c3RhdGUuZ3VhcmRcIixuYW1lOnQscHJlZGljYXRlOmU/ZVt0XTp2b2lkIDB9Ok4odCk/e3R5cGU6XCJ4c3RhdGUuZ3VhcmRcIixuYW1lOnQubmFtZSxwcmVkaWNhdGU6dH06dH12YXIgUD1mdW5jdGlvbigpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLm9ic2VydmFibGV8fFwiQEBvYnNlcnZhYmxlXCJ9KCk7ZnVuY3Rpb24gayh0KXt0cnl7cmV0dXJuXCJfX3hzdGF0ZW5vZGVcImluIHR9Y2F0Y2godCl7cmV0dXJuITF9fXZhciBJLGosQz1mdW5jdGlvbigpe3ZhciB0PTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuKCsrdCkudG9TdHJpbmcoMTYpfX0oKTtmdW5jdGlvbiBWKHQsbil7cmV0dXJuIEEodCl8fFwibnVtYmVyXCI9PXR5cGVvZiB0P2Uoe3R5cGU6dH0sbik6dH1mdW5jdGlvbiBMKHQsbil7aWYoIUEodCkmJlwiJCR0eXBlXCJpbiB0JiZcInNjeG1sXCI9PT10LiQkdHlwZSlyZXR1cm4gdDt2YXIgcj1WKHQpO3JldHVybiBlKHtuYW1lOnIudHlwZSxkYXRhOnIsJCR0eXBlOlwic2N4bWxcIix0eXBlOlwiZXh0ZXJuYWxcIn0sbil9ZnVuY3Rpb24gRCh0LG4pe3JldHVybiBtKG4pLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHZvaWQgMD09PW58fFwic3RyaW5nXCI9PXR5cGVvZiBufHxrKG4pP3t0YXJnZXQ6bixldmVudDp0fTplKGUoe30sbikse2V2ZW50OnR9KX0pKX1mdW5jdGlvbiBSKHQsZSxuLHIsaSl7dmFyIG89dC5vcHRpb25zLmd1YXJkcyxhPXtzdGF0ZTppLGNvbmQ6ZSxfZXZlbnQ6cn07aWYoXCJ4c3RhdGUuZ3VhcmRcIj09PWUudHlwZSlyZXR1cm4oKG51bGw9PW8/dm9pZCAwOm9bZS5uYW1lXSl8fGUucHJlZGljYXRlKShuLHIuZGF0YSxhKTt2YXIgcz1vW2UudHlwZV07aWYoIXMpdGhyb3cgbmV3IEVycm9yKFwiR3VhcmQgJ1wiLmNvbmNhdChlLnR5cGUsXCInIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBtYWNoaW5lICdcIikuY29uY2F0KHQuaWQsXCInLlwiKSk7cmV0dXJuIHMobixyLmRhdGEsYSl9ZnVuY3Rpb24gTSh0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD97dHlwZTp0fTp0fWZ1bmN0aW9uIHoodCxlLG4pe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB0KXJldHVybiB0O3ZhciByPWZ1bmN0aW9uKCl7fTtyZXR1cm57bmV4dDp0LGVycm9yOmV8fHIsY29tcGxldGU6bnx8cn19KEk9dC5BY3Rpb25UeXBlc3x8KHQuQWN0aW9uVHlwZXM9e30pKS5TdGFydD1cInhzdGF0ZS5zdGFydFwiLEkuU3RvcD1cInhzdGF0ZS5zdG9wXCIsSS5SYWlzZT1cInhzdGF0ZS5yYWlzZVwiLEkuU2VuZD1cInhzdGF0ZS5zZW5kXCIsSS5DYW5jZWw9XCJ4c3RhdGUuY2FuY2VsXCIsSS5OdWxsRXZlbnQ9XCJcIixJLkFzc2lnbj1cInhzdGF0ZS5hc3NpZ25cIixJLkFmdGVyPVwieHN0YXRlLmFmdGVyXCIsSS5Eb25lU3RhdGU9XCJkb25lLnN0YXRlXCIsSS5Eb25lSW52b2tlPVwiZG9uZS5pbnZva2VcIixJLkxvZz1cInhzdGF0ZS5sb2dcIixJLkluaXQ9XCJ4c3RhdGUuaW5pdFwiLEkuSW52b2tlPVwieHN0YXRlLmludm9rZVwiLEkuRXJyb3JFeGVjdXRpb249XCJlcnJvci5leGVjdXRpb25cIixJLkVycm9yQ29tbXVuaWNhdGlvbj1cImVycm9yLmNvbW11bmljYXRpb25cIixJLkVycm9yUGxhdGZvcm09XCJlcnJvci5wbGF0Zm9ybVwiLEkuRXJyb3JDdXN0b209XCJ4c3RhdGUuZXJyb3JcIixJLlVwZGF0ZT1cInhzdGF0ZS51cGRhdGVcIixJLlB1cmU9XCJ4c3RhdGUucHVyZVwiLEkuQ2hvb3NlPVwieHN0YXRlLmNob29zZVwiLChqPXQuU3BlY2lhbFRhcmdldHN8fCh0LlNwZWNpYWxUYXJnZXRzPXt9KSkuUGFyZW50PVwiI19wYXJlbnRcIixqLkludGVybmFsPVwiI19pbnRlcm5hbFwiO3ZhciBGPWZ1bmN0aW9uKHQpe3JldHVyblwiYXRvbWljXCI9PT10LnR5cGV8fFwiZmluYWxcIj09PXQudHlwZX07ZnVuY3Rpb24gVSh0KXtyZXR1cm4gcyh0LnN0YXRlcykubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5zdGF0ZXNbZV19KSl9ZnVuY3Rpb24gQih0KXt2YXIgZT1bdF07cmV0dXJuIEYodCk/ZTplLmNvbmNhdChnKFUodCkubWFwKEIpKSl9ZnVuY3Rpb24gSih0LGUpe3ZhciBuLGksbyxhLHMsYyx1LGgsZj1xKG5ldyBTZXQodCkpLGw9bmV3IFNldChlKTt0cnl7Zm9yKHZhciBkPXIobCkscD1kLm5leHQoKTshcC5kb25lO3A9ZC5uZXh0KCkpZm9yKHZhciB2PShFPXAudmFsdWUpLnBhcmVudDt2JiYhbC5oYXModik7KWwuYWRkKHYpLHY9di5wYXJlbnR9Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7cCYmIXAuZG9uZSYmKGk9ZC5yZXR1cm4pJiZpLmNhbGwoZCl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXZhciB5PXEobCk7dHJ5e2Zvcih2YXIgZz1yKGwpLG09Zy5uZXh0KCk7IW0uZG9uZTttPWcubmV4dCgpKXtpZihcImNvbXBvdW5kXCIhPT0oRT1tLnZhbHVlKS50eXBlfHx5LmdldChFKSYmeS5nZXQoRSkubGVuZ3RoKXtpZihcInBhcmFsbGVsXCI9PT1FLnR5cGUpdHJ5e2Zvcih2YXIgUz0ocz12b2lkIDAscihVKEUpKSkseD1TLm5leHQoKTsheC5kb25lO3g9Uy5uZXh0KCkpe3ZhciB3PXgudmFsdWU7XCJoaXN0b3J5XCIhPT13LnR5cGUmJihsLmhhcyh3KXx8KGwuYWRkKHcpLGYuZ2V0KHcpP2YuZ2V0KHcpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBsLmFkZCh0KX0pKTp3LmluaXRpYWxTdGF0ZU5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBsLmFkZCh0KX0pKSkpfX1jYXRjaCh0KXtzPXtlcnJvcjp0fX1maW5hbGx5e3RyeXt4JiYheC5kb25lJiYoYz1TLnJldHVybikmJmMuY2FsbChTKX1maW5hbGx5e2lmKHMpdGhyb3cgcy5lcnJvcn19fWVsc2UgZi5nZXQoRSk/Zi5nZXQoRSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGwuYWRkKHQpfSkpOkUuaW5pdGlhbFN0YXRlTm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGwuYWRkKHQpfSkpfX1jYXRjaCh0KXtvPXtlcnJvcjp0fX1maW5hbGx5e3RyeXttJiYhbS5kb25lJiYoYT1nLnJldHVybikmJmEuY2FsbChnKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19dHJ5e2Zvcih2YXIgYj1yKGwpLF89Yi5uZXh0KCk7IV8uZG9uZTtfPWIubmV4dCgpKXt2YXIgRTtmb3Iodj0oRT1fLnZhbHVlKS5wYXJlbnQ7diYmIWwuaGFzKHYpOylsLmFkZCh2KSx2PXYucGFyZW50fX1jYXRjaCh0KXt1PXtlcnJvcjp0fX1maW5hbGx5e3RyeXtfJiYhXy5kb25lJiYoaD1iLnJldHVybikmJmguY2FsbChiKX1maW5hbGx5e2lmKHUpdGhyb3cgdS5lcnJvcn19cmV0dXJuIGx9ZnVuY3Rpb24gcSh0KXt2YXIgZSxuLGk9bmV3IE1hcDt0cnl7Zm9yKHZhciBvPXIodCksYT1vLm5leHQoKTshYS5kb25lO2E9by5uZXh0KCkpe3ZhciBzPWEudmFsdWU7aS5oYXMocyl8fGkuc2V0KHMsW10pLHMucGFyZW50JiYoaS5oYXMocy5wYXJlbnQpfHxpLnNldChzLnBhcmVudCxbXSksaS5nZXQocy5wYXJlbnQpLnB1c2gocykpfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYobj1vLnJldHVybikmJm4uY2FsbChvKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIGl9ZnVuY3Rpb24gJCh0LGUpe3JldHVybiBmdW5jdGlvbiB0KGUsbil7dmFyIHI9bi5nZXQoZSk7aWYoIXIpcmV0dXJue307aWYoXCJjb21wb3VuZFwiPT09ZS50eXBlKXt2YXIgaT1yWzBdO2lmKCFpKXJldHVybnt9O2lmKEYoaSkpcmV0dXJuIGkua2V5fXZhciBvPXt9O3JldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKGUpe29bZS5rZXldPXQoZSxuKX0pKSxvfSh0LHEoSihbdF0sZSkpKX1mdW5jdGlvbiBYKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWV9KSk6dCBpbnN0YW5jZW9mIFNldCYmdC5oYXMoZSl9ZnVuY3Rpb24gSCh0LGUpe3JldHVyblwiY29tcG91bmRcIj09PWUudHlwZT9VKGUpLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVyblwiZmluYWxcIj09PWUudHlwZSYmWCh0LGUpfSkpOlwicGFyYWxsZWxcIj09PWUudHlwZSYmVShlKS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIEgodCxlKX0pKX1mdW5jdGlvbiBHKHQpe3JldHVybiBuZXcgU2V0KGcodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRhZ3N9KSkpKX12YXIgSz10LkFjdGlvblR5cGVzLlN0YXJ0LFE9dC5BY3Rpb25UeXBlcy5TdG9wLFc9dC5BY3Rpb25UeXBlcy5SYWlzZSxZPXQuQWN0aW9uVHlwZXMuU2VuZCxaPXQuQWN0aW9uVHlwZXMuQ2FuY2VsLHR0PXQuQWN0aW9uVHlwZXMuTnVsbEV2ZW50LGV0PXQuQWN0aW9uVHlwZXMuQXNzaWduLG50PSh0LkFjdGlvblR5cGVzLkFmdGVyLHQuQWN0aW9uVHlwZXMuRG9uZVN0YXRlLHQuQWN0aW9uVHlwZXMuTG9nKSxydD10LkFjdGlvblR5cGVzLkluaXQsaXQ9dC5BY3Rpb25UeXBlcy5JbnZva2Usb3Q9KHQuQWN0aW9uVHlwZXMuRXJyb3JFeGVjdXRpb24sdC5BY3Rpb25UeXBlcy5FcnJvclBsYXRmb3JtKSxhdD10LkFjdGlvblR5cGVzLkVycm9yQ3VzdG9tLHN0PXQuQWN0aW9uVHlwZXMuVXBkYXRlLGN0PXQuQWN0aW9uVHlwZXMuQ2hvb3NlLHV0PXQuQWN0aW9uVHlwZXMuUHVyZSxodD1MKHt0eXBlOnJ0fSk7ZnVuY3Rpb24gZnQodCxlKXtyZXR1cm4gZSYmZVt0XXx8dm9pZCAwfWZ1bmN0aW9uIGx0KHQsbil7dmFyIHI7aWYoQSh0KXx8XCJudW1iZXJcIj09dHlwZW9mIHQpcj1OKGk9ZnQodCxuKSk/e3R5cGU6dCxleGVjOml9Oml8fHt0eXBlOnQsZXhlYzp2b2lkIDB9O2Vsc2UgaWYoTih0KSlyPXt0eXBlOnQubmFtZXx8dC50b1N0cmluZygpLGV4ZWM6dH07ZWxzZXt2YXIgaTtpZihOKGk9ZnQodC50eXBlLG4pKSlyPWUoZSh7fSx0KSx7ZXhlYzppfSk7ZWxzZSBpZihpKXt2YXIgbz1pLnR5cGV8fHQudHlwZTtyPWUoZShlKHt9LGkpLHQpLHt0eXBlOm99KX1lbHNlIHI9dH1yZXR1cm4gcn12YXIgZHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD8oVCh0KT90Olt0XSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbHQodCxlKX0pKTpbXX07ZnVuY3Rpb24gcHQodCl7dmFyIG49bHQodCk7cmV0dXJuIGUoZSh7aWQ6QSh0KT90Om4uaWR9LG4pLHt0eXBlOm4udHlwZX0pfWZ1bmN0aW9uIHZ0KGUpe3JldHVybiBBKGUpP3t0eXBlOlcsZXZlbnQ6ZX06eXQoZSx7dG86dC5TcGVjaWFsVGFyZ2V0cy5JbnRlcm5hbH0pfWZ1bmN0aW9uIHl0KHQsZSl7cmV0dXJue3RvOmU/ZS50bzp2b2lkIDAsdHlwZTpZLGV2ZW50Ok4odCk/dDpWKHQpLGRlbGF5OmU/ZS5kZWxheTp2b2lkIDAsaWQ6ZSYmdm9pZCAwIT09ZS5pZD9lLmlkOk4odCk/dC5uYW1lOnUodCl9fWZ1bmN0aW9uIGd0KG4scil7cmV0dXJuIHl0KG4sZShlKHt9LHIpLHt0bzp0LlNwZWNpYWxUYXJnZXRzLlBhcmVudH0pKX1mdW5jdGlvbiBtdCgpe3JldHVybiBndChzdCl9dmFyIFN0PWZ1bmN0aW9uKHQsZSl7cmV0dXJue2NvbnRleHQ6dCxldmVudDplfX07dmFyIHh0PWZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOlosc2VuZElkOnR9fTtmdW5jdGlvbiB3dChlKXt2YXIgbj1wdChlKTtyZXR1cm57dHlwZTp0LkFjdGlvblR5cGVzLlN0YXJ0LGFjdGl2aXR5Om4sZXhlYzp2b2lkIDB9fWZ1bmN0aW9uIGJ0KGUpe3ZhciBuPU4oZSk/ZTpwdChlKTtyZXR1cm57dHlwZTp0LkFjdGlvblR5cGVzLlN0b3AsYWN0aXZpdHk6bixleGVjOnZvaWQgMH19dmFyIF90PWZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOmV0LGFzc2lnbm1lbnQ6dH19O2Z1bmN0aW9uIEV0KGUsbil7dmFyIHI9bj9cIiNcIi5jb25jYXQobik6XCJcIjtyZXR1cm5cIlwiLmNvbmNhdCh0LkFjdGlvblR5cGVzLkFmdGVyLFwiKFwiKS5jb25jYXQoZSxcIilcIikuY29uY2F0KHIpfWZ1bmN0aW9uIFR0KGUsbil7dmFyIHI9XCJcIi5jb25jYXQodC5BY3Rpb25UeXBlcy5Eb25lU3RhdGUsXCIuXCIpLmNvbmNhdChlKSxpPXt0eXBlOnIsZGF0YTpuLHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fTtyZXR1cm4gaX1mdW5jdGlvbiBOdChlLG4pe3ZhciByPVwiXCIuY29uY2F0KHQuQWN0aW9uVHlwZXMuRG9uZUludm9rZSxcIi5cIikuY29uY2F0KGUpLGk9e3R5cGU6cixkYXRhOm4sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gcn19O3JldHVybiBpfWZ1bmN0aW9uIEF0KGUsbil7dmFyIHI9XCJcIi5jb25jYXQodC5BY3Rpb25UeXBlcy5FcnJvclBsYXRmb3JtLFwiLlwiKS5jb25jYXQoZSksaT17dHlwZTpyLGRhdGE6bix0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiByfX07cmV0dXJuIGl9ZnVuY3Rpb24gT3QodCxuKXtyZXR1cm4geXQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSxlKGUoe30sbikse3RvOnR9KSl9ZnVuY3Rpb24gUHQobixyLGEscyxjLHUpe3ZvaWQgMD09PXUmJih1PSExKTt2YXIgaD1pKHU/W1tdLGNdOmIoYywoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZT09PWV0fSkpLDIpLGY9aFswXSxsPWhbMV0sZD1mLmxlbmd0aD9FKGEscyxmLHIpOmEscD11P1thXTp2b2lkIDA7cmV0dXJuW2cobC5tYXAoKGZ1bmN0aW9uKGEpe3ZhciBjO3N3aXRjaChhLnR5cGUpe2Nhc2UgVzpyZXR1cm57dHlwZTpXLF9ldmVudDpMKGEuZXZlbnQpfTtjYXNlIFk6cmV0dXJuIGZ1bmN0aW9uKHQsbixyLGkpe3ZhciBvLGE9e19ldmVudDpyfSxzPUwoTih0LmV2ZW50KT90LmV2ZW50KG4sci5kYXRhLGEpOnQuZXZlbnQpO2lmKEEodC5kZWxheSkpe3ZhciBjPWkmJmlbdC5kZWxheV07bz1OKGMpP2MobixyLmRhdGEsYSk6Y31lbHNlIG89Tih0LmRlbGF5KT90LmRlbGF5KG4sci5kYXRhLGEpOnQuZGVsYXk7dmFyIHU9Tih0LnRvKT90LnRvKG4sci5kYXRhLGEpOnQudG87cmV0dXJuIGUoZSh7fSx0KSx7dG86dSxfZXZlbnQ6cyxldmVudDpzLmRhdGEsZGVsYXk6b30pfShhLGQscyxuLm9wdGlvbnMuZGVsYXlzKTtjYXNlIG50OnJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIGUoZSh7fSx0KSx7dmFsdWU6QSh0LmV4cHIpP3QuZXhwcjp0LmV4cHIobixyLmRhdGEse19ldmVudDpyfSl9KX0oYSxkLHMpO2Nhc2UgY3Q6aWYoISh2PW51bGw9PT0oYz1hLmNvbmRzLmZpbmQoKGZ1bmN0aW9uKHQpe3ZhciBlPU8odC5jb25kLG4ub3B0aW9ucy5ndWFyZHMpO3JldHVybiFlfHxSKG4sZSxkLHMscil9KSkpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmFjdGlvbnMpKXJldHVybltdO3ZhciBoPWkoUHQobixyLGQscyxkdChTKHYpLG4ub3B0aW9ucy5hY3Rpb25zKSx1KSwyKSxmPWhbMF0sbD1oWzFdO3JldHVybiBkPWwsbnVsbD09cHx8cC5wdXNoKGQpLGY7Y2FzZSB1dDp2YXIgdjtpZighKHY9YS5nZXQoZCxzLmRhdGEpKSlyZXR1cm5bXTt2YXIgeT1pKFB0KG4scixkLHMsZHQoUyh2KSxuLm9wdGlvbnMuYWN0aW9ucyksdSksMiksZz15WzBdLG09eVsxXTtyZXR1cm4gZD1tLG51bGw9PXB8fHAucHVzaChkKSxnO2Nhc2UgUTpyZXR1cm4gZnVuY3Rpb24oZSxuLHIpe3ZhciBpPU4oZS5hY3Rpdml0eSk/ZS5hY3Rpdml0eShuLHIuZGF0YSk6ZS5hY3Rpdml0eSxvPVwic3RyaW5nXCI9PXR5cGVvZiBpP3tpZDppfTppO3JldHVybnt0eXBlOnQuQWN0aW9uVHlwZXMuU3RvcCxhY3Rpdml0eTpvfX0oYSxkLHMpO2Nhc2UgZXQ6ZD1FKGQscyxbYV0sciksbnVsbD09cHx8cC5wdXNoKGQpO2JyZWFrO2RlZmF1bHQ6dmFyIHg9bHQoYSxuLm9wdGlvbnMuYWN0aW9ucyksdz14LmV4ZWM7aWYodyYmcCl7dmFyIGI9cC5sZW5ndGgtMTt4PWUoZSh7fSx4KSx7ZXhlYzpmdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuLTFdPWFyZ3VtZW50c1tuXTt3LmFwcGx5KHZvaWQgMCxvKFtwW2JdXSxpKGUpLCExKSl9fSl9cmV0dXJuIHh9fSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuISF0fSkpKSxkXX12YXIga3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlLG4scj10aGlzO3RoaXMuYWN0aW9ucz1bXSx0aGlzLmFjdGl2aXRpZXM9YSx0aGlzLm1ldGE9e30sdGhpcy5ldmVudHM9W10sdGhpcy52YWx1ZT10LnZhbHVlLHRoaXMuY29udGV4dD10LmNvbnRleHQsdGhpcy5fZXZlbnQ9dC5fZXZlbnQsdGhpcy5fc2Vzc2lvbmlkPXQuX3Nlc3Npb25pZCx0aGlzLmV2ZW50PXRoaXMuX2V2ZW50LmRhdGEsdGhpcy5oaXN0b3J5VmFsdWU9dC5oaXN0b3J5VmFsdWUsdGhpcy5oaXN0b3J5PXQuaGlzdG9yeSx0aGlzLmFjdGlvbnM9dC5hY3Rpb25zfHxbXSx0aGlzLmFjdGl2aXRpZXM9dC5hY3Rpdml0aWVzfHxhLHRoaXMubWV0YT0odm9pZCAwPT09KG49dC5jb25maWd1cmF0aW9uKSYmKG49W10pLG4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDAhPT1lLm1ldGEmJih0W2UuaWRdPWUubWV0YSksdH0pLHt9KSksdGhpcy5ldmVudHM9dC5ldmVudHN8fFtdLHRoaXMubWF0Y2hlcz10aGlzLm1hdGNoZXMuYmluZCh0aGlzKSx0aGlzLnRvU3RyaW5ncz10aGlzLnRvU3RyaW5ncy5iaW5kKHRoaXMpLHRoaXMuY29uZmlndXJhdGlvbj10LmNvbmZpZ3VyYXRpb24sdGhpcy50cmFuc2l0aW9ucz10LnRyYW5zaXRpb25zLHRoaXMuY2hpbGRyZW49dC5jaGlsZHJlbix0aGlzLmRvbmU9ISF0LmRvbmUsdGhpcy50YWdzPW51bGwhPT0oZT1BcnJheS5pc0FycmF5KHQudGFncyk/bmV3IFNldCh0LnRhZ3MpOnQudGFncykmJnZvaWQgMCE9PWU/ZTpuZXcgU2V0LHRoaXMubWFjaGluZT10Lm1hY2hpbmUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJuZXh0RXZlbnRzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbyhbXSxpKG5ldyBTZXQoZyhvKFtdLGkodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm93bkV2ZW50c30pKSksITEpKSkpLCExKX0oci5jb25maWd1cmF0aW9uKX19KX1yZXR1cm4gdC5mcm9tPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGUgaW5zdGFuY2VvZiB0P2UuY29udGV4dCE9PW4/bmV3IHQoe3ZhbHVlOmUudmFsdWUsY29udGV4dDpuLF9ldmVudDplLl9ldmVudCxfc2Vzc2lvbmlkOm51bGwsaGlzdG9yeVZhbHVlOmUuaGlzdG9yeVZhbHVlLGhpc3Rvcnk6ZS5oaXN0b3J5LGFjdGlvbnM6W10sYWN0aXZpdGllczplLmFjdGl2aXRpZXMsbWV0YTp7fSxldmVudHM6W10sY29uZmlndXJhdGlvbjpbXSx0cmFuc2l0aW9uczpbXSxjaGlsZHJlbjp7fX0pOmU6bmV3IHQoe3ZhbHVlOmUsY29udGV4dDpuLF9ldmVudDpodCxfc2Vzc2lvbmlkOm51bGwsaGlzdG9yeVZhbHVlOnZvaWQgMCxoaXN0b3J5OnZvaWQgMCxhY3Rpb25zOltdLGFjdGl2aXRpZXM6dm9pZCAwLG1ldGE6dm9pZCAwLGV2ZW50czpbXSxjb25maWd1cmF0aW9uOltdLHRyYW5zaXRpb25zOltdLGNoaWxkcmVuOnt9fSl9LHQuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlKX0sdC5pbmVydD1mdW5jdGlvbihlLG4pe2lmKGUgaW5zdGFuY2VvZiB0KXtpZighZS5hY3Rpb25zLmxlbmd0aClyZXR1cm4gZTt2YXIgcj1odDtyZXR1cm4gbmV3IHQoe3ZhbHVlOmUudmFsdWUsY29udGV4dDpuLF9ldmVudDpyLF9zZXNzaW9uaWQ6bnVsbCxoaXN0b3J5VmFsdWU6ZS5oaXN0b3J5VmFsdWUsaGlzdG9yeTplLmhpc3RvcnksYWN0aXZpdGllczplLmFjdGl2aXRpZXMsY29uZmlndXJhdGlvbjplLmNvbmZpZ3VyYXRpb24sdHJhbnNpdGlvbnM6W10sY2hpbGRyZW46e319KX1yZXR1cm4gdC5mcm9tKGUsbil9LHQucHJvdG90eXBlLnRvU3RyaW5ncz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYodm9pZCAwPT09dCYmKHQ9dGhpcy52YWx1ZSksdm9pZCAwPT09ZSYmKGU9XCIuXCIpLEEodCkpcmV0dXJuW3RdO3ZhciByPXModCk7cmV0dXJuIHIuY29uY2F0LmFwcGx5KHIsbyhbXSxpKHIubWFwKChmdW5jdGlvbihyKXtyZXR1cm4gbi50b1N0cmluZ3ModFtyXSxlKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiByK2UrdH0pKX0pKSksITEpKX0sdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxyPSh0LmNvbmZpZ3VyYXRpb24sdC50cmFuc2l0aW9ucyx0LnRhZ3MpLGk9KHQubWFjaGluZSxuKHQsW1wiY29uZmlndXJhdGlvblwiLFwidHJhbnNpdGlvbnNcIixcInRhZ3NcIixcIm1hY2hpbmVcIl0pKTtyZXR1cm4gZShlKHt9LGkpLHt0YWdzOkFycmF5LmZyb20ocil9KX0sdC5wcm90b3R5cGUubWF0Y2hlcz1mdW5jdGlvbih0KXtyZXR1cm4gYyh0LHRoaXMudmFsdWUpfSx0LnByb3RvdHlwZS5oYXNUYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGFncy5oYXModCl9LHQucHJvdG90eXBlLmNhbj1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gdGhpcy5tYWNoaW5lLCEhKG51bGw9PT0oZT10aGlzLm1hY2hpbmUpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnRyYW5zaXRpb24odGhpcyx0KS5jaGFuZ2VkKX0sdH0oKSxJdD1bXSxqdD1mdW5jdGlvbih0LGUpe0l0LnB1c2godCk7dmFyIG49ZSh0KTtyZXR1cm4gSXQucG9wKCksbn07ZnVuY3Rpb24gQ3QodCl7cmV0dXJue2lkOnQsc2VuZDpmdW5jdGlvbigpe30sc3Vic2NyaWJlOmZ1bmN0aW9uKCl7cmV0dXJue3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7fX19LGdldFNuYXBzaG90OmZ1bmN0aW9uKCl7fSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57aWQ6dH19fX1mdW5jdGlvbiBWdCh0LGUsbil7dmFyIHI9Q3QoZSk7aWYoci5kZWZlcnJlZD0hMCxrKHQpKXt2YXIgaT1yLnN0YXRlPWp0KHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4obj90LndpdGhDb250ZXh0KG4pOnQpLmluaXRpYWxTdGF0ZX0pKTtyLmdldFNuYXBzaG90PWZ1bmN0aW9uKCl7cmV0dXJuIGl9fXJldHVybiByfWZ1bmN0aW9uIEx0KHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXt2YXIgZT17dHlwZTp0LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHR9fTtyZXR1cm4gZX1yZXR1cm4gdH1mdW5jdGlvbiBEdCh0KXtyZXR1cm4gZShlKHt0eXBlOml0fSx0KSx7dG9KU09OOmZ1bmN0aW9uKCl7dC5vbkRvbmUsdC5vbkVycm9yO3ZhciByPW4odCxbXCJvbkRvbmVcIixcIm9uRXJyb3JcIl0pO3JldHVybiBlKGUoe30scikse3R5cGU6aXQsc3JjOkx0KHQuc3JjKX0pfX0pfXZhciBSdD17fSxNdD1mdW5jdGlvbih0KXtyZXR1cm5cIiNcIj09PXRbMF19LHp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSh0LG4sYyl7dmFyIHUsaD10aGlzO3ZvaWQgMD09PWMmJihjPVwiY29udGV4dFwiaW4gdD90LmNvbnRleHQ6dm9pZCAwKSx0aGlzLmNvbmZpZz10LHRoaXMuX2NvbnRleHQ9Yyx0aGlzLm9yZGVyPS0xLHRoaXMuX194c3RhdGVub2RlPSEwLHRoaXMuX19jYWNoZT17ZXZlbnRzOnZvaWQgMCxyZWxhdGl2ZVZhbHVlOm5ldyBNYXAsaW5pdGlhbFN0YXRlVmFsdWU6dm9pZCAwLGluaXRpYWxTdGF0ZTp2b2lkIDAsb246dm9pZCAwLHRyYW5zaXRpb25zOnZvaWQgMCxjYW5kaWRhdGVzOnt9LGRlbGF5ZWRUcmFuc2l0aW9uczp2b2lkIDB9LHRoaXMuaWRNYXA9e30sdGhpcy50YWdzPVtdLHRoaXMub3B0aW9ucz1PYmplY3QuYXNzaWduKHthY3Rpb25zOnt9LGd1YXJkczp7fSxzZXJ2aWNlczp7fSxhY3Rpdml0aWVzOnt9LGRlbGF5czp7fX0sbiksdGhpcy5wYXJlbnQ9dGhpcy5vcHRpb25zLl9wYXJlbnQsdGhpcy5rZXk9dGhpcy5jb25maWcua2V5fHx0aGlzLm9wdGlvbnMuX2tleXx8dGhpcy5jb25maWcuaWR8fFwiKG1hY2hpbmUpXCIsdGhpcy5tYWNoaW5lPXRoaXMucGFyZW50P3RoaXMucGFyZW50Lm1hY2hpbmU6dGhpcyx0aGlzLnBhdGg9dGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQucGF0aC5jb25jYXQodGhpcy5rZXkpOltdLHRoaXMuZGVsaW1pdGVyPXRoaXMuY29uZmlnLmRlbGltaXRlcnx8KHRoaXMucGFyZW50P3RoaXMucGFyZW50LmRlbGltaXRlcjpcIi5cIiksdGhpcy5pZD10aGlzLmNvbmZpZy5pZHx8byhbdGhpcy5tYWNoaW5lLmtleV0saSh0aGlzLnBhdGgpLCExKS5qb2luKHRoaXMuZGVsaW1pdGVyKSx0aGlzLnZlcnNpb249dGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQudmVyc2lvbjp0aGlzLmNvbmZpZy52ZXJzaW9uLHRoaXMudHlwZT10aGlzLmNvbmZpZy50eXBlfHwodGhpcy5jb25maWcucGFyYWxsZWw/XCJwYXJhbGxlbFwiOnRoaXMuY29uZmlnLnN0YXRlcyYmcyh0aGlzLmNvbmZpZy5zdGF0ZXMpLmxlbmd0aD9cImNvbXBvdW5kXCI6dGhpcy5jb25maWcuaGlzdG9yeT9cImhpc3RvcnlcIjpcImF0b21pY1wiKSx0aGlzLnNjaGVtYT10aGlzLnBhcmVudD90aGlzLm1hY2hpbmUuc2NoZW1hOm51bGwhPT0odT10aGlzLmNvbmZpZy5zY2hlbWEpJiZ2b2lkIDAhPT11P3U6e30sdGhpcy5kZXNjcmlwdGlvbj10aGlzLmNvbmZpZy5kZXNjcmlwdGlvbix0aGlzLmluaXRpYWw9dGhpcy5jb25maWcuaW5pdGlhbCx0aGlzLnN0YXRlcz10aGlzLmNvbmZpZy5zdGF0ZXM/ZCh0aGlzLmNvbmZpZy5zdGF0ZXMsKGZ1bmN0aW9uKHQsbil7dmFyIHIsaT1uZXcgYSh0LHtfcGFyZW50OmgsX2tleTpufSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oaC5pZE1hcCxlKCgocj17fSlbaS5pZF09aSxyKSxpLmlkTWFwKSksaX0pKTpSdDt2YXIgZj0wOyFmdW5jdGlvbiB0KGUpe3ZhciBuLGk7ZS5vcmRlcj1mKys7dHJ5e2Zvcih2YXIgbz1yKFUoZSkpLGE9by5uZXh0KCk7IWEuZG9uZTthPW8ubmV4dCgpKXt0KGEudmFsdWUpfX1jYXRjaCh0KXtuPXtlcnJvcjp0fX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYoaT1vLnJldHVybikmJmkuY2FsbChvKX1maW5hbGx5e2lmKG4pdGhyb3cgbi5lcnJvcn19fSh0aGlzKSx0aGlzLmhpc3Rvcnk9ITA9PT10aGlzLmNvbmZpZy5oaXN0b3J5P1wic2hhbGxvd1wiOnRoaXMuY29uZmlnLmhpc3Rvcnl8fCExLHRoaXMuX3RyYW5zaWVudD0hIXRoaXMuY29uZmlnLmFsd2F5c3x8ISF0aGlzLmNvbmZpZy5vbiYmKEFycmF5LmlzQXJyYXkodGhpcy5jb25maWcub24pP3RoaXMuY29uZmlnLm9uLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVyblwiXCI9PT10LmV2ZW50fSkpOlwiXCJpbiB0aGlzLmNvbmZpZy5vbiksdGhpcy5zdHJpY3Q9ISF0aGlzLmNvbmZpZy5zdHJpY3QsdGhpcy5vbkVudHJ5PVModGhpcy5jb25maWcuZW50cnl8fHRoaXMuY29uZmlnLm9uRW50cnkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGx0KHQpfSkpLHRoaXMub25FeGl0PVModGhpcy5jb25maWcuZXhpdHx8dGhpcy5jb25maWcub25FeGl0KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBsdCh0KX0pKSx0aGlzLm1ldGE9dGhpcy5jb25maWcubWV0YSx0aGlzLmRvbmVEYXRhPVwiZmluYWxcIj09PXRoaXMudHlwZT90aGlzLmNvbmZpZy5kYXRhOnZvaWQgMCx0aGlzLmludm9rZT1TKHRoaXMuY29uZmlnLmludm9rZSkubWFwKChmdW5jdGlvbih0LG4pe3ZhciByLGk7aWYoayh0KSlyZXR1cm4gaC5tYWNoaW5lLm9wdGlvbnMuc2VydmljZXM9ZSgoKHI9e30pW3QuaWRdPXQsciksaC5tYWNoaW5lLm9wdGlvbnMuc2VydmljZXMpLER0KHtzcmM6dC5pZCxpZDp0LmlkfSk7aWYoQSh0LnNyYykpcmV0dXJuIER0KGUoZSh7fSx0KSx7aWQ6dC5pZHx8dC5zcmMsc3JjOnQuc3JjfSkpO2lmKGsodC5zcmMpfHxOKHQuc3JjKSl7dmFyIG89XCJcIi5jb25jYXQoaC5pZCxcIjppbnZvY2F0aW9uW1wiKS5jb25jYXQobixcIl1cIik7cmV0dXJuIGgubWFjaGluZS5vcHRpb25zLnNlcnZpY2VzPWUoKChpPXt9KVtvXT10LnNyYyxpKSxoLm1hY2hpbmUub3B0aW9ucy5zZXJ2aWNlcyksRHQoZShlKHtpZDpvfSx0KSx7c3JjOm99KSl9dmFyIGE9dC5zcmM7cmV0dXJuIER0KGUoZSh7aWQ6YS50eXBlfSx0KSx7c3JjOmF9KSl9KSksdGhpcy5hY3Rpdml0aWVzPVModGhpcy5jb25maWcuYWN0aXZpdGllcykuY29uY2F0KHRoaXMuaW52b2tlKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBwdCh0KX0pKSx0aGlzLnRyYW5zaXRpb249dGhpcy50cmFuc2l0aW9uLmJpbmQodGhpcyksdGhpcy50YWdzPVModGhpcy5jb25maWcudGFncyl9cmV0dXJuIGEucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKCl7dGhpcy5fX2NhY2hlLnRyYW5zaXRpb25zfHxCKHRoaXMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm9ufSkpfSxhLnByb3RvdHlwZS53aXRoQ29uZmlnPWZ1bmN0aW9uKHQsbil7dmFyIHI9dGhpcy5vcHRpb25zLGk9ci5hY3Rpb25zLG89ci5hY3Rpdml0aWVzLHM9ci5ndWFyZHMsYz1yLnNlcnZpY2VzLHU9ci5kZWxheXM7cmV0dXJuIG5ldyBhKHRoaXMuY29uZmlnLHthY3Rpb25zOmUoZSh7fSxpKSx0LmFjdGlvbnMpLGFjdGl2aXRpZXM6ZShlKHt9LG8pLHQuYWN0aXZpdGllcyksZ3VhcmRzOmUoZSh7fSxzKSx0Lmd1YXJkcyksc2VydmljZXM6ZShlKHt9LGMpLHQuc2VydmljZXMpLGRlbGF5czplKGUoe30sdSksdC5kZWxheXMpfSxudWxsIT1uP246dGhpcy5jb250ZXh0KX0sYS5wcm90b3R5cGUud2l0aENvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBhKHRoaXMuY29uZmlnLHRoaXMub3B0aW9ucyx0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGEucHJvdG90eXBlLFwiY29udGV4dFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLl9jb250ZXh0KT90aGlzLl9jb250ZXh0KCk6dGhpcy5fY29udGV4dH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5wcm90b3R5cGUsXCJkZWZpbml0aW9uXCIse2dldDpmdW5jdGlvbigpe3JldHVybntpZDp0aGlzLmlkLGtleTp0aGlzLmtleSx2ZXJzaW9uOnRoaXMudmVyc2lvbixjb250ZXh0OnRoaXMuY29udGV4dCx0eXBlOnRoaXMudHlwZSxpbml0aWFsOnRoaXMuaW5pdGlhbCxoaXN0b3J5OnRoaXMuaGlzdG9yeSxzdGF0ZXM6ZCh0aGlzLnN0YXRlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVmaW5pdGlvbn0pKSxvbjp0aGlzLm9uLHRyYW5zaXRpb25zOnRoaXMudHJhbnNpdGlvbnMsZW50cnk6dGhpcy5vbkVudHJ5LGV4aXQ6dGhpcy5vbkV4aXQsYWN0aXZpdGllczp0aGlzLmFjdGl2aXRpZXN8fFtdLG1ldGE6dGhpcy5tZXRhLG9yZGVyOnRoaXMub3JkZXJ8fC0xLGRhdGE6dGhpcy5kb25lRGF0YSxpbnZva2U6dGhpcy5pbnZva2UsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbix0YWdzOnRoaXMudGFnc319LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksYS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmaW5pdGlvbn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGEucHJvdG90eXBlLFwib25cIix7Z2V0OmZ1bmN0aW9uKCl7aWYodGhpcy5fX2NhY2hlLm9uKXJldHVybiB0aGlzLl9fY2FjaGUub247dmFyIHQ9dGhpcy50cmFuc2l0aW9ucztyZXR1cm4gdGhpcy5fX2NhY2hlLm9uPXQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0W2UuZXZlbnRUeXBlXT10W2UuZXZlbnRUeXBlXXx8W10sdFtlLmV2ZW50VHlwZV0ucHVzaChlKSx0fSkse30pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcImFmdGVyXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9fY2FjaGUuZGVsYXllZFRyYW5zaXRpb25zfHwodGhpcy5fX2NhY2hlLmRlbGF5ZWRUcmFuc2l0aW9ucz10aGlzLmdldERlbGF5ZWRUcmFuc2l0aW9ucygpLHRoaXMuX19jYWNoZS5kZWxheWVkVHJhbnNpdGlvbnMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcInRyYW5zaXRpb25zXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9fY2FjaGUudHJhbnNpdGlvbnN8fCh0aGlzLl9fY2FjaGUudHJhbnNpdGlvbnM9dGhpcy5mb3JtYXRUcmFuc2l0aW9ucygpLHRoaXMuX19jYWNoZS50cmFuc2l0aW9ucyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksYS5wcm90b3R5cGUuZ2V0Q2FuZGlkYXRlcz1mdW5jdGlvbih0KXtpZih0aGlzLl9fY2FjaGUuY2FuZGlkYXRlc1t0XSlyZXR1cm4gdGhpcy5fX2NhY2hlLmNhbmRpZGF0ZXNbdF07dmFyIGU9XCJcIj09PXQsbj10aGlzLnRyYW5zaXRpb25zLmZpbHRlcigoZnVuY3Rpb24obil7dmFyIHI9bi5ldmVudFR5cGU9PT10O3JldHVybiBlP3I6cnx8XCIqXCI9PT1uLmV2ZW50VHlwZX0pKTtyZXR1cm4gdGhpcy5fX2NhY2hlLmNhbmRpZGF0ZXNbdF09bixufSxhLnByb3RvdHlwZS5nZXREZWxheWVkVHJhbnNpdGlvbnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49dGhpcy5jb25maWcuYWZ0ZXI7aWYoIW4pcmV0dXJuW107dmFyIHI9ZnVuY3Rpb24oZSxuKXt2YXIgcj1FdChOKGUpP1wiXCIuY29uY2F0KHQuaWQsXCI6ZGVsYXlbXCIpLmNvbmNhdChuLFwiXVwiKTplLHQuaWQpO3JldHVybiB0Lm9uRW50cnkucHVzaCh5dChyLHtkZWxheTplfSkpLHQub25FeGl0LnB1c2goeHQocikpLHJ9O3JldHVybihUKG4pP24ubWFwKChmdW5jdGlvbih0LG4pe3ZhciBpPXIodC5kZWxheSxuKTtyZXR1cm4gZShlKHt9LHQpLHtldmVudDppfSl9KSk6ZyhzKG4pLm1hcCgoZnVuY3Rpb24odCxpKXt2YXIgbz1uW3RdLGE9QShvKT97dGFyZ2V0Om99Om8scz1pc05hTigrdCk/dDordCxjPXIocyxpKTtyZXR1cm4gUyhhKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlKGUoe30sdCkse2V2ZW50OmMsZGVsYXk6c30pfSkpfSkpKSkubWFwKChmdW5jdGlvbihuKXt2YXIgcj1uLmRlbGF5O3JldHVybiBlKGUoe30sdC5mb3JtYXRUcmFuc2l0aW9uKG4pKSx7ZGVsYXk6cn0pfSkpfSxhLnByb3RvdHlwZS5nZXRTdGF0ZU5vZGVzPWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcztpZighdClyZXR1cm5bXTt2YXIgcj10IGluc3RhbmNlb2Yga3Q/dC52YWx1ZTpmKHQsdGhpcy5kZWxpbWl0ZXIpO2lmKEEocikpe3ZhciBpPXRoaXMuZ2V0U3RhdGVOb2RlKHIpLmluaXRpYWw7cmV0dXJuIHZvaWQgMCE9PWk/dGhpcy5nZXRTdGF0ZU5vZGVzKCgoZT17fSlbcl09aSxlKSk6W3RoaXMsdGhpcy5zdGF0ZXNbcl1dfXZhciBvPXMociksYT1vLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uZ2V0U3RhdGVOb2RlKHQpfSkpO3JldHVybiBhLnB1c2godGhpcyksYS5jb25jYXQoby5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9bi5nZXRTdGF0ZU5vZGUoZSkuZ2V0U3RhdGVOb2RlcyhyW2VdKTtyZXR1cm4gdC5jb25jYXQoaSl9KSxbXSkpfSxhLnByb3RvdHlwZS5oYW5kbGVzPWZ1bmN0aW9uKHQpe3ZhciBlPXUodCk7cmV0dXJuIHRoaXMuZXZlbnRzLmluY2x1ZGVzKGUpfSxhLnByb3RvdHlwZS5yZXNvbHZlU3RhdGU9ZnVuY3Rpb24odCl7dmFyIG49QXJyYXkuZnJvbShKKFtdLHRoaXMuZ2V0U3RhdGVOb2Rlcyh0LnZhbHVlKSkpO3JldHVybiBuZXcga3QoZShlKHt9LHQpLHt2YWx1ZTp0aGlzLnJlc29sdmUodC52YWx1ZSksY29uZmlndXJhdGlvbjpuLGRvbmU6SChuLHRoaXMpLHRhZ3M6RyhuKX0pKX0sYS5wcm90b3R5cGUudHJhbnNpdGlvbkxlYWZOb2RlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLmdldFN0YXRlTm9kZSh0KS5uZXh0KGUsbik7cmV0dXJuIHImJnIudHJhbnNpdGlvbnMubGVuZ3RoP3I6dGhpcy5uZXh0KGUsbil9LGEucHJvdG90eXBlLnRyYW5zaXRpb25Db21wb3VuZE5vZGU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXModCksaT10aGlzLmdldFN0YXRlTm9kZShyWzBdKS5fdHJhbnNpdGlvbih0W3JbMF1dLGUsbik7cmV0dXJuIGkmJmkudHJhbnNpdGlvbnMubGVuZ3RoP2k6dGhpcy5uZXh0KGUsbil9LGEucHJvdG90eXBlLnRyYW5zaXRpb25QYXJhbGxlbE5vZGU9ZnVuY3Rpb24odCxlLG4pe3ZhciBpLG8sYT17fTt0cnl7Zm9yKHZhciBjPXIocyh0KSksdT1jLm5leHQoKTshdS5kb25lO3U9Yy5uZXh0KCkpe3ZhciBoPXUudmFsdWUsZj10W2hdO2lmKGYpe3ZhciBsPXRoaXMuZ2V0U3RhdGVOb2RlKGgpLl90cmFuc2l0aW9uKGYsZSxuKTtsJiYoYVtoXT1sKX19fWNhdGNoKHQpe2k9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3UmJiF1LmRvbmUmJihvPWMucmV0dXJuKSYmby5jYWxsKGMpfWZpbmFsbHl7aWYoaSl0aHJvdyBpLmVycm9yfX12YXIgZD1zKGEpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGFbdF19KSkscD1nKGQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC50cmFuc2l0aW9uc30pKSk7aWYoIWQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQudHJhbnNpdGlvbnMubGVuZ3RoPjB9KSkpcmV0dXJuIHRoaXMubmV4dChlLG4pO3ZhciB2PWcoZC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmVudHJ5U2V0fSkpKSx5PWcocyhhKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBhW3RdLmNvbmZpZ3VyYXRpb259KSkpO3JldHVybnt0cmFuc2l0aW9uczpwLGVudHJ5U2V0OnYsZXhpdFNldDpnKGQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5leGl0U2V0fSkpKSxjb25maWd1cmF0aW9uOnksc291cmNlOmUsYWN0aW9uczpnKHMoYSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gYVt0XS5hY3Rpb25zfSkpKX19LGEucHJvdG90eXBlLl90cmFuc2l0aW9uPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gQSh0KT90aGlzLnRyYW5zaXRpb25MZWFmTm9kZSh0LGUsbik6MT09PXModCkubGVuZ3RoP3RoaXMudHJhbnNpdGlvbkNvbXBvdW5kTm9kZSh0LGUsbik6dGhpcy50cmFuc2l0aW9uUGFyYWxsZWxOb2RlKHQsZSxuKX0sYS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0LGUpe3ZhciBuLGEscyx1PXRoaXMsaD1lLm5hbWUsbD1bXSxkPVtdO3RyeXtmb3IodmFyIHA9cih0aGlzLmdldENhbmRpZGF0ZXMoaCkpLHk9cC5uZXh0KCk7IXkuZG9uZTt5PXAubmV4dCgpKXt2YXIgbT15LnZhbHVlLFM9bS5jb25kLHg9bS5pbix3PXQuY29udGV4dCxiPSF4fHwoQSh4KSYmTXQoeCk/dC5tYXRjaGVzKGYodGhpcy5nZXRTdGF0ZU5vZGVCeUlkKHgpLnBhdGgsdGhpcy5kZWxpbWl0ZXIpKTpjKGYoeCx0aGlzLmRlbGltaXRlciksdih0aGlzLnBhdGguc2xpY2UoMCwtMikpKHQudmFsdWUpKSksXz0hMTt0cnl7Xz0hU3x8Uih0aGlzLm1hY2hpbmUsUyx3LGUsdCl9Y2F0Y2godCl7dGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGV2YWx1YXRlIGd1YXJkICdcIi5jb25jYXQoUy5uYW1lfHxTLnR5cGUsXCInIGluIHRyYW5zaXRpb24gZm9yIGV2ZW50ICdcIikuY29uY2F0KGgsXCInIGluIHN0YXRlIG5vZGUgJ1wiKS5jb25jYXQodGhpcy5pZCxcIic6XFxuXCIpLmNvbmNhdCh0Lm1lc3NhZ2UpKX1pZihfJiZiKXt2b2lkIDAhPT1tLnRhcmdldCYmKGQ9bS50YXJnZXQpLGwucHVzaC5hcHBseShsLG8oW10saShtLmFjdGlvbnMpLCExKSkscz1tO2JyZWFrfX19Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7eSYmIXkuZG9uZSYmKGE9cC5yZXR1cm4pJiZhLmNhbGwocCl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fWlmKHMpe2lmKCFkLmxlbmd0aClyZXR1cm57dHJhbnNpdGlvbnM6W3NdLGVudHJ5U2V0OltdLGV4aXRTZXQ6W10sY29uZmlndXJhdGlvbjp0LnZhbHVlP1t0aGlzXTpbXSxzb3VyY2U6dCxhY3Rpb25zOmx9O3ZhciBFPWcoZC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB1LmdldFJlbGF0aXZlU3RhdGVOb2RlcyhlLHQuaGlzdG9yeVZhbHVlKX0pKSksVD0hIXMuaW50ZXJuYWw7cmV0dXJue3RyYW5zaXRpb25zOltzXSxlbnRyeVNldDpUP1tdOmcoRS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB1Lm5vZGVzRnJvbUNoaWxkKHQpfSkpKSxleGl0U2V0OlQ/W106W3RoaXNdLGNvbmZpZ3VyYXRpb246RSxzb3VyY2U6dCxhY3Rpb25zOmx9fX0sYS5wcm90b3R5cGUubm9kZXNGcm9tQ2hpbGQ9ZnVuY3Rpb24odCl7aWYodC5lc2NhcGVzKHRoaXMpKXJldHVybltdO2Zvcih2YXIgZT1bXSxuPXQ7biYmbiE9PXRoaXM7KWUucHVzaChuKSxuPW4ucGFyZW50O3JldHVybiBlLnB1c2godGhpcyksZX0sYS5wcm90b3R5cGUuZXNjYXBlcz1mdW5jdGlvbih0KXtpZih0aGlzPT09dClyZXR1cm4hMTtmb3IodmFyIGU9dGhpcy5wYXJlbnQ7ZTspe2lmKGU9PT10KXJldHVybiExO2U9ZS5wYXJlbnR9cmV0dXJuITB9LGEucHJvdG90eXBlLmdldEFjdGlvbnM9ZnVuY3Rpb24odCxlLG4sYSl7dmFyIHMsYyx1LGgsZj1KKFtdLGE/dGhpcy5nZXRTdGF0ZU5vZGVzKGEudmFsdWUpOlt0aGlzXSksbD10LmNvbmZpZ3VyYXRpb24ubGVuZ3RoP0ooZix0LmNvbmZpZ3VyYXRpb24pOmY7dHJ5e2Zvcih2YXIgZD1yKGwpLHA9ZC5uZXh0KCk7IXAuZG9uZTtwPWQubmV4dCgpKXtYKGYsbT1wLnZhbHVlKXx8dC5lbnRyeVNldC5wdXNoKG0pfX1jYXRjaCh0KXtzPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtwJiYhcC5kb25lJiYoYz1kLnJldHVybikmJmMuY2FsbChkKX1maW5hbGx5e2lmKHMpdGhyb3cgcy5lcnJvcn19dHJ5e2Zvcih2YXIgdj1yKGYpLHk9di5uZXh0KCk7IXkuZG9uZTt5PXYubmV4dCgpKXt2YXIgbTtYKGwsbT15LnZhbHVlKSYmIVgodC5leGl0U2V0LG0ucGFyZW50KXx8dC5leGl0U2V0LnB1c2gobSl9fWNhdGNoKHQpe3U9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3kmJiF5LmRvbmUmJihoPXYucmV0dXJuKSYmaC5jYWxsKHYpfWZpbmFsbHl7aWYodSl0aHJvdyB1LmVycm9yfX10LnNvdXJjZXx8KHQuZXhpdFNldD1bXSx0LmVudHJ5U2V0LnB1c2godGhpcykpO3ZhciBTPWcodC5lbnRyeVNldC5tYXAoKGZ1bmN0aW9uKHIpe3ZhciBpPVtdO2lmKFwiZmluYWxcIiE9PXIudHlwZSlyZXR1cm4gaTt2YXIgbz1yLnBhcmVudDtpZighby5wYXJlbnQpcmV0dXJuIGk7aS5wdXNoKFR0KHIuaWQsci5kb25lRGF0YSksVHQoby5pZCxyLmRvbmVEYXRhP3goci5kb25lRGF0YSxlLG4pOnZvaWQgMCkpO3ZhciBhPW8ucGFyZW50O3JldHVyblwicGFyYWxsZWxcIj09PWEudHlwZSYmVShhKS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIEgodC5jb25maWd1cmF0aW9uLGUpfSkpJiZpLnB1c2goVHQoYS5pZCkpLGl9KSkpO3QuZXhpdFNldC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBlLm9yZGVyLXQub3JkZXJ9KSksdC5lbnRyeVNldC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0Lm9yZGVyLWUub3JkZXJ9KSk7dmFyIHc9bmV3IFNldCh0LmVudHJ5U2V0KSxiPW5ldyBTZXQodC5leGl0U2V0KSxfPWkoW2coQXJyYXkuZnJvbSh3KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBvKG8oW10saSh0LmFjdGl2aXRpZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gd3QodCl9KSkpLCExKSxpKHQub25FbnRyeSksITEpfSkpKS5jb25jYXQoUy5tYXAodnQpKSxnKEFycmF5LmZyb20oYikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbyhvKFtdLGkodC5vbkV4aXQpLCExKSxpKHQuYWN0aXZpdGllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBidCh0KX0pKSksITEpfSkpKV0sMiksRT1fWzBdLFQ9X1sxXTtyZXR1cm4gZHQoVC5jb25jYXQodC5hY3Rpb25zKS5jb25jYXQoRSksdGhpcy5tYWNoaW5lLm9wdGlvbnMuYWN0aW9ucyl9LGEucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PXQmJih0PXRoaXMuaW5pdGlhbFN0YXRlKTt2YXIgcixhLHM9TChlKTtpZih0IGluc3RhbmNlb2Yga3Qpcj12b2lkIDA9PT1uP3Q6dGhpcy5yZXNvbHZlU3RhdGUoa3QuZnJvbSh0LG4pKTtlbHNle3ZhciBjPUEodCk/dGhpcy5yZXNvbHZlKGwodGhpcy5nZXRSZXNvbHZlZFBhdGgodCkpKTp0aGlzLnJlc29sdmUodCksdT1udWxsIT1uP246dGhpcy5tYWNoaW5lLmNvbnRleHQ7cj10aGlzLnJlc29sdmVTdGF0ZShrdC5mcm9tKGMsdSkpfWlmKHRoaXMuc3RyaWN0JiYhdGhpcy5ldmVudHMuaW5jbHVkZXMocy5uYW1lKSYmKGE9cy5uYW1lLCEvXihkb25lfGVycm9yKVxcLi8udGVzdChhKSkpdGhyb3cgbmV3IEVycm9yKFwiTWFjaGluZSAnXCIuY29uY2F0KHRoaXMuaWQsXCInIGRvZXMgbm90IGFjY2VwdCBldmVudCAnXCIpLmNvbmNhdChzLm5hbWUsXCInXCIpKTt2YXIgaD10aGlzLl90cmFuc2l0aW9uKHIudmFsdWUscixzKXx8e3RyYW5zaXRpb25zOltdLGNvbmZpZ3VyYXRpb246W10sZW50cnlTZXQ6W10sZXhpdFNldDpbXSxzb3VyY2U6cixhY3Rpb25zOltdfSxmPUooW10sdGhpcy5nZXRTdGF0ZU5vZGVzKHIudmFsdWUpKSxkPWguY29uZmlndXJhdGlvbi5sZW5ndGg/SihmLGguY29uZmlndXJhdGlvbik6ZjtyZXR1cm4gaC5jb25maWd1cmF0aW9uPW8oW10saShkKSwhMSksdGhpcy5yZXNvbHZlVHJhbnNpdGlvbihoLHIscyl9LGEucHJvdG90eXBlLnJlc29sdmVSYWlzZWRUcmFuc2l0aW9uPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixhPXQuYWN0aW9ucztyZXR1cm4odD10aGlzLnRyYW5zaXRpb24odCxlKSkuX2V2ZW50PW4sdC5ldmVudD1uLmRhdGEsKHI9dC5hY3Rpb25zKS51bnNoaWZ0LmFwcGx5KHIsbyhbXSxpKGEpLCExKSksdH0sYS5wcm90b3R5cGUucmVzb2x2ZVRyYW5zaXRpb249ZnVuY3Rpb24obixvLGEsYyl7dmFyIHUsaCxmPXRoaXM7dm9pZCAwPT09YSYmKGE9aHQpLHZvaWQgMD09PWMmJihjPXRoaXMubWFjaGluZS5jb250ZXh0KTt2YXIgbD1uLmNvbmZpZ3VyYXRpb24sZD0hb3x8bi50cmFuc2l0aW9ucy5sZW5ndGg+MCxwPWQ/JCh0aGlzLm1hY2hpbmUsbCk6dm9pZCAwLHY9bz9vLmhpc3RvcnlWYWx1ZT9vLmhpc3RvcnlWYWx1ZTpuLnNvdXJjZT90aGlzLm1hY2hpbmUuaGlzdG9yeVZhbHVlKG8udmFsdWUpOnZvaWQgMDp2b2lkIDAseT1vP28uY29udGV4dDpjLGc9dGhpcy5nZXRBY3Rpb25zKG4seSxhLG8pLG09bz9lKHt9LG8uYWN0aXZpdGllcyk6e307dHJ5e2Zvcih2YXIgUz1yKGcpLHc9Uy5uZXh0KCk7IXcuZG9uZTt3PVMubmV4dCgpKXt2YXIgRT13LnZhbHVlO0UudHlwZT09PUs/bVtFLmFjdGl2aXR5LmlkfHxFLmFjdGl2aXR5LnR5cGVdPUU6RS50eXBlPT09USYmKG1bRS5hY3Rpdml0eS5pZHx8RS5hY3Rpdml0eS50eXBlXT0hMSl9fWNhdGNoKHQpe3U9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3cmJiF3LmRvbmUmJihoPVMucmV0dXJuKSYmaC5jYWxsKFMpfWZpbmFsbHl7aWYodSl0aHJvdyB1LmVycm9yfX12YXIgVCxOLE89aShQdCh0aGlzLG8seSxhLGcsdGhpcy5tYWNoaW5lLmNvbmZpZy5wcmVzZXJ2ZUFjdGlvbk9yZGVyKSwyKSxQPU9bMF0saz1PWzFdLEk9aShiKFAsKGZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PT1XfHxlLnR5cGU9PT1ZJiZlLnRvPT09dC5TcGVjaWFsVGFyZ2V0cy5JbnRlcm5hbH0pKSwyKSxqPUlbMF0sQz1JWzFdLFY9UC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiB0LnR5cGU9PT1LJiYobnVsbD09PShlPXQuYWN0aXZpdHkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnR5cGUpPT09aXR9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0W2UuYWN0aXZpdHkuaWRdPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpLG89TSh0LnNyYyksYT1udWxsPT09KGk9bnVsbD09ZT92b2lkIDA6ZS5vcHRpb25zLnNlcnZpY2VzKXx8dm9pZCAwPT09aT92b2lkIDA6aVtvLnR5cGVdLHM9dC5kYXRhP3godC5kYXRhLG4scik6dm9pZCAwLGM9YT9WdChhLHQuaWQscyk6Q3QodC5pZCk7cmV0dXJuIGMubWV0YT10LGN9KGUuYWN0aXZpdHksZi5tYWNoaW5lLGssYSksdH0pLG8/ZSh7fSxvLmNoaWxkcmVuKTp7fSksTD1wP24uY29uZmlndXJhdGlvbjpvP28uY29uZmlndXJhdGlvbjpbXSxEPUgoTCx0aGlzKSxSPW5ldyBrdCh7dmFsdWU6cHx8by52YWx1ZSxjb250ZXh0OmssX2V2ZW50OmEsX3Nlc3Npb25pZDpvP28uX3Nlc3Npb25pZDpudWxsLGhpc3RvcnlWYWx1ZTpwP3Y/KFQ9dixOPXAse2N1cnJlbnQ6TixzdGF0ZXM6XyhULE4pfSk6dm9pZCAwOm8/by5oaXN0b3J5VmFsdWU6dm9pZCAwLGhpc3Rvcnk6IXB8fG4uc291cmNlP286dm9pZCAwLGFjdGlvbnM6cD9DOltdLGFjdGl2aXRpZXM6cD9tOm8/by5hY3Rpdml0aWVzOnt9LGV2ZW50czpbXSxjb25maWd1cmF0aW9uOkwsdHJhbnNpdGlvbnM6bi50cmFuc2l0aW9ucyxjaGlsZHJlbjpWLGRvbmU6RCx0YWdzOm51bGw9PW8/dm9pZCAwOm8udGFncyxtYWNoaW5lOnRoaXN9KSx6PXkhPT1rO1IuY2hhbmdlZD1hLm5hbWU9PT1zdHx8ejt2YXIgRj1SLmhpc3Rvcnk7RiYmZGVsZXRlIEYuaGlzdG9yeTt2YXIgVT0hRCYmKHRoaXMuX3RyYW5zaWVudHx8bC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5fdHJhbnNpZW50fSkpKTtpZighKGR8fFUmJlwiXCIhPT1hLm5hbWUpKXJldHVybiBSO3ZhciBCPVI7aWYoIUQpZm9yKFUmJihCPXRoaXMucmVzb2x2ZVJhaXNlZFRyYW5zaXRpb24oQix7dHlwZTp0dH0sYSkpO2oubGVuZ3RoOyl7dmFyIEo9ai5zaGlmdCgpO0I9dGhpcy5yZXNvbHZlUmFpc2VkVHJhbnNpdGlvbihCLEouX2V2ZW50LGEpfXZhciBxPUIuY2hhbmdlZHx8KEY/ISFCLmFjdGlvbnMubGVuZ3RofHx6fHx0eXBlb2YgRi52YWx1ZSE9dHlwZW9mIEIudmFsdWV8fCFmdW5jdGlvbiB0KGUsbil7aWYoZT09PW4pcmV0dXJuITA7aWYodm9pZCAwPT09ZXx8dm9pZCAwPT09bilyZXR1cm4hMTtpZihBKGUpfHxBKG4pKXJldHVybiBlPT09bjt2YXIgcj1zKGUpLGk9cyhuKTtyZXR1cm4gci5sZW5ndGg9PT1pLmxlbmd0aCYmci5ldmVyeSgoZnVuY3Rpb24ocil7cmV0dXJuIHQoZVtyXSxuW3JdKX0pKX0oQi52YWx1ZSxGLnZhbHVlKTp2b2lkIDApO3JldHVybiBCLmNoYW5nZWQ9cSxCLmhpc3Rvcnk9RixCLnRhZ3M9RyhCLmNvbmZpZ3VyYXRpb24pLEJ9LGEucHJvdG90eXBlLmdldFN0YXRlTm9kZT1mdW5jdGlvbih0KXtpZihNdCh0KSlyZXR1cm4gdGhpcy5tYWNoaW5lLmdldFN0YXRlTm9kZUJ5SWQodCk7aWYoIXRoaXMuc3RhdGVzKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byByZXRyaWV2ZSBjaGlsZCBzdGF0ZSAnXCIuY29uY2F0KHQsXCInIGZyb20gJ1wiKS5jb25jYXQodGhpcy5pZCxcIic7IG5vIGNoaWxkIHN0YXRlcyBleGlzdC5cIikpO3ZhciBlPXRoaXMuc3RhdGVzW3RdO2lmKCFlKXRocm93IG5ldyBFcnJvcihcIkNoaWxkIHN0YXRlICdcIi5jb25jYXQodCxcIicgZG9lcyBub3QgZXhpc3Qgb24gJ1wiKS5jb25jYXQodGhpcy5pZCxcIidcIikpO3JldHVybiBlfSxhLnByb3RvdHlwZS5nZXRTdGF0ZU5vZGVCeUlkPWZ1bmN0aW9uKHQpe3ZhciBlPU10KHQpP3Quc2xpY2UoXCIjXCIubGVuZ3RoKTp0O2lmKGU9PT10aGlzLmlkKXJldHVybiB0aGlzO3ZhciBuPXRoaXMubWFjaGluZS5pZE1hcFtlXTtpZighbil0aHJvdyBuZXcgRXJyb3IoXCJDaGlsZCBzdGF0ZSBub2RlICcjXCIuY29uY2F0KGUsXCInIGRvZXMgbm90IGV4aXN0IG9uIG1hY2hpbmUgJ1wiKS5jb25jYXQodGhpcy5pZCxcIidcIikpO3JldHVybiBufSxhLnByb3RvdHlwZS5nZXRTdGF0ZU5vZGVCeVBhdGg9ZnVuY3Rpb24odCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQmJk10KHQpKXRyeXtyZXR1cm4gdGhpcy5nZXRTdGF0ZU5vZGVCeUlkKHQuc2xpY2UoMSkpfWNhdGNoKHQpe31mb3IodmFyIGU9aCh0LHRoaXMuZGVsaW1pdGVyKS5zbGljZSgpLG49dGhpcztlLmxlbmd0aDspe3ZhciByPWUuc2hpZnQoKTtpZighci5sZW5ndGgpYnJlYWs7bj1uLmdldFN0YXRlTm9kZShyKX1yZXR1cm4gbn0sYS5wcm90b3R5cGUucmVzb2x2ZT1mdW5jdGlvbih0KXt2YXIgZSxuPXRoaXM7aWYoIXQpcmV0dXJuIHRoaXMuaW5pdGlhbFN0YXRlVmFsdWV8fFJ0O3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2VcInBhcmFsbGVsXCI6cmV0dXJuIGQodGhpcy5pbml0aWFsU3RhdGVWYWx1ZSwoZnVuY3Rpb24oZSxyKXtyZXR1cm4gZT9uLmdldFN0YXRlTm9kZShyKS5yZXNvbHZlKHRbcl18fGUpOlJ0fSkpO2Nhc2VcImNvbXBvdW5kXCI6aWYoQSh0KSl7dmFyIHI9dGhpcy5nZXRTdGF0ZU5vZGUodCk7cmV0dXJuXCJwYXJhbGxlbFwiPT09ci50eXBlfHxcImNvbXBvdW5kXCI9PT1yLnR5cGU/KChlPXt9KVt0XT1yLmluaXRpYWxTdGF0ZVZhbHVlLGUpOnR9cmV0dXJuIHModCkubGVuZ3RoP2QodCwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdD9uLmdldFN0YXRlTm9kZShlKS5yZXNvbHZlKHQpOlJ0fSkpOnRoaXMuaW5pdGlhbFN0YXRlVmFsdWV8fHt9O2RlZmF1bHQ6cmV0dXJuIHR8fFJ0fX0sYS5wcm90b3R5cGUuZ2V0UmVzb2x2ZWRQYXRoPWZ1bmN0aW9uKHQpe2lmKE10KHQpKXt2YXIgZT10aGlzLm1hY2hpbmUuaWRNYXBbdC5zbGljZShcIiNcIi5sZW5ndGgpXTtpZighZSl0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gZmluZCBzdGF0ZSBub2RlICdcIi5jb25jYXQodCxcIidcIikpO3JldHVybiBlLnBhdGh9cmV0dXJuIGgodCx0aGlzLmRlbGltaXRlcil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcImluaXRpYWxTdGF0ZVZhbHVlXCIse2dldDpmdW5jdGlvbigpe3ZhciB0LGU7aWYodGhpcy5fX2NhY2hlLmluaXRpYWxTdGF0ZVZhbHVlKXJldHVybiB0aGlzLl9fY2FjaGUuaW5pdGlhbFN0YXRlVmFsdWU7aWYoXCJwYXJhbGxlbFwiPT09dGhpcy50eXBlKWU9cCh0aGlzLnN0YXRlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5pdGlhbFN0YXRlVmFsdWV8fFJ0fSksKGZ1bmN0aW9uKHQpe3JldHVybiEoXCJoaXN0b3J5XCI9PT10LnR5cGUpfSkpO2Vsc2UgaWYodm9pZCAwIT09dGhpcy5pbml0aWFsKXtpZighdGhpcy5zdGF0ZXNbdGhpcy5pbml0aWFsXSl0aHJvdyBuZXcgRXJyb3IoXCJJbml0aWFsIHN0YXRlICdcIi5jb25jYXQodGhpcy5pbml0aWFsLFwiJyBub3QgZm91bmQgb24gJ1wiKS5jb25jYXQodGhpcy5rZXksXCInXCIpKTtlPUYodGhpcy5zdGF0ZXNbdGhpcy5pbml0aWFsXSk/dGhpcy5pbml0aWFsOigodD17fSlbdGhpcy5pbml0aWFsXT10aGlzLnN0YXRlc1t0aGlzLmluaXRpYWxdLmluaXRpYWxTdGF0ZVZhbHVlLHQpfWVsc2UgZT17fTtyZXR1cm4gdGhpcy5fX2NhY2hlLmluaXRpYWxTdGF0ZVZhbHVlPWUsdGhpcy5fX2NhY2hlLmluaXRpYWxTdGF0ZVZhbHVlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGEucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0U3RhdGVOb2Rlcyh0KTtyZXR1cm4gdGhpcy5yZXNvbHZlVHJhbnNpdGlvbih7Y29uZmlndXJhdGlvbjpuLGVudHJ5U2V0Om4sZXhpdFNldDpbXSx0cmFuc2l0aW9uczpbXSxzb3VyY2U6dm9pZCAwLGFjdGlvbnM6W119LHZvaWQgMCx2b2lkIDAsZSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcImluaXRpYWxTdGF0ZVwiLHtnZXQ6ZnVuY3Rpb24oKXt0aGlzLl9pbml0KCk7dmFyIHQ9dGhpcy5pbml0aWFsU3RhdGVWYWx1ZTtpZighdCl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgcmV0cmlldmUgaW5pdGlhbCBzdGF0ZSBmcm9tIHNpbXBsZSBzdGF0ZSAnXCIuY29uY2F0KHRoaXMuaWQsXCInLlwiKSk7cmV0dXJuIHRoaXMuZ2V0SW5pdGlhbFN0YXRlKHQpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcInRhcmdldFwiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdDtpZihcImhpc3RvcnlcIj09PXRoaXMudHlwZSl7dmFyIGU9dGhpcy5jb25maWc7dD1BKGUudGFyZ2V0KSYmTXQoZS50YXJnZXQpP2wodGhpcy5tYWNoaW5lLmdldFN0YXRlTm9kZUJ5SWQoZS50YXJnZXQpLnBhdGguc2xpY2UodGhpcy5wYXRoLmxlbmd0aC0xKSk6ZS50YXJnZXR9cmV0dXJuIHR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksYS5wcm90b3R5cGUuZ2V0UmVsYXRpdmVTdGF0ZU5vZGVzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49ITApLG4/XCJoaXN0b3J5XCI9PT10LnR5cGU/dC5yZXNvbHZlSGlzdG9yeShlKTp0LmluaXRpYWxTdGF0ZU5vZGVzOlt0XX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGEucHJvdG90eXBlLFwiaW5pdGlhbFN0YXRlTm9kZXNcIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gRih0aGlzKT9bdGhpc106XCJjb21wb3VuZFwiIT09dGhpcy50eXBlfHx0aGlzLmluaXRpYWw/Zyh5KHRoaXMuaW5pdGlhbFN0YXRlVmFsdWUpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZ2V0RnJvbVJlbGF0aXZlUGF0aChlKX0pKSk6W3RoaXNdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGEucHJvdG90eXBlLmdldEZyb21SZWxhdGl2ZVBhdGg9ZnVuY3Rpb24odCl7aWYoIXQubGVuZ3RoKXJldHVyblt0aGlzXTt2YXIgZT1pKHQpLG49ZVswXSxyPWUuc2xpY2UoMSk7aWYoIXRoaXMuc3RhdGVzKXRocm93IG5ldyBFcnJvcihcIkNhbm5vdCByZXRyaWV2ZSBzdWJQYXRoICdcIi5jb25jYXQobixcIicgZnJvbSBub2RlIHdpdGggbm8gc3RhdGVzXCIpKTt2YXIgbz10aGlzLmdldFN0YXRlTm9kZShuKTtpZihcImhpc3RvcnlcIj09PW8udHlwZSlyZXR1cm4gby5yZXNvbHZlSGlzdG9yeSgpO2lmKCF0aGlzLnN0YXRlc1tuXSl0aHJvdyBuZXcgRXJyb3IoXCJDaGlsZCBzdGF0ZSAnXCIuY29uY2F0KG4sXCInIGRvZXMgbm90IGV4aXN0IG9uICdcIikuY29uY2F0KHRoaXMuaWQsXCInXCIpKTtyZXR1cm4gdGhpcy5zdGF0ZXNbbl0uZ2V0RnJvbVJlbGF0aXZlUGF0aChyKX0sYS5wcm90b3R5cGUuaGlzdG9yeVZhbHVlPWZ1bmN0aW9uKHQpe2lmKHModGhpcy5zdGF0ZXMpLmxlbmd0aClyZXR1cm57Y3VycmVudDp0fHx0aGlzLmluaXRpYWxTdGF0ZVZhbHVlLHN0YXRlczpwKHRoaXMuc3RhdGVzLChmdW5jdGlvbihlLG4pe2lmKCF0KXJldHVybiBlLmhpc3RvcnlWYWx1ZSgpO3ZhciByPUEodCk/dm9pZCAwOnRbbl07cmV0dXJuIGUuaGlzdG9yeVZhbHVlKHJ8fGUuaW5pdGlhbFN0YXRlVmFsdWUpfSksKGZ1bmN0aW9uKHQpe3JldHVybiF0Lmhpc3Rvcnl9KSl9fSxhLnByb3RvdHlwZS5yZXNvbHZlSGlzdG9yeT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKFwiaGlzdG9yeVwiIT09dGhpcy50eXBlKXJldHVyblt0aGlzXTt2YXIgbj10aGlzLnBhcmVudDtpZighdCl7dmFyIGk9dGhpcy50YXJnZXQ7cmV0dXJuIGk/Zyh5KGkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uZ2V0RnJvbVJlbGF0aXZlUGF0aCh0KX0pKSk6bi5pbml0aWFsU3RhdGVOb2Rlc312YXIgbyxhLHM9KG89bi5wYXRoLGE9XCJzdGF0ZXNcIixmdW5jdGlvbih0KXt2YXIgZSxuLGk9dDt0cnl7Zm9yKHZhciBzPXIobyksYz1zLm5leHQoKTshYy5kb25lO2M9cy5uZXh0KCkpe3ZhciB1PWMudmFsdWU7aT1pW2FdW3VdfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtjJiYhYy5kb25lJiYobj1zLnJldHVybikmJm4uY2FsbChzKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIGl9KSh0KS5jdXJyZW50O3JldHVybiBBKHMpP1tuLmdldFN0YXRlTm9kZShzKV06Zyh5KHMpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuXCJkZWVwXCI9PT1lLmhpc3Rvcnk/bi5nZXRGcm9tUmVsYXRpdmVQYXRoKHQpOltuLnN0YXRlc1t0WzBdXV19KSkpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5wcm90b3R5cGUsXCJzdGF0ZUlkc1wiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9ZyhzKHRoaXMuc3RhdGVzKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LnN0YXRlc1tlXS5zdGF0ZUlkc30pKSk7cmV0dXJuW3RoaXMuaWRdLmNvbmNhdChlKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5wcm90b3R5cGUsXCJldmVudHNcIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQsZSxuLGk7aWYodGhpcy5fX2NhY2hlLmV2ZW50cylyZXR1cm4gdGhpcy5fX2NhY2hlLmV2ZW50czt2YXIgbz10aGlzLnN0YXRlcyxhPW5ldyBTZXQodGhpcy5vd25FdmVudHMpO2lmKG8pdHJ5e2Zvcih2YXIgYz1yKHMobykpLHU9Yy5uZXh0KCk7IXUuZG9uZTt1PWMubmV4dCgpKXt2YXIgaD1vW3UudmFsdWVdO2lmKGguc3RhdGVzKXRyeXtmb3IodmFyIGY9KG49dm9pZCAwLHIoaC5ldmVudHMpKSxsPWYubmV4dCgpOyFsLmRvbmU7bD1mLm5leHQoKSl7dmFyIGQ9bC52YWx1ZTthLmFkZChcIlwiLmNvbmNhdChkKSl9fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2wmJiFsLmRvbmUmJihpPWYucmV0dXJuKSYmaS5jYWxsKGYpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX19fWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e3UmJiF1LmRvbmUmJihlPWMucmV0dXJuKSYmZS5jYWxsKGMpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX1yZXR1cm4gdGhpcy5fX2NhY2hlLmV2ZW50cz1BcnJheS5mcm9tKGEpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcIm93bkV2ZW50c1wiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgU2V0KHRoaXMudHJhbnNpdGlvbnMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hKCF0LnRhcmdldCYmIXQuYWN0aW9ucy5sZW5ndGgmJnQuaW50ZXJuYWwpfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZXZlbnRUeXBlfSkpKTtyZXR1cm4gQXJyYXkuZnJvbSh0KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxhLnByb3RvdHlwZS5yZXNvbHZlVGFyZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodm9pZCAwIT09dClyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe2lmKCFBKHQpKXJldHVybiB0O3ZhciBuPXRbMF09PT1lLmRlbGltaXRlcjtpZihuJiYhZS5wYXJlbnQpcmV0dXJuIGUuZ2V0U3RhdGVOb2RlQnlQYXRoKHQuc2xpY2UoMSkpO3ZhciByPW4/ZS5rZXkrdDp0O2lmKCFlLnBhcmVudClyZXR1cm4gZS5nZXRTdGF0ZU5vZGVCeVBhdGgocik7dHJ5e3JldHVybiBlLnBhcmVudC5nZXRTdGF0ZU5vZGVCeVBhdGgocil9Y2F0Y2godCl7dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB0cmFuc2l0aW9uIGRlZmluaXRpb24gZm9yIHN0YXRlIG5vZGUgJ1wiLmNvbmNhdChlLmlkLFwiJzpcXG5cIikuY29uY2F0KHQubWVzc2FnZSkpfX0pKX0sYS5wcm90b3R5cGUuZm9ybWF0VHJhbnNpdGlvbj1mdW5jdGlvbih0KXt2YXIgbj10aGlzLHI9ZnVuY3Rpb24odCl7aWYodm9pZCAwIT09dCYmXCJcIiE9PXQpcmV0dXJuIFModCl9KHQudGFyZ2V0KSxpPVwiaW50ZXJuYWxcImluIHQ/dC5pbnRlcm5hbDohcnx8ci5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gQSh0KSYmdFswXT09PW4uZGVsaW1pdGVyfSkpLG89dGhpcy5tYWNoaW5lLm9wdGlvbnMuZ3VhcmRzLGE9dGhpcy5yZXNvbHZlVGFyZ2V0KHIpLHM9ZShlKHt9LHQpLHthY3Rpb25zOmR0KFModC5hY3Rpb25zKSksY29uZDpPKHQuY29uZCxvKSx0YXJnZXQ6YSxzb3VyY2U6dGhpcyxpbnRlcm5hbDppLGV2ZW50VHlwZTp0LmV2ZW50LHRvSlNPTjpmdW5jdGlvbigpe3JldHVybiBlKGUoe30scykse3RhcmdldDpzLnRhcmdldD9zLnRhcmdldC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblwiI1wiLmNvbmNhdCh0LmlkKX0pKTp2b2lkIDAsc291cmNlOlwiI1wiLmNvbmNhdChuLmlkKX0pfX0pO3JldHVybiBzfSxhLnByb3RvdHlwZS5mb3JtYXRUcmFuc2l0aW9ucz1mdW5jdGlvbigpe3ZhciB0LGUsYSxjPXRoaXM7aWYodGhpcy5jb25maWcub24paWYoQXJyYXkuaXNBcnJheSh0aGlzLmNvbmZpZy5vbikpYT10aGlzLmNvbmZpZy5vbjtlbHNle3ZhciB1PXRoaXMuY29uZmlnLm9uLGg9dVtcIipcIl0sZj12b2lkIDA9PT1oP1tdOmgsbD1uKHUsW1wiKlwiXSk7YT1nKHMobCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gRCh0LGxbdF0pfSkpLmNvbmNhdChEKFwiKlwiLGYpKSl9ZWxzZSBhPVtdO3ZhciBkPXRoaXMuY29uZmlnLmFsd2F5cz9EKFwiXCIsdGhpcy5jb25maWcuYWx3YXlzKTpbXSxwPXRoaXMuY29uZmlnLm9uRG9uZT9EKFN0cmluZyhUdCh0aGlzLmlkKSksdGhpcy5jb25maWcub25Eb25lKTpbXSx2PWcodGhpcy5pbnZva2UubWFwKChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gdC5vbkRvbmUmJmUucHVzaC5hcHBseShlLG8oW10saShEKFN0cmluZyhOdCh0LmlkKSksdC5vbkRvbmUpKSwhMSkpLHQub25FcnJvciYmZS5wdXNoLmFwcGx5KGUsbyhbXSxpKEQoU3RyaW5nKEF0KHQuaWQpKSx0Lm9uRXJyb3IpKSwhMSkpLGV9KSkpLHk9dGhpcy5hZnRlcixtPWcobyhvKG8obyhbXSxpKHApLCExKSxpKHYpLCExKSxpKGEpLCExKSxpKGQpLCExKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBTKHQpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGMuZm9ybWF0VHJhbnNpdGlvbih0KX0pKX0pKSk7dHJ5e2Zvcih2YXIgeD1yKHkpLHc9eC5uZXh0KCk7IXcuZG9uZTt3PXgubmV4dCgpKXt2YXIgYj13LnZhbHVlO20ucHVzaChiKX19Y2F0Y2goZSl7dD17ZXJyb3I6ZX19ZmluYWxseXt0cnl7dyYmIXcuZG9uZSYmKGU9eC5yZXR1cm4pJiZlLmNhbGwoeCl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fXJldHVybiBtfSxhfSgpO3ZhciBGdD17ZGVmZXJFdmVudHM6ITF9LFV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnByb2Nlc3NpbmdFdmVudD0hMSx0aGlzLnF1ZXVlPVtdLHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5vcHRpb25zPWUoZSh7fSxGdCksdCl9cmV0dXJuIHQucHJvdG90eXBlLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aWYodGhpcy5pbml0aWFsaXplZD0hMCx0KXtpZighdGhpcy5vcHRpb25zLmRlZmVyRXZlbnRzKXJldHVybiB2b2lkIHRoaXMuc2NoZWR1bGUodCk7dGhpcy5wcm9jZXNzKHQpfXRoaXMuZmx1c2hFdmVudHMoKX0sdC5wcm90b3R5cGUuc2NoZWR1bGU9ZnVuY3Rpb24odCl7aWYodGhpcy5pbml0aWFsaXplZCYmIXRoaXMucHJvY2Vzc2luZ0V2ZW50KXtpZigwIT09dGhpcy5xdWV1ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiRXZlbnQgcXVldWUgc2hvdWxkIGJlIGVtcHR5IHdoZW4gaXQgaXMgbm90IHByb2Nlc3NpbmcgZXZlbnRzXCIpO3RoaXMucHJvY2Vzcyh0KSx0aGlzLmZsdXNoRXZlbnRzKCl9ZWxzZSB0aGlzLnF1ZXVlLnB1c2godCl9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5xdWV1ZT1bXX0sdC5wcm90b3R5cGUuZmx1c2hFdmVudHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5xdWV1ZS5zaGlmdCgpO3Q7KXRoaXMucHJvY2Vzcyh0KSx0PXRoaXMucXVldWUuc2hpZnQoKX0sdC5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbih0KXt0aGlzLnByb2Nlc3NpbmdFdmVudD0hMDt0cnl7dCgpfWNhdGNoKHQpe3Rocm93IHRoaXMuY2xlYXIoKSx0fWZpbmFsbHl7dGhpcy5wcm9jZXNzaW5nRXZlbnQ9ITF9fSx0fSgpLEJ0PW5ldyBNYXAsSnQ9MCxxdD1mdW5jdGlvbigpe3JldHVyblwieDpcIi5jb25jYXQoSnQrKyl9LCR0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEJ0LnNldCh0LGUpLHR9LFh0PWZ1bmN0aW9uKHQpe3JldHVybiBCdC5nZXQodCl9LEh0PWZ1bmN0aW9uKHQpe0J0LmRlbGV0ZSh0KX07ZnVuY3Rpb24gR3QoKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6dm9pZCAwfWZ1bmN0aW9uIEt0KHQpe2lmKEd0KCkpe3ZhciBlPWZ1bmN0aW9uKCl7dmFyIHQ9R3QoKTtpZih0JiZcIl9feHN0YXRlX19cImluIHQpcmV0dXJuIHQuX194c3RhdGVfX30oKTtlJiZlLnJlZ2lzdGVyKHQpfX1mdW5jdGlvbiBRdCh0LG4pe3ZvaWQgMD09PW4mJihuPXt9KTt2YXIgcixpPXQuaW5pdGlhbFN0YXRlLG89bmV3IFNldCxhPVtdLHM9ITEsYz0ocj17aWQ6bi5pZCxzZW5kOmZ1bmN0aW9uKGUpe2EucHVzaChlKSxmdW5jdGlvbigpe2lmKCFzKXtmb3Iocz0hMDthLmxlbmd0aD4wOyl7dmFyIGU9YS5zaGlmdCgpO2k9dC50cmFuc2l0aW9uKGksZSx1KSxvLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5leHQoaSl9KSl9cz0hMX19KCl9LGdldFNuYXBzaG90OmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHN1YnNjcmliZTpmdW5jdGlvbih0LGUsbil7dmFyIHI9eih0LGUsbik7cmV0dXJuIG8uYWRkKHIpLHIubmV4dChpKSx7dW5zdWJzY3JpYmU6ZnVuY3Rpb24oKXtvLmRlbGV0ZShyKX19fX0sZSh7c3Vic2NyaWJlOmZ1bmN0aW9uKCl7cmV0dXJue3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7fX19LGlkOlwiYW5vbnltb3VzXCIsZ2V0U25hcHNob3Q6ZnVuY3Rpb24oKXt9fSxyKSksdT17cGFyZW50Om4ucGFyZW50LHNlbGY6YyxpZDpuLmlkfHxcImFub255bW91c1wiLG9ic2VydmVyczpvfTtyZXR1cm4gaT10LnN0YXJ0P3Quc3RhcnQodSk6aSxjfXZhciBXdCxZdD17c3luYzohMSxhdXRvRm9yd2FyZDohMX07KFd0PXQuSW50ZXJwcmV0ZXJTdGF0dXN8fCh0LkludGVycHJldGVyU3RhdHVzPXt9KSlbV3QuTm90U3RhcnRlZD0wXT1cIk5vdFN0YXJ0ZWRcIixXdFtXdC5SdW5uaW5nPTFdPVwiUnVubmluZ1wiLFd0W1d0LlN0b3BwZWQ9Ml09XCJTdG9wcGVkXCI7dmFyIFp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihyLGkpe3ZhciBvPXRoaXM7dm9pZCAwPT09aSYmKGk9bi5kZWZhdWx0T3B0aW9ucyksdGhpcy5tYWNoaW5lPXIsdGhpcy5zY2hlZHVsZXI9bmV3IFV0LHRoaXMuZGVsYXllZEV2ZW50c01hcD17fSx0aGlzLmxpc3RlbmVycz1uZXcgU2V0LHRoaXMuY29udGV4dExpc3RlbmVycz1uZXcgU2V0LHRoaXMuc3RvcExpc3RlbmVycz1uZXcgU2V0LHRoaXMuZG9uZUxpc3RlbmVycz1uZXcgU2V0LHRoaXMuZXZlbnRMaXN0ZW5lcnM9bmV3IFNldCx0aGlzLnNlbmRMaXN0ZW5lcnM9bmV3IFNldCx0aGlzLmluaXRpYWxpemVkPSExLHRoaXMuc3RhdHVzPXQuSW50ZXJwcmV0ZXJTdGF0dXMuTm90U3RhcnRlZCx0aGlzLmNoaWxkcmVuPW5ldyBNYXAsdGhpcy5mb3J3YXJkVG89bmV3IFNldCx0aGlzLmluaXQ9dGhpcy5zdGFydCx0aGlzLnNlbmQ9ZnVuY3Rpb24oZSxuKXtpZihUKGUpKXJldHVybiBvLmJhdGNoKGUpLG8uc3RhdGU7dmFyIHI9TChWKGUsbikpO2lmKG8uc3RhdHVzPT09dC5JbnRlcnByZXRlclN0YXR1cy5TdG9wcGVkKXJldHVybiBvLnN0YXRlO2lmKG8uc3RhdHVzIT09dC5JbnRlcnByZXRlclN0YXR1cy5SdW5uaW5nJiYhby5vcHRpb25zLmRlZmVyRXZlbnRzKXRocm93IG5ldyBFcnJvcignRXZlbnQgXCInLmNvbmNhdChyLm5hbWUsJ1wiIHdhcyBzZW50IHRvIHVuaW5pdGlhbGl6ZWQgc2VydmljZSBcIicpLmNvbmNhdChvLm1hY2hpbmUuaWQsJ1wiLiBNYWtlIHN1cmUgLnN0YXJ0KCkgaXMgY2FsbGVkIGZvciB0aGlzIHNlcnZpY2UsIG9yIHNldCB7IGRlZmVyRXZlbnRzOiB0cnVlIH0gaW4gdGhlIHNlcnZpY2Ugb3B0aW9ucy5cXG5FdmVudDogJykuY29uY2F0KEpTT04uc3RyaW5naWZ5KHIuZGF0YSkpKTtyZXR1cm4gby5zY2hlZHVsZXIuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7by5mb3J3YXJkKHIpO3ZhciB0PW8ubmV4dFN0YXRlKHIpO28udXBkYXRlKHQscil9KSksby5fc3RhdGV9LHRoaXMuc2VuZFRvPWZ1bmN0aW9uKG4scil7dmFyIGksYT1vLnBhcmVudCYmKHI9PT10LlNwZWNpYWxUYXJnZXRzLlBhcmVudHx8by5wYXJlbnQuaWQ9PT1yKSxzPWE/by5wYXJlbnQ6QShyKT9vLmNoaWxkcmVuLmdldChyKXx8WHQocik6KGk9cikmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGkuc2VuZD9yOnZvaWQgMDtpZihzKVwibWFjaGluZVwiaW4gcz9zLnNlbmQoZShlKHt9LG4pLHtuYW1lOm4ubmFtZT09PWF0P1wiXCIuY29uY2F0KEF0KG8uaWQpKTpuLm5hbWUsb3JpZ2luOm8uc2Vzc2lvbklkfSkpOnMuc2VuZChuLmRhdGEpO2Vsc2UgaWYoIWEpdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIHNlbmQgZXZlbnQgdG8gY2hpbGQgJ1wiLmNvbmNhdChyLFwiJyBmcm9tIHNlcnZpY2UgJ1wiKS5jb25jYXQoby5pZCxcIicuXCIpKX07dmFyIGE9ZShlKHt9LG4uZGVmYXVsdE9wdGlvbnMpLGkpLHM9YS5jbG9jayxjPWEubG9nZ2VyLHU9YS5wYXJlbnQsaD1hLmlkLGY9dm9pZCAwIT09aD9oOnIuaWQ7dGhpcy5pZD1mLHRoaXMubG9nZ2VyPWMsdGhpcy5jbG9jaz1zLHRoaXMucGFyZW50PXUsdGhpcy5vcHRpb25zPWEsdGhpcy5zY2hlZHVsZXI9bmV3IFV0KHtkZWZlckV2ZW50czp0aGlzLm9wdGlvbnMuZGVmZXJFdmVudHN9KSx0aGlzLnNlc3Npb25JZD1xdCgpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsXCJpbml0aWFsU3RhdGVcIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5faW5pdGlhbFN0YXRlP3RoaXMuX2luaXRpYWxTdGF0ZTpqdCh0aGlzLChmdW5jdGlvbigpe3JldHVybiB0Ll9pbml0aWFsU3RhdGU9dC5tYWNoaW5lLmluaXRpYWxTdGF0ZSx0Ll9pbml0aWFsU3RhdGV9KSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLFwic3RhdGVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXRlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLG4ucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24odCxlKXt2YXIgbixpO3RyeXtmb3IodmFyIG89cih0LmFjdGlvbnMpLGE9by5uZXh0KCk7IWEuZG9uZTthPW8ubmV4dCgpKXt2YXIgcz1hLnZhbHVlO3RoaXMuZXhlYyhzLHQsZSl9fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2EmJiFhLmRvbmUmJihpPW8ucmV0dXJuKSYmaS5jYWxsKG8pfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX19LG4ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LGUpe3ZhciBuLGksbyxhLHMsYyx1LGgsZj10aGlzO2lmKHQuX3Nlc3Npb25pZD10aGlzLnNlc3Npb25JZCx0aGlzLl9zdGF0ZT10LHRoaXMub3B0aW9ucy5leGVjdXRlJiZ0aGlzLmV4ZWN1dGUodGhpcy5zdGF0ZSksdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbih0KXtmLnN0YXRlLmNoaWxkcmVuW3QuaWRdPXR9KSksdGhpcy5kZXZUb29scyYmdGhpcy5kZXZUb29scy5zZW5kKGUuZGF0YSx0KSx0LmV2ZW50KXRyeXtmb3IodmFyIGw9cih0aGlzLmV2ZW50TGlzdGVuZXJzKSxkPWwubmV4dCgpOyFkLmRvbmU7ZD1sLm5leHQoKSl7KDAsZC52YWx1ZSkodC5ldmVudCl9fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2QmJiFkLmRvbmUmJihpPWwucmV0dXJuKSYmaS5jYWxsKGwpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX10cnl7Zm9yKHZhciBwPXIodGhpcy5saXN0ZW5lcnMpLHY9cC5uZXh0KCk7IXYuZG9uZTt2PXAubmV4dCgpKXsoMCx2LnZhbHVlKSh0LHQuZXZlbnQpfX1jYXRjaCh0KXtvPXtlcnJvcjp0fX1maW5hbGx5e3RyeXt2JiYhdi5kb25lJiYoYT1wLnJldHVybikmJmEuY2FsbChwKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19dHJ5e2Zvcih2YXIgeT1yKHRoaXMuY29udGV4dExpc3RlbmVycyksZz15Lm5leHQoKTshZy5kb25lO2c9eS5uZXh0KCkpeygwLGcudmFsdWUpKHRoaXMuc3RhdGUuY29udGV4dCx0aGlzLnN0YXRlLmhpc3Rvcnk/dGhpcy5zdGF0ZS5oaXN0b3J5LmNvbnRleHQ6dm9pZCAwKX19Y2F0Y2godCl7cz17ZXJyb3I6dH19ZmluYWxseXt0cnl7ZyYmIWcuZG9uZSYmKGM9eS5yZXR1cm4pJiZjLmNhbGwoeSl9ZmluYWxseXtpZihzKXRocm93IHMuZXJyb3J9fXZhciBtPUgodC5jb25maWd1cmF0aW9ufHxbXSx0aGlzLm1hY2hpbmUpO2lmKHRoaXMuc3RhdGUuY29uZmlndXJhdGlvbiYmbSl7dmFyIFM9dC5jb25maWd1cmF0aW9uLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVyblwiZmluYWxcIj09PXQudHlwZSYmdC5wYXJlbnQ9PT1mLm1hY2hpbmV9KSksdz1TJiZTLmRvbmVEYXRhP3goUy5kb25lRGF0YSx0LmNvbnRleHQsZSk6dm9pZCAwO3RyeXtmb3IodmFyIGI9cih0aGlzLmRvbmVMaXN0ZW5lcnMpLF89Yi5uZXh0KCk7IV8uZG9uZTtfPWIubmV4dCgpKXsoMCxfLnZhbHVlKShOdCh0aGlzLmlkLHcpKX19Y2F0Y2godCl7dT17ZXJyb3I6dH19ZmluYWxseXt0cnl7XyYmIV8uZG9uZSYmKGg9Yi5yZXR1cm4pJiZoLmNhbGwoYil9ZmluYWxseXtpZih1KXRocm93IHUuZXJyb3J9fXRoaXMuc3RvcCgpfX0sbi5wcm90b3R5cGUub25UcmFuc2l0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxpc3RlbmVycy5hZGQoZSksdGhpcy5zdGF0dXM9PT10LkludGVycHJldGVyU3RhdHVzLlJ1bm5pbmcmJmUodGhpcy5zdGF0ZSx0aGlzLnN0YXRlLmV2ZW50KSx0aGlzfSxuLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oZSxuLHIpe3ZhciBpLG89dGhpcztpZighZSlyZXR1cm57dW5zdWJzY3JpYmU6ZnVuY3Rpb24oKXt9fTt2YXIgYT1yO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/aT1lOihpPWUubmV4dC5iaW5kKGUpLGE9ZS5jb21wbGV0ZS5iaW5kKGUpKSx0aGlzLmxpc3RlbmVycy5hZGQoaSksdGhpcy5zdGF0dXM9PT10LkludGVycHJldGVyU3RhdHVzLlJ1bm5pbmcmJmkodGhpcy5zdGF0ZSksYSYmdGhpcy5vbkRvbmUoYSkse3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7aSYmby5saXN0ZW5lcnMuZGVsZXRlKGkpLGEmJm8uZG9uZUxpc3RlbmVycy5kZWxldGUoYSl9fX0sbi5wcm90b3R5cGUub25FdmVudD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ldmVudExpc3RlbmVycy5hZGQodCksdGhpc30sbi5wcm90b3R5cGUub25TZW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlbmRMaXN0ZW5lcnMuYWRkKHQpLHRoaXN9LG4ucHJvdG90eXBlLm9uQ2hhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRleHRMaXN0ZW5lcnMuYWRkKHQpLHRoaXN9LG4ucHJvdG90eXBlLm9uU3RvcD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zdG9wTGlzdGVuZXJzLmFkZCh0KSx0aGlzfSxuLnByb3RvdHlwZS5vbkRvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZG9uZUxpc3RlbmVycy5hZGQodCksdGhpc30sbi5wcm90b3R5cGUub2ZmPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxpc3RlbmVycy5kZWxldGUodCksdGhpcy5ldmVudExpc3RlbmVycy5kZWxldGUodCksdGhpcy5zZW5kTGlzdGVuZXJzLmRlbGV0ZSh0KSx0aGlzLnN0b3BMaXN0ZW5lcnMuZGVsZXRlKHQpLHRoaXMuZG9uZUxpc3RlbmVycy5kZWxldGUodCksdGhpcy5jb250ZXh0TGlzdGVuZXJzLmRlbGV0ZSh0KSx0aGlzfSxuLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihlKXt2YXIgbj10aGlzO2lmKHRoaXMuc3RhdHVzPT09dC5JbnRlcnByZXRlclN0YXR1cy5SdW5uaW5nKXJldHVybiB0aGlzOyR0KHRoaXMuc2Vzc2lvbklkLHRoaXMpLHRoaXMuaW5pdGlhbGl6ZWQ9ITAsdGhpcy5zdGF0dXM9dC5JbnRlcnByZXRlclN0YXR1cy5SdW5uaW5nO3ZhciByPXZvaWQgMD09PWU/dGhpcy5pbml0aWFsU3RhdGU6anQodGhpcywoZnVuY3Rpb24oKXtyZXR1cm4hQSh0PWUpJiZcInZhbHVlXCJpbiB0JiZcImhpc3RvcnlcImluIHQ/bi5tYWNoaW5lLnJlc29sdmVTdGF0ZShlKTpuLm1hY2hpbmUucmVzb2x2ZVN0YXRlKGt0LmZyb20oZSxuLm1hY2hpbmUuY29udGV4dCkpO3ZhciB0fSkpO3JldHVybiB0aGlzLm9wdGlvbnMuZGV2VG9vbHMmJnRoaXMuYXR0YWNoRGV2KCksdGhpcy5zY2hlZHVsZXIuaW5pdGlhbGl6ZSgoZnVuY3Rpb24oKXtuLnVwZGF0ZShyLGh0KX0pKSx0aGlzfSxuLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dmFyIGUsbixpLG8sYSxjLHUsaCxmLGwsZD10aGlzO3RyeXtmb3IodmFyIHA9cih0aGlzLmxpc3RlbmVycyksdj1wLm5leHQoKTshdi5kb25lO3Y9cC5uZXh0KCkpe3ZhciB5PXYudmFsdWU7dGhpcy5saXN0ZW5lcnMuZGVsZXRlKHkpfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXt2JiYhdi5kb25lJiYobj1wLnJldHVybikmJm4uY2FsbChwKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19dHJ5e2Zvcih2YXIgZz1yKHRoaXMuc3RvcExpc3RlbmVycyksbT1nLm5leHQoKTshbS5kb25lO209Zy5uZXh0KCkpeyh5PW0udmFsdWUpKCksdGhpcy5zdG9wTGlzdGVuZXJzLmRlbGV0ZSh5KX19Y2F0Y2godCl7aT17ZXJyb3I6dH19ZmluYWxseXt0cnl7bSYmIW0uZG9uZSYmKG89Zy5yZXR1cm4pJiZvLmNhbGwoZyl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXRyeXtmb3IodmFyIFM9cih0aGlzLmNvbnRleHRMaXN0ZW5lcnMpLHg9Uy5uZXh0KCk7IXguZG9uZTt4PVMubmV4dCgpKXt5PXgudmFsdWU7dGhpcy5jb250ZXh0TGlzdGVuZXJzLmRlbGV0ZSh5KX19Y2F0Y2godCl7YT17ZXJyb3I6dH19ZmluYWxseXt0cnl7eCYmIXguZG9uZSYmKGM9Uy5yZXR1cm4pJiZjLmNhbGwoUyl9ZmluYWxseXtpZihhKXRocm93IGEuZXJyb3J9fXRyeXtmb3IodmFyIHc9cih0aGlzLmRvbmVMaXN0ZW5lcnMpLGI9dy5uZXh0KCk7IWIuZG9uZTtiPXcubmV4dCgpKXt5PWIudmFsdWU7dGhpcy5kb25lTGlzdGVuZXJzLmRlbGV0ZSh5KX19Y2F0Y2godCl7dT17ZXJyb3I6dH19ZmluYWxseXt0cnl7YiYmIWIuZG9uZSYmKGg9dy5yZXR1cm4pJiZoLmNhbGwodyl9ZmluYWxseXtpZih1KXRocm93IHUuZXJyb3J9fWlmKCF0aGlzLmluaXRpYWxpemVkKXJldHVybiB0aGlzO3RoaXMuc3RhdGUuY29uZmlndXJhdGlvbi5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZSxuO3RyeXtmb3IodmFyIGk9cih0LmRlZmluaXRpb24uZXhpdCksbz1pLm5leHQoKTshby5kb25lO289aS5uZXh0KCkpe3ZhciBhPW8udmFsdWU7ZC5leGVjKGEsZC5zdGF0ZSl9fWNhdGNoKHQpe2U9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e28mJiFvLmRvbmUmJihuPWkucmV0dXJuKSYmbi5jYWxsKGkpfWZpbmFsbHl7aWYoZSl0aHJvdyBlLmVycm9yfX19KSksdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbih0KXtOKHQuc3RvcCkmJnQuc3RvcCgpfSkpO3RyeXtmb3IodmFyIF89cihzKHRoaXMuZGVsYXllZEV2ZW50c01hcCkpLEU9Xy5uZXh0KCk7IUUuZG9uZTtFPV8ubmV4dCgpKXt2YXIgVD1FLnZhbHVlO3RoaXMuY2xvY2suY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZEV2ZW50c01hcFtUXSl9fWNhdGNoKHQpe2Y9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e0UmJiFFLmRvbmUmJihsPV8ucmV0dXJuKSYmbC5jYWxsKF8pfWZpbmFsbHl7aWYoZil0aHJvdyBmLmVycm9yfX1yZXR1cm4gdGhpcy5zY2hlZHVsZXIuY2xlYXIoKSx0aGlzLmluaXRpYWxpemVkPSExLHRoaXMuc3RhdHVzPXQuSW50ZXJwcmV0ZXJTdGF0dXMuU3RvcHBlZCxIdCh0aGlzLnNlc3Npb25JZCksdGhpc30sbi5wcm90b3R5cGUuYmF0Y2g9ZnVuY3Rpb24obil7dmFyIGE9dGhpcztpZih0aGlzLnN0YXR1cz09PXQuSW50ZXJwcmV0ZXJTdGF0dXMuTm90U3RhcnRlZCYmdGhpcy5vcHRpb25zLmRlZmVyRXZlbnRzKTtlbHNlIGlmKHRoaXMuc3RhdHVzIT09dC5JbnRlcnByZXRlclN0YXR1cy5SdW5uaW5nKXRocm93IG5ldyBFcnJvcihcIlwiLmNvbmNhdChuLmxlbmd0aCwnIGV2ZW50KHMpIHdlcmUgc2VudCB0byB1bmluaXRpYWxpemVkIHNlcnZpY2UgXCInKS5jb25jYXQodGhpcy5tYWNoaW5lLmlkLCdcIi4gTWFrZSBzdXJlIC5zdGFydCgpIGlzIGNhbGxlZCBmb3IgdGhpcyBzZXJ2aWNlLCBvciBzZXQgeyBkZWZlckV2ZW50czogdHJ1ZSB9IGluIHRoZSBzZXJ2aWNlIG9wdGlvbnMuJykpO3RoaXMuc2NoZWR1bGVyLnNjaGVkdWxlKChmdW5jdGlvbigpe3ZhciB0LHMsYz1hLnN0YXRlLHU9ITEsaD1bXSxmPWZ1bmN0aW9uKHQpe3ZhciBuPUwodCk7YS5mb3J3YXJkKG4pLGM9anQoYSwoZnVuY3Rpb24oKXtyZXR1cm4gYS5tYWNoaW5lLnRyYW5zaXRpb24oYyxuKX0pKSxoLnB1c2guYXBwbHkoaCxvKFtdLGkoYy5hY3Rpb25zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHI9YyxpPShuPXQpLmV4ZWMsZShlKHt9LG4pLHtleGVjOnZvaWQgMCE9PWk/ZnVuY3Rpb24oKXtyZXR1cm4gaShyLmNvbnRleHQsci5ldmVudCx7YWN0aW9uOm4sc3RhdGU6cixfZXZlbnQ6ci5fZXZlbnR9KX06dm9pZCAwfSk7dmFyIG4scixpfSkpKSwhMSkpLHU9dXx8ISFjLmNoYW5nZWR9O3RyeXtmb3IodmFyIGw9cihuKSxkPWwubmV4dCgpOyFkLmRvbmU7ZD1sLm5leHQoKSl7ZihkLnZhbHVlKX19Y2F0Y2goZSl7dD17ZXJyb3I6ZX19ZmluYWxseXt0cnl7ZCYmIWQuZG9uZSYmKHM9bC5yZXR1cm4pJiZzLmNhbGwobCl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fWMuY2hhbmdlZD11LGMuYWN0aW9ucz1oLGEudXBkYXRlKGMsTChuW24ubGVuZ3RoLTFdKSl9KSl9LG4ucHJvdG90eXBlLnNlbmRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZW5kLmJpbmQodGhpcyx0KX0sbi5wcm90b3R5cGUubmV4dFN0YXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1MKHQpO2lmKDA9PT1uLm5hbWUuaW5kZXhPZihvdCkmJiF0aGlzLnN0YXRlLm5leHRFdmVudHMuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10LmluZGV4T2Yob3QpfSkpKXRocm93IG4uZGF0YS5kYXRhO3JldHVybiBqdCh0aGlzLChmdW5jdGlvbigpe3JldHVybiBlLm1hY2hpbmUudHJhbnNpdGlvbihlLnN0YXRlLG4pfSkpfSxuLnByb3RvdHlwZS5mb3J3YXJkPWZ1bmN0aW9uKHQpe3ZhciBlLG47dHJ5e2Zvcih2YXIgaT1yKHRoaXMuZm9yd2FyZFRvKSxvPWkubmV4dCgpOyFvLmRvbmU7bz1pLm5leHQoKSl7dmFyIGE9by52YWx1ZSxzPXRoaXMuY2hpbGRyZW4uZ2V0KGEpO2lmKCFzKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBmb3J3YXJkIGV2ZW50ICdcIi5jb25jYXQodCxcIicgZnJvbSBpbnRlcnByZXRlciAnXCIpLmNvbmNhdCh0aGlzLmlkLFwiJyB0byBub25leGlzdGFudCBjaGlsZCAnXCIpLmNvbmNhdChhLFwiJy5cIikpO3Muc2VuZCh0KX19Y2F0Y2godCl7ZT17ZXJyb3I6dH19ZmluYWxseXt0cnl7byYmIW8uZG9uZSYmKG49aS5yZXR1cm4pJiZuLmNhbGwoaSl9ZmluYWxseXtpZihlKXRocm93IGUuZXJyb3J9fX0sbi5wcm90b3R5cGUuZGVmZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLmRlbGF5ZWRFdmVudHNNYXBbdC5pZF09dGhpcy5jbG9jay5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3QudG8/ZS5zZW5kVG8odC5fZXZlbnQsdC50byk6ZS5zZW5kKHQuX2V2ZW50KX0pLHQuZGVsYXkpfSxuLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24odCl7dGhpcy5jbG9jay5jbGVhclRpbWVvdXQodGhpcy5kZWxheWVkRXZlbnRzTWFwW3RdKSxkZWxldGUgdGhpcy5kZWxheWVkRXZlbnRzTWFwW3RdfSxuLnByb3RvdHlwZS5leGVjPWZ1bmN0aW9uKGUsbixyKXt2b2lkIDA9PT1yJiYocj10aGlzLm1hY2hpbmUub3B0aW9ucy5hY3Rpb25zKTt2YXIgaT1uLmNvbnRleHQsbz1uLl9ldmVudCxhPWUuZXhlY3x8ZnQoZS50eXBlLHIpLHM9TihhKT9hOmE/YS5leGVjOmUuZXhlYztpZihzKXRyeXtyZXR1cm4gcyhpLG8uZGF0YSx7YWN0aW9uOmUsc3RhdGU6dGhpcy5zdGF0ZSxfZXZlbnQ6b30pfWNhdGNoKHQpe3Rocm93IHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5zZW5kKHt0eXBlOlwieHN0YXRlLmVycm9yXCIsZGF0YTp0fSksdH1zd2l0Y2goZS50eXBlKXtjYXNlIFk6dmFyIGM9ZTtpZihcIm51bWJlclwiPT10eXBlb2YgYy5kZWxheSlyZXR1cm4gdm9pZCB0aGlzLmRlZmVyKGMpO2MudG8/dGhpcy5zZW5kVG8oYy5fZXZlbnQsYy50byk6dGhpcy5zZW5kKGMuX2V2ZW50KTticmVhaztjYXNlIFo6dGhpcy5jYW5jZWwoZS5zZW5kSWQpO2JyZWFrO2Nhc2UgSzp2YXIgdT1lLmFjdGl2aXR5O2lmKCF0aGlzLnN0YXRlLmFjdGl2aXRpZXNbdS5pZHx8dS50eXBlXSlicmVhaztpZih1LnR5cGU9PT10LkFjdGlvblR5cGVzLkludm9rZSl7dmFyIGg9TSh1LnNyYyksZj10aGlzLm1hY2hpbmUub3B0aW9ucy5zZXJ2aWNlcz90aGlzLm1hY2hpbmUub3B0aW9ucy5zZXJ2aWNlc1toLnR5cGVdOnZvaWQgMCxsPXUuaWQsZD11LmRhdGEscD1cImF1dG9Gb3J3YXJkXCJpbiB1P3UuYXV0b0ZvcndhcmQ6ISF1LmZvcndhcmQ7aWYoIWYpcmV0dXJuO3ZhciB2PWQ/eChkLGksbyk6dm9pZCAwO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBmKXJldHVybjt2YXIgeT1OKGYpP2YoaSxvLmRhdGEse2RhdGE6dixzcmM6aCxtZXRhOnUubWV0YX0pOmY7aWYoIXkpcmV0dXJuO3ZhciBnPXZvaWQgMDtrKHkpJiYoeT12P3kud2l0aENvbnRleHQodik6eSxnPXthdXRvRm9yd2FyZDpwfSksdGhpcy5zcGF3bih5LGwsZyl9ZWxzZSB0aGlzLnNwYXduQWN0aXZpdHkodSk7YnJlYWs7Y2FzZSBROnRoaXMuc3RvcENoaWxkKGUuYWN0aXZpdHkuaWQpO2JyZWFrO2Nhc2UgbnQ6dmFyIG09ZS5sYWJlbCxTPWUudmFsdWU7bT90aGlzLmxvZ2dlcihtLFMpOnRoaXMubG9nZ2VyKFMpfX0sbi5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCl7dmFyIGU7dGhpcy5jaGlsZHJlbi5kZWxldGUodCksdGhpcy5mb3J3YXJkVG8uZGVsZXRlKHQpLG51bGw9PT0oZT10aGlzLnN0YXRlKXx8dm9pZCAwPT09ZXx8ZGVsZXRlIGUuY2hpbGRyZW5bdF19LG4ucHJvdG90eXBlLnN0b3BDaGlsZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNoaWxkcmVuLmdldCh0KTtlJiYodGhpcy5yZW1vdmVDaGlsZCh0KSxOKGUuc3RvcCkmJmUuc3RvcCgpKX0sbi5wcm90b3R5cGUuc3Bhd249ZnVuY3Rpb24odCxuLHIpe2lmKHcodCkpcmV0dXJuIHRoaXMuc3Bhd25Qcm9taXNlKFByb21pc2UucmVzb2x2ZSh0KSxuKTtpZihOKHQpKXJldHVybiB0aGlzLnNwYXduQ2FsbGJhY2sodCxuKTtpZihmdW5jdGlvbih0KXt0cnl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdC5zZW5kfWNhdGNoKHQpe3JldHVybiExfX0obz10KSYmXCJpZFwiaW4gbylyZXR1cm4gdGhpcy5zcGF3bkFjdG9yKHQsbik7aWYoZnVuY3Rpb24odCl7dHJ5e3JldHVyblwic3Vic2NyaWJlXCJpbiB0JiZOKHQuc3Vic2NyaWJlKX1jYXRjaCh0KXtyZXR1cm4hMX19KHQpKXJldHVybiB0aGlzLnNwYXduT2JzZXJ2YWJsZSh0LG4pO2lmKGsodCkpcmV0dXJuIHRoaXMuc3Bhd25NYWNoaW5lKHQsZShlKHt9LHIpLHtpZDpufSkpO2lmKG51bGwhPT0oaT10KSYmXCJvYmplY3RcIj09dHlwZW9mIGkmJlwidHJhbnNpdGlvblwiaW4gaSYmXCJmdW5jdGlvblwiPT10eXBlb2YgaS50cmFuc2l0aW9uKXJldHVybiB0aGlzLnNwYXduQmVoYXZpb3IodCxuKTt0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBzcGF3biBlbnRpdHkgXCInLmNvbmNhdChuLCdcIiBvZiB0eXBlIFwiJykuY29uY2F0KHR5cGVvZiB0LCdcIi4nKSk7dmFyIGksb30sbi5wcm90b3R5cGUuc3Bhd25NYWNoaW5lPWZ1bmN0aW9uKHQscil7dmFyIGk9dGhpczt2b2lkIDA9PT1yJiYocj17fSk7dmFyIG89bmV3IG4odCxlKGUoe30sdGhpcy5vcHRpb25zKSx7cGFyZW50OnRoaXMsaWQ6ci5pZHx8dC5pZH0pKSxhPWUoZSh7fSxZdCkscik7YS5zeW5jJiZvLm9uVHJhbnNpdGlvbigoZnVuY3Rpb24odCl7aS5zZW5kKHN0LHtzdGF0ZTp0LGlkOm8uaWR9KX0pKTt2YXIgcz1vO3JldHVybiB0aGlzLmNoaWxkcmVuLnNldChvLmlkLHMpLGEuYXV0b0ZvcndhcmQmJnRoaXMuZm9yd2FyZFRvLmFkZChvLmlkKSxvLm9uRG9uZSgoZnVuY3Rpb24odCl7aS5yZW1vdmVDaGlsZChvLmlkKSxpLnNlbmQoTCh0LHtvcmlnaW46by5pZH0pKX0pKS5zdGFydCgpLHN9LG4ucHJvdG90eXBlLnNwYXduQmVoYXZpb3I9ZnVuY3Rpb24odCxlKXt2YXIgbj1RdCh0LHtpZDplLHBhcmVudDp0aGlzfSk7cmV0dXJuIHRoaXMuY2hpbGRyZW4uc2V0KGUsbiksbn0sbi5wcm90b3R5cGUuc3Bhd25Qcm9taXNlPWZ1bmN0aW9uKHQsZSl7dmFyIG4scj10aGlzLGk9ITE7dC50aGVuKChmdW5jdGlvbih0KXtpfHwobj10LHIucmVtb3ZlQ2hpbGQoZSksci5zZW5kKEwoTnQoZSx0KSx7b3JpZ2luOmV9KSkpfSksKGZ1bmN0aW9uKHQpe2lmKCFpKXtyLnJlbW92ZUNoaWxkKGUpO3ZhciBuPUF0KGUsdCk7dHJ5e3Iuc2VuZChMKG4se29yaWdpbjplfSkpfWNhdGNoKHQpe3IuZGV2VG9vbHMmJnIuZGV2VG9vbHMuc2VuZChuLHIuc3RhdGUpLHIubWFjaGluZS5zdHJpY3QmJnIuc3RvcCgpfX19KSk7dmFyIG89e2lkOmUsc2VuZDpmdW5jdGlvbigpe30sc3Vic2NyaWJlOmZ1bmN0aW9uKGUsbixyKXt2YXIgaT16KGUsbixyKSxvPSExO3JldHVybiB0LnRoZW4oKGZ1bmN0aW9uKHQpe298fChpLm5leHQodCksb3x8aS5jb21wbGV0ZSgpKX0pLChmdW5jdGlvbih0KXtvfHxpLmVycm9yKHQpfSkpLHt1bnN1YnNjcmliZTpmdW5jdGlvbigpe3JldHVybiBvPSEwfX19LHN0b3A6ZnVuY3Rpb24oKXtpPSEwfSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57aWQ6ZX19LGdldFNuYXBzaG90OmZ1bmN0aW9uKCl7cmV0dXJuIG59fTtyZXR1cm4gdGhpcy5jaGlsZHJlbi5zZXQoZSxvKSxvfSxuLnByb3RvdHlwZS5zcGF3bkNhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7dmFyIG4scixpPXRoaXMsbz0hMSxhPW5ldyBTZXQscz1uZXcgU2V0O3RyeXtyPXQoKGZ1bmN0aW9uKHQpe249dCxzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSkpLG98fGkuc2VuZChMKHQse29yaWdpbjplfSkpfSksKGZ1bmN0aW9uKHQpe2EuYWRkKHQpfSkpfWNhdGNoKHQpe3RoaXMuc2VuZChBdChlLHQpKX1pZih3KHIpKXJldHVybiB0aGlzLnNwYXduUHJvbWlzZShyLGUpO3ZhciBjPXtpZDplLHNlbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIGEuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KSl9LHN1YnNjcmliZTpmdW5jdGlvbih0KXtyZXR1cm4gcy5hZGQodCkse3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7cy5kZWxldGUodCl9fX0sc3RvcDpmdW5jdGlvbigpe289ITAsTihyKSYmcigpfSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57aWQ6ZX19LGdldFNuYXBzaG90OmZ1bmN0aW9uKCl7cmV0dXJuIG59fTtyZXR1cm4gdGhpcy5jaGlsZHJlbi5zZXQoZSxjKSxjfSxuLnByb3RvdHlwZS5zcGF3bk9ic2VydmFibGU9ZnVuY3Rpb24odCxlKXt2YXIgbixyPXRoaXMsaT10LnN1YnNjcmliZSgoZnVuY3Rpb24odCl7bj10LHIuc2VuZChMKHQse29yaWdpbjplfSkpfSksKGZ1bmN0aW9uKHQpe3IucmVtb3ZlQ2hpbGQoZSksci5zZW5kKEwoQXQoZSx0KSx7b3JpZ2luOmV9KSl9KSwoZnVuY3Rpb24oKXtyLnJlbW92ZUNoaWxkKGUpLHIuc2VuZChMKE50KGUpLHtvcmlnaW46ZX0pKX0pKSxvPXtpZDplLHNlbmQ6ZnVuY3Rpb24oKXt9LHN1YnNjcmliZTpmdW5jdGlvbihlLG4scil7cmV0dXJuIHQuc3Vic2NyaWJlKGUsbixyKX0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBpLnVuc3Vic2NyaWJlKCl9LGdldFNuYXBzaG90OmZ1bmN0aW9uKCl7cmV0dXJuIG59LHRvSlNPTjpmdW5jdGlvbigpe3JldHVybntpZDplfX19O3JldHVybiB0aGlzLmNoaWxkcmVuLnNldChlLG8pLG99LG4ucHJvdG90eXBlLnNwYXduQWN0b3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jaGlsZHJlbi5zZXQoZSx0KSx0fSxuLnByb3RvdHlwZS5zcGF3bkFjdGl2aXR5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubWFjaGluZS5vcHRpb25zJiZ0aGlzLm1hY2hpbmUub3B0aW9ucy5hY3Rpdml0aWVzP3RoaXMubWFjaGluZS5vcHRpb25zLmFjdGl2aXRpZXNbdC50eXBlXTp2b2lkIDA7aWYoZSl7dmFyIG49ZSh0aGlzLnN0YXRlLmNvbnRleHQsdCk7dGhpcy5zcGF3bkVmZmVjdCh0LmlkLG4pfX0sbi5wcm90b3R5cGUuc3Bhd25FZmZlY3Q9ZnVuY3Rpb24odCxlKXt0aGlzLmNoaWxkcmVuLnNldCh0LHtpZDp0LHNlbmQ6ZnVuY3Rpb24oKXt9LHN1YnNjcmliZTpmdW5jdGlvbigpe3JldHVybnt1bnN1YnNjcmliZTpmdW5jdGlvbigpe319fSxzdG9wOmV8fHZvaWQgMCxnZXRTbmFwc2hvdDpmdW5jdGlvbigpe30sdG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue2lkOnR9fX0pfSxuLnByb3RvdHlwZS5hdHRhY2hEZXY9ZnVuY3Rpb24oKXt2YXIgdD1HdCgpO2lmKHRoaXMub3B0aW9ucy5kZXZUb29scyYmdCl7aWYodC5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fKXt2YXIgbj1cIm9iamVjdFwiPT10eXBlb2YgdGhpcy5vcHRpb25zLmRldlRvb2xzP3RoaXMub3B0aW9ucy5kZXZUb29sczp2b2lkIDA7dGhpcy5kZXZUb29scz10Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18uY29ubmVjdChlKGUoe25hbWU6dGhpcy5pZCxhdXRvUGF1c2U6ITAsc3RhdGVTYW5pdGl6ZXI6ZnVuY3Rpb24odCl7cmV0dXJue3ZhbHVlOnQudmFsdWUsY29udGV4dDp0LmNvbnRleHQsYWN0aW9uczp0LmFjdGlvbnN9fX0sbikse2ZlYXR1cmVzOmUoe2p1bXA6ITEsc2tpcDohMX0sbj9uLmZlYXR1cmVzOnZvaWQgMCl9KSx0aGlzLm1hY2hpbmUpLHRoaXMuZGV2VG9vbHMuaW5pdCh0aGlzLnN0YXRlKX1LdCh0aGlzKX19LG4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybntpZDp0aGlzLmlkfX0sbi5wcm90b3R5cGVbUF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sbi5wcm90b3R5cGUuZ2V0U25hcHNob3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0dXM9PT10LkludGVycHJldGVyU3RhdHVzLk5vdFN0YXJ0ZWQ/dGhpcy5pbml0aWFsU3RhdGU6dGhpcy5fc3RhdGV9LG4uZGVmYXVsdE9wdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJue2V4ZWN1dGU6ITAsZGVmZXJFdmVudHM6ITAsY2xvY2s6e3NldFRpbWVvdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gc2V0VGltZW91dCh0LGUpfSxjbGVhclRpbWVvdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGNsZWFyVGltZW91dCh0KX19LGxvZ2dlcjp0LmNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksZGV2VG9vbHM6ITF9fShcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOmdsb2JhbCksbi5pbnRlcnByZXQ9dGUsbn0oKTtmdW5jdGlvbiB0ZSh0LGUpe3JldHVybiBuZXcgWnQodCxlKX12YXIgZWU9e3JhaXNlOnZ0LHNlbmQ6eXQsc2VuZFBhcmVudDpndCxzZW5kVXBkYXRlOm10LGxvZzpmdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT10JiYodD1TdCkse3R5cGU6bnQsbGFiZWw6ZSxleHByOnR9fSxjYW5jZWw6eHQsc3RhcnQ6d3Qsc3RvcDpidCxhc3NpZ246X3QsYWZ0ZXI6RXQsZG9uZTpUdCxyZXNwb25kOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHl0KHQsZShlKHt9LG4pLHt0bzpmdW5jdGlvbih0LGUsbil7cmV0dXJuIG4uX2V2ZW50Lm9yaWdpbn19KSl9LGZvcndhcmRUbzpPdCxlc2NhbGF0ZTpmdW5jdGlvbihuLHIpe3JldHVybiBndCgoZnVuY3Rpb24odCxlLHIpe3JldHVybnt0eXBlOmF0LGRhdGE6TihuKT9uKHQsZSxyKTpufX0pLGUoZSh7fSxyKSx7dG86dC5TcGVjaWFsVGFyZ2V0cy5QYXJlbnR9KSl9LGNob29zZTpmdW5jdGlvbihlKXtyZXR1cm57dHlwZTp0LkFjdGlvblR5cGVzLkNob29zZSxjb25kczplfX0scHVyZTpmdW5jdGlvbihlKXtyZXR1cm57dHlwZTp0LkFjdGlvblR5cGVzLlB1cmUsZ2V0OmV9fX07dC5JbnRlcnByZXRlcj1adCx0Lk1hY2hpbmU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj10LmNvbnRleHQpLG5ldyB6dCh0LGUsbil9LHQuU3RhdGU9a3QsdC5TdGF0ZU5vZGU9enQsdC5hY3Rpb25zPWVlLHQuYXNzaWduPV90LHQuY3JlYXRlTWFjaGluZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgenQodCxlKX0sdC5jcmVhdGVTY2hlbWE9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHQuZG9uZUludm9rZT1OdCx0LmZvcndhcmRUbz1PdCx0LmludGVycHJldD10ZSx0Lm1hcFN0YXRlPWZ1bmN0aW9uKHQsZSl7dmFyIG4saSxvO3RyeXtmb3IodmFyIGE9cihzKHQpKSx1PWEubmV4dCgpOyF1LmRvbmU7dT1hLm5leHQoKSl7dmFyIGg9dS52YWx1ZTtjKGgsZSkmJighb3x8ZS5sZW5ndGg+by5sZW5ndGgpJiYobz1oKX19Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7dSYmIXUuZG9uZSYmKGk9YS5yZXR1cm4pJiZpLmNhbGwoYSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiB0W29dfSx0Lm1hdGNoU3RhdGU9ZnVuY3Rpb24odCxlLG4pe3ZhciBvLGEscz1rdC5mcm9tKHQsdCBpbnN0YW5jZW9mIGt0P3QuY29udGV4dDp2b2lkIDApO3RyeXtmb3IodmFyIGM9cihlKSx1PWMubmV4dCgpOyF1LmRvbmU7dT1jLm5leHQoKSl7dmFyIGg9aSh1LnZhbHVlLDIpLGY9aFswXSxsPWhbMV07aWYocy5tYXRjaGVzKGYpKXJldHVybiBsKHMpfX1jYXRjaCh0KXtvPXtlcnJvcjp0fX1maW5hbGx5e3RyeXt1JiYhdS5kb25lJiYoYT1jLnJldHVybikmJmEuY2FsbChjKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIG4ocyl9LHQubWF0Y2hlc1N0YXRlPWMsdC5zZW5kPXl0LHQuc2VuZFBhcmVudD1ndCx0LnNlbmRVcGRhdGU9bXQsdC5zcGF3bj1mdW5jdGlvbih0LG4pe3ZhciByPWZ1bmN0aW9uKHQpe3JldHVybiBBKHQpP2UoZSh7fSxZdCkse25hbWU6dH0pOmUoZShlKHt9LFl0KSx7bmFtZTpDKCl9KSx0KX0obik7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlP2Uuc3Bhd24odCxyLm5hbWUscik6VnQodCxyLm5hbWUpfShJdFtJdC5sZW5ndGgtMV0pfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0pKTtcbiJdfQ==
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9PUDE1L3NjcmlwdC9kZWZhdWx0RGF0YS5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0RGF0YSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLElBQU1BLFdBQVcsR0FBRztBQUN2QjtBQUNBLGlCQUFlLDRFQUZRO0FBR3ZCLG1CQUFpQixvRUFITTtBQUl2QixlQUFhLDRFQUpVO0FBS3ZCLFlBQVU7QUFDTixXQUFPLG9FQUREO0FBRU4sWUFBUTtBQUNKLFdBQUssS0FERDtBQUVKLFdBQUssQ0FGRDtBQUdKLGVBQVMsS0FITDtBQUlKLGdCQUFVO0FBSk47QUFGRixHQUxhO0FBY3ZCLG9CQUFrQixDQUFDO0FBQ2YsVUFBTSxlQURTO0FBRWYsYUFBUyxDQUZNO0FBR2YsZ0JBQVksTUFIRztBQUlmLGlCQUFhLFVBSkU7QUFLZixnQkFBWSxDQUxHO0FBTWYsZ0JBQVksQ0FORztBQU9mLGdCQUFZLENBUEc7QUFRZixnQkFBWSxVQVJHO0FBU2YsbUJBQWU7QUFDWCxhQUFPLHFFQURJO0FBRVgsY0FBUTtBQUZHLEtBVEE7QUFhZixtQkFBZTtBQUNYLGFBQU8scUVBREk7QUFFWCxjQUFRO0FBRkcsS0FiQTtBQWlCZixrQkFBYztBQUNWLGFBQU8sb0VBREc7QUFFVixjQUFRO0FBRkUsS0FqQkM7QUFxQmYsZUFBVztBQUNQLFdBQUssS0FERTtBQUVQLFdBQUs7QUFGRSxLQXJCSTtBQXlCZixZQUFRLEdBekJPO0FBMEJmLFlBQVE7QUFDSixXQUFLLElBREQ7QUFFSixXQUFLLEVBRkQ7QUFHSixlQUFTLEdBSEw7QUFJSixnQkFBVTtBQUpOO0FBMUJPLEdBQUQsRUFnQ2Y7QUFDQyxVQUFNLGVBRFA7QUFFQyxhQUFTLENBRlY7QUFHQyxlQUFXLG9FQUhaO0FBSUMsZ0JBQVksS0FKYjtBQUtDLGlCQUFhLFVBTGQ7QUFNQyxnQkFBWSxtQkFOYjtBQU9DLGdCQUFZLElBUGI7QUFRQyxnQkFBWSxJQVJiO0FBU0MsZ0JBQVksVUFUYjtBQVVDLGVBQVc7QUFD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RkcsS0FUaEI7QUFhQyxtQkFBZTtBQUNYLGFBQU8scUVBREk7QUFFWCxjQUFRO0FBRkcsS0FiaEI7QUFpQkMsa0JBQWM7QUFDVixhQUFPLG9FQURHO0FBRVYsY0FBUTtBQUZFLEtBakJmO0FBcUJDLGVBQVc7QUFDUCxXQUFLLEtBREU7QUFFUCxXQUFLO0FBRkUsS0FyQlo7QUF5QkMsWUFBUSxHQXpCVDtBQTBCQyxZQUFRO0FBQ0osV0FBSyxJQUREO0FBRUosV0FBSyxFQUZEO0FBR0osZUFBUyxHQUhMO0FBSUosZ0JBQVU7QUFKTjtBQTFCVCxHQTdhZSxDQWRLO0FBNGR2QixpQkFBZSw0RUE1ZFE7QUE2ZHZCLGtCQUFnQiw0RUE3ZE87QUE4ZHZCLGtCQUFnQiw0RUE5ZE87QUErZHZCLGtCQUFnQiw0RUEvZE87QUFnZXZCLGtCQUFnQiw0RUFoZU87QUFpZXZCLGlCQUFlLDRFQWplUTtBQWtldkIsaUJBQWUsNEVBbGVRO0FBbWV2QixvQkFBa0I7QUFuZUssQ0FBcEIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBkZWZhdWx0RGF0YSA9IHtcbiAgICAvLyBcImJlZ2luX2F1ZGlvXCI6IFwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9iMWU1Mzc4MDgzYWRhYzk5NTA4Mzk3NzJjN2I2N2YzNC5tcDNcIixcbiAgICBcImJlZ2luX2F1ZGlvXCI6IFwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS84MWU3YTk0ZTE0MjBhNGNiY2FhNTgzZDQxODhhYjE0NS5tcDNcIixcbiAgICBcInBsYXlpbmdfYXVkaW9cIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS81NDkzNDdkMWJlNjIwZDlkOTFiNzQyMGQ0NWIzY2I3YS5tcDNcIixcbiAgICBcImVuZF9hdWRpb1wiOiBcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vODFlN2E5NGUxNDIwYTRjYmNhYTU4M2Q0MTg4YWIxNDUubXAzXCIsXG4gICAgXCJiZ0l0ZW1cIjoge1xuICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2FkY2NjYmQyNmUyY2ZhMjU5OTIwZTI0ZGYwMWQ0YjkyLnBuZ1wiLFxuICAgICAgICBcInJlY3RcIjoge1xuICAgICAgICAgICAgXCJ4XCI6IDM3NC42LFxuICAgICAgICAgICAgXCJ5XCI6IDAsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDI5My44LFxuICAgICAgICAgICAgXCJoZWlnaHRcIjogMzkwXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFwiaG90Wm9uZUl0ZW1BcnJcIjogW3tcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA0NTA0MDJcIixcbiAgICAgICAgXCJpbmRleFwiOiAwLFxuICAgICAgICBcIml0ZW1UeXBlXCI6IFwicmVjdFwiLFxuICAgICAgICBcImZvbnRTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcImltZ1NjYWxlXCI6IDEsXG4gICAgICAgIFwiaW1nU2l6ZVdcIjogMCxcbiAgICAgICAgXCJpbWdTaXplSFwiOiAwLFxuICAgICAgICBcIm1hcFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwic2tlSnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9jNWM2Y2Q4OTA2NjBhM2MyMmZkZTM5M2EzNzcwNDU4Zi5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLlsI/msb3ovaZfc2tlLmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleEpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vY2VhMTA3NTE3NDA2NDYzNDc0ZDkwN2UzMDYxNjMyMjYuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi5bCP5rG96L2mX3RleC5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhQbmdEYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vODRiY2U2NGNkNDI1OWU2MDRhNDU4ZDA4ZGRkNzViZWMucG5nXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLlsI/msb3ovaZfdGV4LnBuZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZHJhZ0RvdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNTIxLjUsXG4gICAgICAgICAgICBcInlcIjogMTk1XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ0lkeFwiOiBcIjFcIixcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA0Ni45LFxuICAgICAgICAgICAgXCJ5XCI6IDk1LFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAyMDAsXG4gICAgICAgICAgICBcImhlaWdodFwiOiAyMDBcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA0NjUxMzNcIixcbiAgICAgICAgXCJpbmRleFwiOiAxLFxuICAgICAgICBcInBpY191cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS83MGQwMmVlMzc4OGUzNzNmNzA3YTQ1NTMwY2QyZjljMC5wbmdcIixcbiAgICAgICAgXCJpdGVtVHlwZVwiOiBcInBpY1wiLFxuICAgICAgICBcImZvbnRTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcImltZ1NjYWxlXCI6IDAuMjM1NzkyMDE5MzQ3MDM3NDcsXG4gICAgICAgIFwiaW1nU2l6ZVdcIjogMTI0NixcbiAgICAgICAgXCJpbWdTaXplSFwiOiAxNjU0LFxuICAgICAgICBcIm1hcFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwiZHJhZ0RvdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNTIxLjUsXG4gICAgICAgICAgICBcInlcIjogMTk1XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ0lkeFwiOiBcIjJcIixcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiAwLFxuICAgICAgICAgICAgXCJ5XCI6IDEsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDI5My44LFxuICAgICAgICAgICAgXCJoZWlnaHRcIjogMzkwXG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIFwiaWRcIjogXCIxNjM4MDkwNDg1MDMxXCIsXG4gICAgICAgIFwiaW5kZXhcIjogMixcbiAgICAgICAgXCJhdWRpb191cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9lMzFjM2IxOTE0ODM3YTYxMWQ0ZDNiYjFjZWIwMDc3My5tcDNcIixcbiAgICAgICAgXCJpdGVtVHlwZVwiOiBcInJlY3RcIixcbiAgICAgICAgXCJmb250U2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJpbWdTY2FsZVwiOiAxLFxuICAgICAgICBcImltZ1NpemVXXCI6IDAsXG4gICAgICAgIFwiaW1nU2l6ZUhcIjogMCxcbiAgICAgICAgXCJtYXBTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcInNrZUpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZDJkN2RlOWY4MDc5ZjM2ZTgzNTRkMTZlNGNhMjY0NzYuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi5oi/5a2QX3NrZS5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzIwNGVhMTgwMThhMzUyYTMwZmQyMzNhNDZmOWEwYTFhLmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIuaIv+WtkF90ZXguanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4UG5nRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2NmOGRhMGFiMDBhN2Q5ZjM0YmRmOGY0OTBjMjlkY2JmLnBuZ1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi5oi/5a2QX3RleC5wbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImRyYWdEb3RcIjoge1xuICAgICAgICAgICAgXCJ4XCI6IDUyMS41LFxuICAgICAgICAgICAgXCJ5XCI6IDE5NVxuICAgICAgICB9LFxuICAgICAgICBcImdJZHhcIjogXCIwXCIsXG4gICAgICAgIFwibGFiZWxUZXh0XCI6IFwiMTRcIixcbiAgICAgICAgXCJwb3NYXCI6IDU3OCxcbiAgICAgICAgXCJwb3NZXCI6IDE2MC45OTc5MTMzNDQ5NjE1NSxcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiAxMjQuOSxcbiAgICAgICAgICAgIFwieVwiOiAxMDgsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDE3MCxcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDEwNlxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBcImlkXCI6IFwiMTYzODA5MDUzOTc4N1wiLFxuICAgICAgICBcImluZGV4XCI6IDMsXG4gICAgICAgIFwiaXRlbVR5cGVcIjogXCJyZWN0XCIsXG4gICAgICAgIFwiZm9udFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwiaW1nU2NhbGVcIjogMSxcbiAgICAgICAgXCJpbWdTaXplV1wiOiAwLFxuICAgICAgICBcImltZ1NpemVIXCI6IDAsXG4gICAgICAgIFwibWFwU2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJza2VKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2VkMmFjNDkzMWE5YzAwZmY2YzQyOTgzODE3MjI2NzZlLmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIueJm19za2UuanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4SnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8wZTE1MzA5M2VlNzI2NWI2YTg0Mzg0NzU0M2Q2MTEwYi5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLniZtfdGV4Lmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleFBuZ0RhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS82MzE2NjFlMTM2MTZlZWE2Y2RlOWY5ZTY2MTBmNTAwOC5wbmdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIueJm190ZXgucG5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkcmFnRG90XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA1MjEuNSxcbiAgICAgICAgICAgIFwieVwiOiAxOTcuNDYxMTY1MDQ4NTQzNjhcbiAgICAgICAgfSxcbiAgICAgICAgXCJnSWR4XCI6IFwiMVwiLFxuICAgICAgICBcInJlY3RcIjoge1xuICAgICAgICAgICAgXCJ4XCI6IDQ2LjksXG4gICAgICAgICAgICBcInlcIjogOTUsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDIwMCxcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDIwMFxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBcImlkXCI6IFwiMTYzODA5MDU2Mjg2N1wiLFxuICAgICAgICBcImluZGV4XCI6IDQsXG4gICAgICAgIFwiYXVkaW9fdXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vYmYxOTI0YzUwMmNhMWE0YWM5MjhhMzFlN2M4YWE3MGUubXAzXCIsXG4gICAgICAgIFwiaXRlbVR5cGVcIjogXCJyZWN0XCIsXG4gICAgICAgIFwiZm9udFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwiaW1nU2NhbGVcIjogMSxcbiAgICAgICAgXCJpbWdTaXplV1wiOiAwLFxuICAgICAgICBcImltZ1NpemVIXCI6IDAsXG4gICAgICAgIFwibWFwU2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJza2VKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2JkM2MyY2M5M2IxNTkzNDMzYTU4ZDg0ODI5NzJmZjY2Lmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIuiLueaenF9za2UuanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4SnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8xZjU0ZGYzMTdhOGM4NjI3MWUyOWQ2ZGIzZmZiNTVjZS5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLoi7nmnpxfdGV4Lmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleFBuZ0RhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS83MzRhYzA2YTdlZjAxOGI0NTdlN2FjNzY5Mjc4OWZmYS5wbmdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIuiLueaenF90ZXgucG5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkcmFnRG90XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA1MjEuNSxcbiAgICAgICAgICAgIFwieVwiOiAxOTcuNDYxMTY1MDQ4NTQzNjhcbiAgICAgICAgfSxcbiAgICAgICAgXCJnSWR4XCI6IFwiMFwiLFxuICAgICAgICBcImxhYmVsVGV4dFwiOiBcIjZcIixcbiAgICAgICAgXCJwb3NYXCI6IDQyOSxcbiAgICAgICAgXCJwb3NZXCI6IDE0NixcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiAtMC4xLFxuICAgICAgICAgICAgXCJ5XCI6IDcwLFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMjIsXG4gICAgICAgICAgICBcImhlaWdodFwiOiAxNTJcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA1OTQyNDdcIixcbiAgICAgICAgXCJpbmRleFwiOiA1LFxuICAgICAgICBcIml0ZW1UeXBlXCI6IFwicmVjdFwiLFxuICAgICAgICBcImZvbnRTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcImltZ1NjYWxlXCI6IDEsXG4gICAgICAgIFwiaW1nU2l6ZVdcIjogMCxcbiAgICAgICAgXCJpbWdTaXplSFwiOiAwLFxuICAgICAgICBcIm1hcFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwic2tlSnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8xZDRiMjUxY2FmMGMwYjgyNDVmYjE3Y2Q4NDQ1NjcyYy5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLlhpzlpKtfc2tlLmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleEpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vMWZkZDA0Y2FjYjZkNTQzY2YwNWNlNjRlODEyNGE2ZmYuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi5Yac5aSrX3RleC5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhQbmdEYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vOGY1ODJjYjM5ZWIzNDlkYTA4ZTA2Mjg5YjBjZTZjMTYucG5nXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLlhpzlpKtfdGV4LnBuZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZHJhZ0RvdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNTIxLjUsXG4gICAgICAgICAgICBcInlcIjogMTk3LjQ2MTE2NTA0ODU0MzY4XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ0lkeFwiOiBcIjFcIixcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA0Ni45LFxuICAgICAgICAgICAgXCJ5XCI6IDk1LFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAyMDAsXG4gICAgICAgICAgICBcImhlaWdodFwiOiAyMDBcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA2NjMwNTZcIixcbiAgICAgICAgXCJpbmRleFwiOiA2LFxuICAgICAgICBcIml0ZW1UeXBlXCI6IFwicmVjdFwiLFxuICAgICAgICBcImZvbnRTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcImltZ1NjYWxlXCI6IDEsXG4gICAgICAgIFwiaW1nU2l6ZVdcIjogMCxcbiAgICAgICAgXCJpbWdTaXplSFwiOiAwLFxuICAgICAgICBcIm1hcFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwic2tlSnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS80NTAzNzIxOTAxODgwZDBiNmMzYWQ2ZDQyNjFlOTU4Yi5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLlsI/lpbPlralfc2tlLmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleEpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZmM0ZmQwYjJmNjcyZGZmN2M3YjIxNDg4MzAxNjQwOTAuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi5bCP5aWz5a2pX3RleC5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhQbmdEYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNGJlNDFjMTU5NzJjYWY5OWVlZjk1NmJhNDg3NTljOTEucG5nXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLlsI/lpbPlralfdGV4LnBuZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZHJhZ0RvdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNTIxLjUsXG4gICAgICAgICAgICBcInlcIjogMTk3LjQ2MTE2NTA0ODU0MzY4XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ0lkeFwiOiBcIjFcIixcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA0Ni45LFxuICAgICAgICAgICAgXCJ5XCI6IDk1LFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAyMDAsXG4gICAgICAgICAgICBcImhlaWdodFwiOiAyMDBcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA2ODU1NzFcIixcbiAgICAgICAgXCJpbmRleFwiOiA3LFxuICAgICAgICBcIml0ZW1UeXBlXCI6IFwicmVjdFwiLFxuICAgICAgICBcImZvbnRTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcImltZ1NjYWxlXCI6IDEsXG4gICAgICAgIFwiaW1nU2l6ZVdcIjogMCxcbiAgICAgICAgXCJpbWdTaXplSFwiOiAwLFxuICAgICAgICBcIm1hcFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwic2tlSnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS81NTk1MWM3OTRiNDE0YWI1OGNjYTAyMzY0MjgxOWUzNy5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLmr43puKFfc2tlLmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleEpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNDdiOTMzMjNiMWQxZTFlNjAyMDcwNGM1MzdmNDY4MjAuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi5q+N6bihX3RleC5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhQbmdEYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZGQ2NjAyMWZmODYwYjAyYTU1OWQ1OTgxN2M3MWUyN2YucG5nXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLmr43puKFfdGV4LnBuZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZHJhZ0RvdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNTIxLjUsXG4gICAgICAgICAgICBcInlcIjogMTk3LjQ2MTE2NTA0ODU0MzY4XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ0lkeFwiOiBcIjFcIixcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA0Ni45LFxuICAgICAgICAgICAgXCJ5XCI6IDk1LFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAyMDAsXG4gICAgICAgICAgICBcImhlaWdodFwiOiAyMDBcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA2OTU2NTJcIixcbiAgICAgICAgXCJpbmRleFwiOiA4LFxuICAgICAgICBcImF1ZGlvX3VybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzMyM2ZlYjE5ZDE1MzA2OTcwMmZmZDIxMDk3ZjE4Zjc5Lm1wM1wiLFxuICAgICAgICBcIml0ZW1UeXBlXCI6IFwicmVjdFwiLFxuICAgICAgICBcImZvbnRTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcImltZ1NjYWxlXCI6IDEsXG4gICAgICAgIFwiaW1nU2l6ZVdcIjogMCxcbiAgICAgICAgXCJpbWdTaXplSFwiOiAwLFxuICAgICAgICBcIm1hcFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwic2tlSnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9jZDdjN2E3NTZjMGY3OWQyOGY0MTk1NzZlM2I4NWIwYy5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLpuK3lrZBfc2tlLmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleEpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNzYxM2YzMDg5M2E1ZjY0NzczYTc3NzIzYzFkNjdmMGQuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi6bit5a2QX3RleC5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhQbmdEYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNTliMjI5M2VmNGVlYTlkNjRmZjk4MjFiYzVkNjlhNmQucG5nXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLpuK3lrZBfdGV4LnBuZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZHJhZ0RvdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNTIxLjUsXG4gICAgICAgICAgICBcInlcIjogMTk3LjQ2MTE2NTA0ODU0MzY4XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ0lkeFwiOiBcIjBcIixcbiAgICAgICAgXCJsYWJlbFRleHRcIjogXCIxMVwiLFxuICAgICAgICBcInBvc1hcIjogNTY0LjQ5OTMxNTE0OTExNTUsXG4gICAgICAgIFwicG9zWVwiOiAyNDcuOTk3MzU2OTAzNjE3OTcsXG4gICAgICAgIFwicmVjdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogMTI3LjksXG4gICAgICAgICAgICBcInlcIjogMjE2LFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMjQsXG4gICAgICAgICAgICBcImhlaWdodFwiOiA2NFxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBcImlkXCI6IFwiMTYzODA5MDc1ODE1OVwiLFxuICAgICAgICBcImluZGV4XCI6IDksXG4gICAgICAgIFwiYXVkaW9fdXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vYjkwM2IxNzRmMDkxMDc1MTdiNWQ2Zjg5MzRiNzM0NDcubXAzXCIsXG4gICAgICAgIFwiaXRlbVR5cGVcIjogXCJyZWN0XCIsXG4gICAgICAgIFwiZm9udFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwiaW1nU2NhbGVcIjogMSxcbiAgICAgICAgXCJpbWdTaXplV1wiOiAwLFxuICAgICAgICBcImltZ1NpemVIXCI6IDAsXG4gICAgICAgIFwibWFwU2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJza2VKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2I5ZmE4NWMyMjdkYWE2NTM5ZjEyY2FiNWE1MDU4MDUyLmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIum4oeibi19za2UuanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4SnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS85OWFhOGRlN2I2OTAwMGFjNmM1ZTBmYjZhNTA4YjY5Mi5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLpuKHom4tfdGV4Lmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleFBuZ0RhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8wOWJkMGEzNGE0NTA4NjEzZmQ3YzE2NzcyNGU0YTk2OS5wbmdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIum4oeibi190ZXgucG5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkcmFnRG90XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA1MjEuNSxcbiAgICAgICAgICAgIFwieVwiOiAxOTcuNDYxMTY1MDQ4NTQzNjhcbiAgICAgICAgfSxcbiAgICAgICAgXCJnSWR4XCI6IFwiMFwiLFxuICAgICAgICBcImxhYmVsVGV4dFwiOiBcIjdcIixcbiAgICAgICAgXCJwb3NYXCI6IDQ3MS41MDAzNjM4MjcwMzIzNCxcbiAgICAgICAgXCJwb3NZXCI6IDI5MS45OTY4MzI1NjQ2NTk1NCxcbiAgICAgICAgXCJyZWN0XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA2Ny40LFxuICAgICAgICAgICAgXCJ5XCI6IDIyMyxcbiAgICAgICAgICAgIFwid2lkdGhcIjogNTksXG4gICAgICAgICAgICBcImhlaWdodFwiOiAxMzhcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA4MTIxNTVcIixcbiAgICAgICAgXCJpbmRleFwiOiAxMCxcbiAgICAgICAgXCJpdGVtVHlwZVwiOiBcInJlY3RcIixcbiAgICAgICAgXCJmb250U2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJpbWdTY2FsZVwiOiAxLFxuICAgICAgICBcImltZ1NpemVXXCI6IDAsXG4gICAgICAgIFwiaW1nU2l6ZUhcIjogMCxcbiAgICAgICAgXCJtYXBTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcInNrZUpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vMzU3ZmVmODIwNDIyOGFmYjQzZDBjZTczNzQ2MjI4ZTUuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi6bG8X3NrZS5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2Y2OTRlNTQ0MjA5NWEzMTdmYzdkOGIxMzkwZTYzMGM3Lmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIumxvF90ZXguanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4UG5nRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2Y1NjZjY2ExMGZkODNmNjJhNDY1YjE0NGFjNzNkNDgzLnBuZ1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi6bG8X3RleC5wbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImRyYWdEb3RcIjoge1xuICAgICAgICAgICAgXCJ4XCI6IDUyMS41LFxuICAgICAgICAgICAgXCJ5XCI6IDE5Ny40NjExNjUwNDg1NDM2OFxuICAgICAgICB9LFxuICAgICAgICBcImdJZHhcIjogXCIxXCIsXG4gICAgICAgIFwicmVjdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogNDYuOSxcbiAgICAgICAgICAgIFwieVwiOiA5NSxcbiAgICAgICAgICAgIFwid2lkdGhcIjogMjAwLFxuICAgICAgICAgICAgXCJoZWlnaHRcIjogMjAwXG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIFwiaWRcIjogXCIxNjM4MDkwODI0MjQ0XCIsXG4gICAgICAgIFwiaW5kZXhcIjogMTEsXG4gICAgICAgIFwiYXVkaW9fdXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vMjY1NmI3MmFlYzdmNmRlZjA3NzEzZmJjOTkzMDkxNjgubXAzXCIsXG4gICAgICAgIFwiaXRlbVR5cGVcIjogXCJyZWN0XCIsXG4gICAgICAgIFwiZm9udFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwiaW1nU2NhbGVcIjogMSxcbiAgICAgICAgXCJpbWdTaXplV1wiOiAwLFxuICAgICAgICBcImltZ1NpemVIXCI6IDAsXG4gICAgICAgIFwibWFwU2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJza2VKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzIwY2JmM2QxODZhMTk3YmFhZWQzODIwNGRkMDE3ZjUxLmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIueMq19za2UuanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4SnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9kN2RlNWEzMmRlM2VlMWFkNjYwZGM1MDliYThhZGYxZC5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLnjKtfdGV4Lmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleFBuZ0RhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9hZjg2ZTk2N2FhYjg2MzJjZDBiMjZkNjBhNjJmMDY3NS5wbmdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIueMq190ZXgucG5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkcmFnRG90XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA1MjEuNSxcbiAgICAgICAgICAgIFwieVwiOiAxOTcuNDYxMTY1MDQ4NTQzNjhcbiAgICAgICAgfSxcbiAgICAgICAgXCJnSWR4XCI6IFwiMFwiLFxuICAgICAgICBcImxhYmVsVGV4dFwiOiBcIjEwXCIsXG4gICAgICAgIFwicG9zWFwiOiA0MDguNTAxMTQ0OTg1MDcyMzYsXG4gICAgICAgIFwicG9zWVwiOiAyODguOTk2ODk2NzY5NDMsXG4gICAgICAgIFwicmVjdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogMS40LFxuICAgICAgICAgICAgXCJ5XCI6IDIyMixcbiAgICAgICAgICAgIFwid2lkdGhcIjogNjUsXG4gICAgICAgICAgICBcImhlaWdodFwiOiAxMzRcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgXCJpZFwiOiBcIjE2MzgwOTA4OTc2NDRcIixcbiAgICAgICAgXCJpbmRleFwiOiAxMixcbiAgICAgICAgXCJhdWRpb191cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS85YmJmOGJhMmZhN2Y5NmVhNWE5NWMyN2EzODQ0MTRhMi5tcDNcIixcbiAgICAgICAgXCJpdGVtVHlwZVwiOiBcInJlY3RcIixcbiAgICAgICAgXCJmb250U2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJpbWdTY2FsZVwiOiAxLFxuICAgICAgICBcImltZ1NpemVXXCI6IDAsXG4gICAgICAgIFwiaW1nU2l6ZUhcIjogMCxcbiAgICAgICAgXCJtYXBTY2FsZVwiOiAwLjgxNDg0Mzc1LFxuICAgICAgICBcInNrZUpzb25EYXRhXCI6IHtcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZDg1MDZlYmRkYjI5YzhkMDhiNGI5MzM3NmI0NWY1YzkuanNvblwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi6bifX3NrZS5qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXhKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzlmYWQ0N2M5OTAyNWI3YjIyOWRmNTJhZmI3OTdlYzVjLmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIum4n190ZXguanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4UG5nRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2U4NmIxMzZiOTcwNjc2OGM1Y2EwZGJhM2RjMGFhYjIxLnBuZ1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwi6bifX3RleC5wbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImRyYWdEb3RcIjoge1xuICAgICAgICAgICAgXCJ4XCI6IDUyMS41LFxuICAgICAgICAgICAgXCJ5XCI6IDE5Ny40NjExNjUwNDg1NDM2OFxuICAgICAgICB9LFxuICAgICAgICBcImdJZHhcIjogXCIwXCIsXG4gICAgICAgIFwibGFiZWxUZXh0XCI6IFwiOVwiLFxuICAgICAgICBcInBvc1hcIjogNTczLFxuICAgICAgICBcInBvc1lcIjogNzQsXG4gICAgICAgIFwicmVjdFwiOiB7XG4gICAgICAgICAgICBcInhcIjogMTI3LjksXG4gICAgICAgICAgICBcInlcIjogNDEsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDE1NCxcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDY2XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIFwiaWRcIjogXCIxNjM4MDkwOTQ4OTUwXCIsXG4gICAgICAgIFwiaW5kZXhcIjogMTMsXG4gICAgICAgIFwiaXRlbVR5cGVcIjogXCJyZWN0XCIsXG4gICAgICAgIFwiZm9udFNjYWxlXCI6IDAuODE0ODQzNzUsXG4gICAgICAgIFwiaW1nU2NhbGVcIjogMSxcbiAgICAgICAgXCJpbWdTaXplV1wiOiAwLFxuICAgICAgICBcImltZ1NpemVIXCI6IDAsXG4gICAgICAgIFwibWFwU2NhbGVcIjogMC44MTQ4NDM3NSxcbiAgICAgICAgXCJza2VKc29uRGF0YVwiOiB7XG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzNkMWQ0OWU1ODNkOTdjZDUwOTdkMDgxMDIyNjViMWM2Lmpzb25cIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIuiaguiagV9za2UuanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4SnNvbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS85YTNhNWM4NzFiMjg4YWViYjFlNjkyMGYxZTk3MDlmOC5qc29uXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCLomoLomoFfdGV4Lmpzb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInRleFBuZ0RhdGFcIjoge1xuICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8xZmFkNjJmMzEzYjZmZjcyYTY0MmNiNGIxNWFlYWYwNC5wbmdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIuiaguiagV90ZXgucG5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJkcmFnRG90XCI6IHtcbiAgICAgICAgICAgIFwieFwiOiA1MjEuNSxcbiAgICAgICAgICAgIFwieVwiOiAxOTcuNDYxMTY1MDQ4NTQzNjhcbiAgICAgICAgfSxcbiAgICAgICAgXCJnSWR4XCI6IFwiMVwiLFxuICAgICAgICBcInJlY3RcIjoge1xuICAgICAgICAgICAgXCJ4XCI6IDQ2LjksXG4gICAgICAgICAgICBcInlcIjogOTUsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDIwMCxcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDIwMFxuICAgICAgICB9XG4gICAgfV0sXG4gICAgXCJndWlkZV9hdWRpb1wiOiBcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vZDZjMWQzYjg0YTQ3NzRhMGZjMTgzYTE0YWJiYjZjMDkubXAzXCIsXG4gICAgXCJ3cm9uZ19hdWRpbzFcIjogXCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2I3N2VmMmE2Y2RjYjY1MDQ1MjA0ODRhOWIxOTdiMmZkLm1wM1wiLFxuICAgIFwid3JvbmdfYXVkaW8yXCI6IFwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS84ZGFjYjI0NDU4MTZlMWYwNjhlYTExNjc1MmMyMTE3My5tcDNcIixcbiAgICBcImJlZ2luX2F1ZGlvMVwiOiBcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vZTQ1YWQwODIzYWUyYzhlMDQyNDZkNzZjN2Y1NzAzMGQubXAzXCIsXG4gICAgXCJiZWdpbl9hdWRpbzJcIjogXCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzA1MjMyYWQ1MWY4ZDllMWFmNmRkMTI3MzE0N2JjNThmLm1wM1wiLFxuICAgIFwicmlnaHRfYXVkaW9cIjogXCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzMzMGVmZjhkNWU4Y2M0Mjk5NjVkYTgyNjUyMjA3ZmYyLm1wM1wiLFxuICAgIFwid3JvbmdfYXVkaW9cIjogXCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzE2NjQxNzBlNTY5ZDk3NDI3OWJjZWM2MjZiZTE3NmQ5Lm1wM1wiLFxuICAgIFwiYmVnaW5fc2VwX3RpbWVcIjogMTVcbn0iXX0=
 //------QC-SOURCE-SPLIT------
diff --git a/temp/quick-scripts/dst/__quick_compile__.js b/temp/quick-scripts/dst/__quick_compile__.js
index c0ee4b7..3a128df 100644
--- a/temp/quick-scripts/dst/__quick_compile__.js
+++ b/temp/quick-scripts/dst/__quick_compile__.js
@@ -1,6 +1,6 @@
 
 (function () {
-var scripts = [{"deps":{"./assets/OP15/script/util":1,"./assets/OP15/script/state":2,"./assets/OP15/script/defaultData":3,"./assets/OP15/script/xstate":5,"./assets/OP15/scene/OP15":4},"path":"preview-scripts/__qc_index__.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/util.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/state.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/defaultData.js"},{"deps":{"../script/util":1,"../script/defaultData":3,"../script/xstate":5},"path":"preview-scripts/assets/OP15/scene/OP15.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/xstate.js"}];
+var scripts = [{"deps":{"./assets/OP15/script/state":1,"./assets/OP15/script/xstate":2,"./assets/OP15/script/defaultData":5,"./assets/OP15/scene/OP15":3,"./assets/OP15/script/util":4},"path":"preview-scripts/__qc_index__.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/state.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/xstate.js"},{"deps":{"../script/defaultData":5,"../script/xstate":2,"../script/util":4},"path":"preview-scripts/assets/OP15/scene/OP15.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/util.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/defaultData.js"}];
 var entries = ["preview-scripts/__qc_index__.js"];
 var bundleScript = 'preview-scripts/__qc_bundle__.js';
 
diff --git a/temp/quick-scripts/dst/assets/OP15/scene/OP15.js b/temp/quick-scripts/dst/assets/OP15/scene/OP15.js
index 212072f..d9da81c 100644
--- a/temp/quick-scripts/dst/assets/OP15/scene/OP15.js
+++ b/temp/quick-scripts/dst/assets/OP15/scene/OP15.js
@@ -217,8 +217,6 @@ cc.Class({
                 console.log('[answer] thinking and playing'); // check every second
 
                 var id = setInterval(function () {
-                  console.log("aaaaaa");
-
                   if (!_this._lastFingerPosition.dirty) {
                     return;
                   }
@@ -238,7 +236,7 @@ cc.Class({
                   } else {
                     callback('WRONG');
                   }
-                }, 300);
+                }, 100);
 
                 _this._intervalIds.push(id); // Perform cleanup
 
@@ -269,8 +267,17 @@ cc.Class({
                 var an = context.questions[context.questionIndex].node;
                 console.log('in right ' + typeof an);
                 an.active = true;
-                var dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);
-                dragonDisplay.playAnimation('normal', 0);
+
+                if (an.isSpine) {
+                  var skeleton = an.getComponent(sp.Skeleton);
+                  skeleton.setToSetupPose();
+                  setTimeout(function () {
+                    skeleton.setAnimation(0, 'normal', true);
+                  }, 1);
+                } else {
+                  var dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);
+                  dragonDisplay.playAnimation('normal', 0);
+                }
 
                 var ddLogoCat = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
 
@@ -621,8 +628,6 @@ cc.Class({
     this.isDebug = false;
   },
   checkInRegion: function checkInRegion(r) {
-    console.log('r~~~: ', r);
-
     if (!this._lastFingerPosition && !this._lastFingerPosition.pos) {
       return null;
     }
@@ -634,6 +639,8 @@ cc.Class({
       x: 0,
       y: 0
     };
+    console.log('~p: ', p);
+    console.log('~r: ', r);
     var w = p.x > r.x && p.x < r.x + r.width;
     var h = p.y > r.y && p.y < r.y + r.height;
     return w && h;
@@ -656,100 +663,567 @@ cc.Class({
   },
   getDefaultData: function getDefaultData() {
     return {
-      "begin_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "begin_sep_time": 1,
-      "guide_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "playing_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "right_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "wrong_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "wrong_audio1": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "wrong_audio2": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "end_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
+      "begin_audio": "https://teach.cdn.ireadabc.com/9be46c9adb540ed8a60763f1e657ccb7.mp3",
+      "begin_sep_time": 66,
+      "guide_audio": "https://teach.cdn.ireadabc.com/9523c8ed45faee686363dd157b0d7426.mp3",
+      "playing_audio": "https://teach.cdn.ireadabc.com/d6a953052a6f80549730cb4307c55719.mp3",
+      "right_audio": "https://teach.cdn.ireadabc.com/43791fc418e666df5e9ec1b7bf936409.mp3",
+      "wrong_audio": "https://teach.cdn.ireadabc.com/7dd85f025a132c2eef8daee38d900287.mp3",
+      "wrong_audio1": "https://teach.cdn.ireadabc.com/a76afb06af0799bf538e38f9f80a2261.mp3",
+      "wrong_audio2": "https://teach.cdn.ireadabc.com/daee88b6f2eadd78b60436eedffcae08.mp3",
+      "end_audio": "https://teach.cdn.ireadabc.com/9c1e87b3c184b06e14e44bb058b9804e.mp3",
       "bgItem": {
-        "url": "http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png",
+        "url": "https://teach.cdn.ireadabc.com/16b6dacd8e6c1ce6da16f500a66b366b.jpg",
         "rect": {
-          "x": 736.95,
+          "x": 319.68,
           "y": 0,
-          "width": 599.09,
-          "height": 775
+          "width": 257.64,
+          "height": 342
         }
       },
       "hotZoneItemArr": [{
-        "id": "1659333645573",
+        "id": "1650544807877",
         "index": 0,
-        "audio_url": "http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3",
-        "itemType": "rect",
-        "fontScale": 1.61953125,
+        "itemType": "pic",
+        "fontScale": 0.70078125,
         "imgScale": 1,
         "imgSizeW": 0,
         "imgSizeH": 0,
-        "mapScale": 1.61953125,
+        "mapScale": 0.70078125,
         "dragDot": {
-          "x": 1036.5,
-          "y": 387.5
+          "x": 448.5,
+          "y": 176.65207877461702
         },
         "gIdx": "1",
-        "labelText": "1",
-        "posX": 887.5,
-        "posY": 165.5,
         "skeJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json",
-          "name": "spineboy-pro.json"
+          "url": "https://teach.cdn.ireadabc.com/66c7c0847c33f7f95cb0035fe14c4405.json",
+          "name": "monkey_ske.json"
         },
         "texJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas",
-          "name": "spineboy-pro.atlas"
+          "url": "https://teach.cdn.ireadabc.com/98a8272cd2d97047b090ff10e948b978.json",
+          "name": "monkey_tex.json"
         },
         "texPngData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png",
-          "name": "spineboy-pro.png"
+          "url": "https://teach.cdn.ireadabc.com/c35ced408ad68a52c4ec5375373d3627.png",
+          "name": "monkey_tex.png"
         },
-        "animType": "spine",
         "rect": {
-          "x": 48.05,
-          "y": 65.5,
-          "width": 205,
-          "height": 200
+          "x": 128.83,
+          "y": 171,
+          "width": 0,
+          "height": 0
         }
       }, {
-        "id": "1659334098930",
+        "id": "1650546079000",
         "index": 1,
-        "audio_url": "http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3",
+        "audio_url": "https://teach.cdn.ireadabc.com/f9edc84a669688c5abddd55e2aab015d.mp3",
         "itemType": "rect",
-        "fontScale": 1.61953125,
+        "fontScale": 0.70078125,
         "imgScale": 1,
         "imgSizeW": 0,
         "imgSizeH": 0,
-        "mapScale": 1.61953125,
+        "mapScale": 0.70078125,
         "dragDot": {
-          "x": 1036.5,
-          "y": 387.5
+          "x": 448.5,
+          "y": 170.54984583761566
         },
         "gIdx": "0",
-        "labelText": "1",
-        "posX": 1212.5,
-        "posY": 643.5,
+        "labelText": "21.3",
+        "posX": 692.4127500193598,
+        "posY": 218.14695959185556,
         "skeJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json",
-          "name": "alien-pro.json"
+          "url": "https://teach.cdn.ireadabc.com/e3c67a25dd3bb34fe113e126e6e1cc81.json",
+          "name": "ox_ske.json"
         },
         "texJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas",
-          "name": "alien-pro.atlas"
+          "url": "https://teach.cdn.ireadabc.com/81d487bf31d3a4d0f25f44c184ba9233.json",
+          "name": "ox_tex.json"
         },
         "texPngData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png",
-          "name": "alien-pro.png"
+          "url": "https://teach.cdn.ireadabc.com/e199392b52a735f6e37a6815ec3bb10e.png",
+          "name": "ox_tex.png"
         },
-        "animType": "spine",
         "rect": {
-          "x": 375.56,
-          "y": 543.5,
-          "width": 200,
-          "height": 200
+          "x": 159.34,
+          "y": 138.66,
+          "width": 38.83,
+          "height": 38.83
+        }
+      }, {
+        "id": "1650546232189",
+        "index": 2,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/0a3ea93c62ff4087859ed587020c53b5.json",
+          "name": "car_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/6000e4fbbb95f545afa5456c64d8c7d1.json",
+          "name": "car_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/75e9972c15d2a67deedf60d448fd4e69.png",
+          "name": "car_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546321127",
+        "index": 3,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/d4c1e1abcf3d8f5415747fd2599b8a8c.json",
+          "name": "Chair_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/1d7254eb7fa3008e8178347bb944cdcb.json",
+          "name": "Chair_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/48e85e8ff384eed72dfe865fc981e18c.png",
+          "name": "Chair_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546335240",
+        "index": 4,
+        "audio_url": "https://teach.cdn.ireadabc.com/6182d46bad09fccb8934217d33557204.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "53",
+        "posX": 452.5,
+        "posY": 129,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/b462d80c21aa75995dd99f0f43ccf1e6.json",
+          "name": "quilt_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/866c9e2987870947fc63bce108ef157a.json",
+          "name": "quilt_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/d952c37f40c3cf07e024edfd4416423e.png",
+          "name": "quilt_tex.png"
+        },
+        "rect": {
+          "x": 71.99,
+          "y": 100.75,
+          "width": 50.83,
+          "height": 36.97
+        }
+      }, {
+        "id": "1650546644333",
+        "index": 5,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/6b8a1a7b0fd23686ea60465279cd4da0.json",
+          "name": "robot_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/31a74ed95fe48adab00702675811c3a8.json",
+          "name": "robot_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/e57052537d89356b0a79d8cb77980219.png",
+          "name": "robot_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546658697",
+        "index": 6,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/bf3616060460439eeb3fd5227370e15a.json",
+          "name": "panda_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/2dafeb25c973c910035ff7ed1a6a6334.json",
+          "name": "panda_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/75d90b05345fa470285ac488cb205cfd.png",
+          "name": "panda_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546672448",
+        "index": 7,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/5feff811b0117dd8e67973072e60d310.json",
+          "name": "queen_1_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/bb5856b92b09c5fe7a1da00bb68134ca.json",
+          "name": "queen_1_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/f4e5a138b086ef3dcfa57432543b66e9.png",
+          "name": "queen_1_tex.png"
+        },
+        "animType": "dragonBone",
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546687069",
+        "index": 8,
+        "audio_url": "https://teach.cdn.ireadabc.com/301858df7b07e661426a006acb26059c.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "42.5",
+        "posX": 512.3883524629834,
+        "posY": 259.83617125849,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/f3a8efcd1850ee8a6cee89a18e86dc4a.json",
+          "name": "milk_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/73b05f19d419bd3ac17c2b92dab88423.json",
+          "name": "milk_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/e38375da46f85a23202d5cbc812d62e4.png",
+          "name": "milk_tex.png"
+        },
+        "rect": {
+          "x": 37.72,
+          "y": 168.1,
+          "width": 21.17,
+          "height": 40.34
+        }
+      }, {
+        "id": "1650547060490",
+        "index": 9,
+        "audio_url": "https://teach.cdn.ireadabc.com/05e5b29aeffa4ef94bcc5b23167aec90.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "47.7",
+        "posX": 483.22135734006736,
+        "posY": 245.38039407076505,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/99a6e6d9361eca7e51ed34ca2e0fd017.json",
+          "name": "bird_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/6a379ddbe6df1806368c43c8ee82332d.json",
+          "name": "bird_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/cf04c63104d89511902578944061f980.png",
+          "name": "bird_tex.png"
+        },
+        "rect": {
+          "x": 17.91,
+          "y": 140.83,
+          "width": 18.52,
+          "height": 73.95
+        }
+      }, {
+        "id": "1650547373869",
+        "index": 10,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "labelText": "60",
+        "posX": 420.5,
+        "posY": 295,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/7ebc28f3f339b16ca48d20f2a3eb44c1.json",
+          "name": "alligator_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/b04e8206fd217bd22dcdac1008393317.json",
+          "name": "alligator_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/b3990d94612bd3d6e25cf200f85e4334.png",
+          "name": "alligator_tex.png"
+        },
+        "rect": {
+          "x": 16.06,
+          "y": 229.24,
+          "width": 103.52,
+          "height": 86.89
+        }
+      }, {
+        "id": "1650547482398",
+        "index": 11,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/a19f2ed7c297c70c639e54e969d64593.json",
+          "name": "rabbit_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/4b4f8189cf79fadd7e6533ad84db96be.json",
+          "name": "rabbit_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/8f953c861eac94e4e22a8e4ec3eb56b5.png",
+          "name": "rabbit_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650547496232",
+        "index": 12,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/89e0fc6085c294866142803b4ff267ba.json",
+          "name": "King_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/d6cfd2d9cd2cd9aff09ab7f03e287421.json",
+          "name": "King_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/8c02c3561a2eea0423cb1102200e76f9.png",
+          "name": "King_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650547510648",
+        "index": 13,
+        "audio_url": "https://teach.cdn.ireadabc.com/717ee9713b18d32d38ee089c0abc85ea.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "10.2",
+        "posX": 641.6680134951944,
+        "posY": 288.93672702541255,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/3b7113ebdedcae54be6d0b9633875b88.json",
+          "name": "net_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/fc810762f1f2025585e722e43e94137b.json",
+          "name": "net_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/5c90820da4f559280fee4579e8db2dbc.png",
+          "name": "net_tex.png"
+        },
+        "rect": {
+          "x": 123.03,
+          "y": 183.02,
+          "width": 37.9,
+          "height": 52.68
+        }
+      }, {
+        "id": "1650547555018",
+        "index": 14,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/0a5c8df5a23aca7a7540b87340c7608f.json",
+          "name": "ostrich_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/2478573c91d1a83fa038e7f6a9db8a85.json",
+          "name": "ostrich_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/4619ace67e5770e1fd7fc3ff76e7263e.png",
+          "name": "ostrich_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650547573305",
+        "index": 15,
+        "audio_url": "https://teach.cdn.ireadabc.com/b7bc161c3a3ee143a53058691abf4fa9.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "15.9",
+        "posX": 670.8119839772754,
+        "posY": 137.87940870201697,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/91e8ca03d1df89e4ec2404421d4c692f.json",
+          "name": "durazno_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/32d259b0194370625f8fe94b1ddc0a85.json",
+          "name": "durazno_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/8eef56b20e221a36fce1d672199859ff.png",
+          "name": "durazno_tex.png"
+        },
+        "rect": {
+          "x": 146.92,
+          "y": 83.73,
+          "width": 32.34,
+          "height": 32.34
         }
       }]
-    }; // return defaultData;
+    }; // return  {"begin_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","begin_sep_time":1,"guide_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","playing_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","right_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio1":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio2":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","end_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","bgItem":{"url":"http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png","rect":{"x":736.95,"y":0,"width":599.09,"height":775}},"hotZoneItemArr":[{"id":"1659333645573","index":0,"audio_url":"http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3","itemType":"rect","fontScale":1.61953125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.61953125,"dragDot":{"x":1036.5,"y":387.5},"gIdx":"1","labelText":"1","posX":887.5,"posY":165.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json","name":"spineboy-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas","name":"spineboy-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png","name":"spineboy-pro.png"},"animType":"spine","rect":{"x":48.05,"y":65.5,"width":205,"height":200}},{"id":"1659334098930","index":1,"audio_url":"http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3","itemType":"rect","fontScale":1.61953125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.61953125,"dragDot":{"x":1036.5,"y":387.5},"gIdx":"0","labelText":"1","posX":1212.5,"posY":643.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json","name":"alien-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas","name":"alien-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png","name":"alien-pro.png"},"animType":"spine","rect":{"x":375.56,"y":543.5,"width":200,"height":200}}]}
+    // return defaultData;
   },
   preloadItem: function preloadItem() {
     this.addPreloadImage();
@@ -997,8 +1471,9 @@ cc.Class({
 
           if (_block.gIdx == '0' || _block.gIdx == '1') {
             (function () {
-              var n = new cc.Node();
-              n.scale = 0.25;
+              var n = new cc.Node(); // n.scale = 0.25;
+
+              n.scale = ground.width / groundBg.width;
               n.parent = ground;
               n.active = false;
 
@@ -1016,8 +1491,7 @@ cc.Class({
                   n.height = height;
                   n.active = true; // db.playAnimation('null', 0);
                   // skeleton.setToSetupPose();
-
-                  skeleton.setAnimation(0, 'enlarge', true);
+                  // skeleton.setAnimation(0, 'enlarge', true);				
 
                   _this4._allAnimationNodes.push(n);
 
@@ -1149,27 +1623,54 @@ cc.Class({
   // 	this.initIcon();
   // },
   addRectNodeListener: function addRectNodeListener(data) {
-    var bg = cc.find("Canvas/frame-border/ground/bg");
+    var _this5 = this;
+
+    var bg = cc.find("Canvas/frame-border/ground/bg").parent;
     var rate = bg.scale * bg.width / this.data.bgItem.rect.width;
     var rectNode = new cc.Node();
     rectNode.name = 'rect' + data.index;
-    bg.addChild(rectNode);
+    bg.addChild(rectNode, 20);
     var ctx = rectNode.addComponent(cc.Graphics); // 红色矩形
 
     ctx.lineWidth = 4;
     ctx.strokeColor = cc.Color.BLACK;
     ctx.fillColor = cc.Color.WHITE.setA(100);
     var scale = rate / bg.scaleY;
+    console.log('scale~ : ', scale);
     rectNode.width = data.rect.width * scale;
     rectNode.height = data.rect.height * scale;
-    rectNode.x = -bg.width / 2 + data.rect.x * scale;
-    rectNode.y = bg.height / 2 - data.rect.height * scale - data.rect.y * scale;
-    rectNode.anchorX = rectNode.anchorY = 0; // if (pageData.bgItem.isShowDebugLine) {
+    rectNode.x = -bg.width / 2 + data.rect.x * scale + bg.x;
+    rectNode.y = bg.height / 2 - data.rect.height * scale - data.rect.y * scale + bg.y;
+    rectNode.anchorX = rectNode.anchorY = 0;
+    console.log('data: ', data);
+    console.log('rectNode: ', rectNode); // if (pageData.bgItem.isShowDebugLine) {
 
-    ctx.rect(0, 0, rectNode.width, rectNode.height); // }
+    ctx.rect(0, 0, rectNode.width, rectNode.height); // ctx.fillRect(0, 0, 200, 200);
+    // }
 
     ctx.stroke();
     ctx.fill();
+    rectNode.addComponent(cc.Button);
+    rectNode.on("click", function () {
+      console.log(" in rectNode click");
+
+      var _x = rectNode.x / bg.width;
+
+      var _y = rectNode.y / bg.height;
+
+      var _w = rectNode.width / bg.width;
+
+      var _h = rectNode.height / bg.height;
+
+      var pos = {
+        x: _x + _w / 2 + 0.5,
+        y: -(_y + _h / 2 - 0.5)
+      };
+      _this5._lastFingerPosition = {
+        pos: pos,
+        dirty: true
+      };
+    });
   },
   initBg: function initBg() {
     var bgNode = cc.find('Canvas/bg');
@@ -1249,4 +1750,4 @@ cc._RF.pop();
                         });
                     }
                 })();
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9PUDE1L3NjZW5lL09QMTUuanMiXSwibmFtZXMiOlsicHVyZSIsImFjdGlvbnMiLCJzZW5kIiwicmFpc2UiLCJzZW5kUGFyZW50IiwiY2MiLCJDbGFzcyIsIkNvbXBvbmVudCIsInByb3BlcnRpZXMiLCJyaWdodEF1ZGlvIiwidHlwZSIsIkF1ZGlvQ2xpcCIsIndyb25nQXVkaW8iLCJsb2dvQ2F0IiwiTm9kZSIsInBsYXlBbmkiLCJpZHgiLCJuYW1lIiwib3B0aW9ucyIsInRpbWVzIiwiY2IiLCJjYWxsYmFjayIsIm5vZGUiLCJfZmlndXJlUG9pbnRSZWN0QXJyYXkiLCJkcmFnb25EaXNwbGF5IiwiZ2V0Q29tcG9uZW50IiwiZHJhZ29uQm9uZXMiLCJBcm1hdHVyZURpc3BsYXkiLCJzdGF0ZSIsInBsYXlBbmltYXRpb24iLCJvbkxvYWQiLCJfdGltZW91dElkcyIsIl9pbnRlcnZhbElkcyIsImluaXRTY2VuZURhdGEiLCJpbml0U2l6ZSIsIndpbmRvdyIsImNjYyIsIl9pbWFnZVJlc0xpc3QiLCJfYXVkaW9SZXNMaXN0IiwiX2FuaW1hUmVzTGlzdCIsIl9sYXN0RmluZ2VyUG9zaXRpb24iLCJfaGludHNOb2RlTGlzdCIsIl9hbGxBbmltYXRpb25Ob2RlcyIsInBvcyIsImRpcnR5IiwiX2Rlc2lnblNpemUiLCJfZnJhbWVTaXplIiwiX21hcFNjYWxlTWluIiwiX21hcFNjYWxlTWF4IiwiX2NvY29zU2NhbGUiLCJzY3JlZW5fc2l6ZSIsInZpZXciLCJnZXRGcmFtZVNpemUiLCJ3aWR0aCIsImhlaWdodCIsImRlc2lnbl9zaXplIiwiQ2FudmFzIiwiaW5zdGFuY2UiLCJkZXNpZ25SZXNvbHV0aW9uIiwiZiIsImZpdEhlaWdodCIsImZpdFdpZHRoIiwiZnJhbWVTaXplIiwiZ2V0RGVzaWduUmVzb2x1dGlvblNpemUiLCJzeCIsIndpblNpemUiLCJzeSIsIk1hdGgiLCJtaW4iLCJtYXgiLCJjcmVhdGVTdGF0ZU1hY2hpbmUiLCJjaGVjayIsInRhcmdldCIsImNvbmQiLCJjdHgiLCJldnQiLCJjb25zb2xlIiwibG9nIiwicXVlc3Rpb25JbmRleCIsInF1ZXN0aW9uc0NvdW50IiwiUXVlc3Rpb25TdGF0ZSIsImlkIiwiaW5pdGlhbCIsInN0YXRlcyIsImhpbnQiLCJpbnZva2UiLCJzcmMiLCJldmVudCIsInF1ZXN0aW9uUGxheVRpbWVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJxdWVzdGlvbnMiLCJhdWRpb191cmwiLCJvbkRvbmUiLCJvbkVycm9yIiwiYW5zd2VyIiwiYWZ0ZXIiLCJjb250ZXh0Iiwib25SZWNlaXZlIiwic2V0SW50ZXJ2YWwiLCJyZWdpb24iLCJyZXN1bHQiLCJjaGVja0luUmVnaW9uIiwicmVjdCIsInB1c2giLCJjbGVhckludGVydmFsIiwib24iLCJSSUdIVCIsIldST05HIiwicmlnaHQiLCJhbiIsImFjdGl2ZSIsImRkTG9nb0NhdCIsIm9uY2UiLCJFdmVudE9iamVjdCIsIkNPTVBMRVRFIiwid3JvbmciLCJtYXhRdWVzdGlvblRyeVRpbWVzIiwid3JvbmdFZmZlY3QiLCJpbmNsdWRlcyIsImRhdGEiLCJpc1NwaW5lIiwic2tlbGV0b24iLCJzcCIsIlNrZWxldG9uIiwic2V0VG9TZXR1cFBvc2UiLCJzZXRUaW1lb3V0Iiwic2V0QW5pbWF0aW9uIiwiUXVlc3Rpb25zQXJyYXlTdGF0dXMiLCJwbGF5IiwibmV4dCIsIkNIRUNLIiwibGVuZ3RoIiwiYmVnaW4iLCJjb3Vyc2V3YXJlIiwib3Blbk9zbW9GaW5nZXJSZWFkIiwiaXNPcGVuZWRPc21vRmluZ2VyUmVhZCIsImJlZ2luX2F1ZGlvIiwiZ3VpZGUiLCJndWlkZV9hdWRpbyIsInBsYXlpbmciLCJlbnRyeSIsImFzc2V0TWFuYWdlciIsImxvYWRSZW1vdGUiLCJwbGF5aW5nX2F1ZGlvIiwiZXJyIiwiYXVkaW9DbGlwIiwiYXVkaW9FbmdpbmUiLCJwbGF5TXVzaWMiLCJmb3JFYWNoIiwiYmxvY2siLCJleGl0Iiwic3RvcE11c2ljIiwiTkVYVCIsImVuZCIsImNsb3NlT3Ntb0ZpbmdlclJlYWQiLCJlbmRfYXVkaW8iLCJpIiwidCIsImsiLCJfYXJtYXR1cmVLZXkiLCJhZGRFdmVudExpc3RlbmVyIiwiYmVnaW5fc2VwX3RpbWUiLCJnYW1lTWFjaGluZSIsImdhbWVNYWNoaW5lU2VydmljZSIsIm9uVHJhbnNpdGlvbiIsInN0YXJ0IiwiZ2V0RGF0YSIsImJpbmQiLCJnZXREZWZhdWx0RGF0YSIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsInByZWxvYWRJdGVtIiwiYWlyIiwib3Ntb0ZpbmdlclJlYWRDYWxsYmFjayIsInJlc3VsdE9iaiIsImZpbmdlcl9wb3NfaW5fcGFnZSIsInAiLCJ4IiwieSIsImRlYnVnUG9pbnRlciIsImlzRGVidWciLCJyIiwidyIsImgiLCJmdW5jIiwibWlkZGxlTGF5ZXIiLCJmaW5kIiwibWlkZGxlTGF5ZXJDb21wb25lbnQiLCJhZGRQcmVsb2FkSW1hZ2UiLCJhZGRQcmVsb2FkQXVkaW8iLCJhZGRQcmVsb2FkQW5pbWEiLCJwcmVsb2FkIiwidXJsIiwiYmdJdGVtIiwiaG90Wm9uZUl0ZW1BcnIiLCJxIiwiZ0lkeCIsInRleFBuZ0RhdGEiLCJwaWNfdXJsIiwicHJlcGFyZUF1ZGlvQ2xpcCIsImtleSIsIndyb25nX2F1ZGlvIiwicmlnaHRfYXVkaW8iLCJ3cm9uZ19hdWRpbzEiLCJ3cm9uZ19hdWRpbzIiLCJib3hEZWJ1Z2dlciIsIlBPSU5URVJfTk9ERSIsInBhcmVudCIsImFkZENvbXBvbmVudCIsIkdyYXBoaWNzIiwiZ3JhcCIsImNsZWFyIiwiZ3JvdW5kIiwiYmFzZVciLCJiYXNlSCIsInB4IiwicHkiLCJwbiIsImZpbGxDb2xvciIsImNvbG9yIiwiY2lyY2xlIiwiZmlsbCIsInN0cm9rZSIsImRlYnVnR3JhcGhpY3MiLCJjYW52YXMiLCJiZ1ciLCJiZ0giLCJzY2FsZVgiLCJzY2FsZVkiLCJhZGRlZCIsImFyZWEiLCJkbiIsImxibE5vZGUiLCJsYmwiLCJMYWJlbCIsInN0cmluZyIsInNrZUpzb25EYXRhIiwic3Vic3RyaW5nIiwiZyIsImIiLCJyeCIsInJ5IiwicnciLCJyaCIsImZpbGxSZWN0IiwicHJlbG9hZEFyciIsImNvbmNhdCIsImxvYWRBbnkiLCJpdGVtIiwiZ3JvdW5kQmciLCJiYXNlUmVjdCIsInNmIiwiZ3MiLCJTcHJpdGUiLCJzcHJpdGVGcmFtZSIsImRiQ291bnQiLCJmaW5pc2hEYkNvdW50IiwiczEiLCJpbWdTaXplVyIsImltZ1NpemVIIiwic3ByIiwic2NhbGUiLCJuIiwiYW5pbVR5cGUiLCJ0ZXgiLCJhdGxhcyIsInRleEpzb25EYXRhIiwic2tlIiwidGhlbiIsImxvYWRFbmQiLCJkYiIsInJlY3RJbmZvIiwibGFiZWxUZXh0IiwiaXNOYU4iLCJkZWJ1ZyIsInNldERpc3BsYXlTdGF0cyIsImhpZGVBaXJDbGFzc0xvYWRpbmciLCJpbml0RGF0YSIsImluaXRCZyIsIl9jYW50b3VjaCIsImFkZFJlY3ROb2RlTGlzdGVuZXIiLCJiZyIsInJhdGUiLCJyZWN0Tm9kZSIsImluZGV4IiwiYWRkQ2hpbGQiLCJsaW5lV2lkdGgiLCJzdHJva2VDb2xvciIsIkNvbG9yIiwiQkxBQ0siLCJXSElURSIsInNldEEiLCJhbmNob3JYIiwiYW5jaG9yWSIsImJnTm9kZSIsIm9uRGVzdHJveSIsImNsZWFyVGltZW91dCIsInN0b3BDaGlsZCIsInN0b3AiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7SUFDUUEsT0FBb0NDLGdCQUFwQ0Q7SUFBT0UsT0FBNkJELGdCQUE3QkM7SUFBTUMsUUFBdUJGLGdCQUF2QkU7SUFBT0MsYUFBZ0JILGdCQUFoQkc7QUFHNUJDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBRVIsYUFBU0QsRUFBRSxDQUFDRSxTQUZKO0FBSVJDLEVBQUFBLFVBQVUsRUFBRTtBQUNYO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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RSxJQWpsQ0w7QUFrbENSQyxFQUFBQSxZQUFZLEVBQUUsSUFsbENOO0FBbWxDUjtBQUNBMFEsRUFBQUEsU0FwbENRLHVCQW9sQ0k7QUFDWDlOLElBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLGdCQUFaOztBQUNBLFNBQUs5QyxXQUFMLENBQWlCdUgsT0FBakIsQ0FBeUIsVUFBQXJFLEVBQUUsRUFBSTtBQUM5QjBOLE1BQUFBLFlBQVksQ0FBQzFOLEVBQUQsQ0FBWjtBQUNBLEtBRkQ7O0FBR0EsU0FBS2pELFlBQUwsQ0FBa0JzSCxPQUFsQixDQUEwQixVQUFBckUsRUFBRSxFQUFJO0FBQy9CeUIsTUFBQUEsYUFBYSxDQUFDekIsRUFBRCxDQUFiO0FBQ0EsS0FGRDs7QUFHQSxTQUFLb0Ysa0JBQUwsQ0FBd0J1SSxTQUF4QjtBQUNBLFNBQUt2SSxrQkFBTCxDQUF3QndJLElBQXhCOztBQUNBLFFBQUcxUSxNQUFNLENBQUNvRyxVQUFQLElBQXFCcEcsTUFBTSxDQUFDb0csVUFBUCxDQUFrQnFCLG1CQUExQyxFQUErRDtBQUM5RCxVQUFJLEtBQUtuQixzQkFBVCxFQUFpQztBQUNoQ3RHLFFBQUFBLE1BQU0sQ0FBQ29HLFVBQVAsQ0FBa0JxQixtQkFBbEI7QUFDQTtBQUNEO0FBQ0Q7QUFubUNPLENBQVQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG9uSG9tZXdvcmtGaW5pc2gsIFJhbmRvbUludCwgcGxheUF1ZGlvQnlVcmwsIGxvYWREcmFnb25Cb25lcywgZ2V0U3ByaXRlRnJpbWVCeVVybCwgbG9hZFNwaW5lIH0gZnJvbSBcIi4uL3NjcmlwdC91dGlsXCI7XG5pbXBvcnQgeyBkZWZhdWx0RGF0YSB9IGZyb20gXCIuLi9zY3JpcHQvZGVmYXVsdERhdGFcIjtcbmltcG9ydCB7IGFzc2lnbiwgY3JlYXRlTWFjaGluZSwgaW50ZXJwcmV0LCBhY3Rpb25zLCBmb3J3YXJkVG8sIG1hdGNoZXNTdGF0ZSAgfSBmcm9tIFwiLi4vc2NyaXB0L3hzdGF0ZVwiO1xuY29uc3QgeyBwdXJlICwgc2VuZCwgcmFpc2UsIHNlbmRQYXJlbnQgIH0gPSBhY3Rpb25zO1xuXG5cbmNjLkNsYXNzKHtcblxuXHRleHRlbmRzOiBjYy5Db21wb25lbnQsXG5cblx0cHJvcGVydGllczoge1xuXHRcdC8qYW50OiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGFwcGxlOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGJpcmQ6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0Y2FyOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGNhdDoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRjb3c6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0ZHVjazoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRlZ2c6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0ZmFybWVyOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGZpc2g6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0Z2lybDoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRoZW46IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0aG91c2U6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sKi9cblx0XHRyaWdodEF1ZGlvOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuQXVkaW9DbGlwLFxuXHRcdH0sXG5cdFx0d3JvbmdBdWRpbzoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLkF1ZGlvQ2xpcCxcblx0XHR9LFxuXHRcdGxvZ29DYXQ6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlXG5cdFx0fVxuXG5cdH0sXG5cblx0cGxheUFuaShpZHgsIG5hbWUsIG9wdGlvbnMpIHtcblx0XHRjb25zdCB0aW1lcyA9IChvcHRpb25zICYmIG9wdGlvbnMudGltZXMpIHx8IDE7XG5cdFx0Y29uc3QgY2IgPSAob3B0aW9ucyAmJiBvcHRpb25zLmNhbGxiYWNrKSB8fCBudWxsO1xuXHRcdC8vIGNvbnN0IGNhdCA9IGNjLmZpbmQoYENhbnZhcy9mcmFtZS1ib3JkZXIvZ3JvdW5kLyR7bm9kZX1gKTtcblx0XHRjb25zdCBub2RlID0gdGhpcy5fZmlndXJlUG9pbnRSZWN0QXJyYXlbaWR4XS5ub2RlXG5cdFx0dmFyIGRyYWdvbkRpc3BsYXkgPSBub2RlLmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpO1xuXG5cdFx0Y29uc3Qgc3RhdGUgPSBkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24obmFtZSwgdGltZXMpO1xuXHRcdC8vIGRyYWdvbkRpc3BsYXkuYWRkRXZlbnRMaXN0ZW5lcihkcmFnb25Cb25lcy5FdmVudE9iamVjdC5DT01QTEVURSwgKGV2ZW50KSA9PiB7XG5cdFx0Ly8gXHQvL1RPRE8g6L+Z6YeM5YaZ6Kem5Y+R5LqL5Lu2XG5cdFx0Ly8gXHQvL2V2ZW50Lm5hbWXkuLrkuovku7blkI3np7Bcblx0XHQvLyBcdGNvbnNvbGUubG9nKGV2ZW50Lm5hbWUpXG5cdFx0Ly8gfSwgdGhpcyk7XG5cdFx0Ly8gYW5pbWF0aW9uRGlzcGxheS5hZGRFdmVudExpc3RlbmVyKGRyYWdvbkJvbmVzLkV2ZW50T2JqZWN0LkNPTVBMRVRFLCBjb21wbGV0ZUNhbGxiYWNrKTtcblx0XHRyZXR1cm4gc3RhdGU7XG5cdH0sXG5cdC8vIOeUn+WRveWRqOacnyBvbkxvYWRcblx0b25Mb2FkKCkge1xuXHRcdHRoaXMuX3RpbWVvdXRJZHMgPSBbXTtcblx0XHR0aGlzLl9pbnRlcnZhbElkcyA9IFtdO1xuXHRcdHRoaXMuaW5pdFNjZW5lRGF0YSgpO1xuXHRcdHRoaXMuaW5pdFNpemUoKTtcblx0XHR3aW5kb3cuY2NjID0gdGhpcztcblx0fSxcblxuXHRfaW1hZ2VSZXNMaXN0OiBudWxsLFxuXHRfYXVkaW9SZXNMaXN0OiBudWxsLFxuXHRfYW5pbWFSZXNMaXN0OiBudWxsLFxuXG5cdF9sYXN0RmluZ2VyUG9zaXRpb246IG51bGwsXG5cblx0X2hpbnRzTm9kZUxpc3QgOiBudWxsLFxuXHRfZmlndXJlUG9pbnRSZWN0QXJyYXk6IG51bGwsXG5cblx0X2FsbEFuaW1hdGlvbk5vZGVzOiBudWxsLFxuXG5cdGluaXRTY2VuZURhdGEoKSB7XG5cdFx0dGhpcy5faW1hZ2VSZXNMaXN0ID0gW107XG5cdFx0dGhpcy5fYXVkaW9SZXNMaXN0ID0gW107XG5cdFx0dGhpcy5fYW5pbWFSZXNMaXN0ID0gW107XG5cblx0XHR0aGlzLl9hbGxBbmltYXRpb25Ob2RlcyA9IFtdO1xuXHRcdHRoaXMuX2hpbnRzTm9kZUxpc3QgPSBbXTtcblx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb249IHtcblx0XHRcdHBvczogbnVsbCxcblx0XHRcdGRpcnR5OiBmYWxzZVxuXHRcdH07XG5cdFx0dGhpcy5fZmlndXJlUG9pbnRSZWN0QXJyYXkgPSBbXTtcblx0fSxcblxuXHRfZGVzaWduU2l6ZTogbnVsbCwgIC8vIOiuvuiuoeWIhui+qOeOh1xuXHRfZnJhbWVTaXplOiBudWxsLCAgLy8g5bGP5bmV5YiG6L6o546HXG5cdF9tYXBTY2FsZU1pbjogbnVsbCwgIC8vIOWcuuaZr+S4reW4uOeUqOe8qeaUvu+8iOWPluWkp+WAvO+8iVxuXHRfbWFwU2NhbGVNYXg6IG51bGwsICAvLyDlnLrmma/kuK3luLjnlKjnvKnmlL7vvIjlj5blsI/lgLzvvIlcblx0X2NvY29zU2NhbGU6IG51bGwsICAvLyBjb2NvcyDoh6rnvKnmlL4g77yI6L6D5bCR55So5Yiw77yJXG5cdFxuXHRpbml0U2l6ZSgpIHtcblx0XHQvLyDms6jmhI9jYy53aW5TaXpl5Y+q5pyJ5Zyo6YCC6YWN5ZCOKOS/ruaUuWZpdEhlaWdodC9maXRXaWR0aOWQjinmiY3og73ojrflj5bliLDmraPnoa7nmoTlgLws5Zug5q2k5L2/55SoY2MuZ2V0RnJhbWVTaXplKCnmnaXojrflj5bliJ3lp4vnmoTlsY/luZXlpKflsI9cblx0XHRsZXQgc2NyZWVuX3NpemUgPSBjYy52aWV3LmdldEZyYW1lU2l6ZSgpLndpZHRoIC8gY2Mudmlldy5nZXRGcmFtZVNpemUoKS5oZWlnaHRcblx0XHRsZXQgZGVzaWduX3NpemUgPSBjYy5DYW52YXMuaW5zdGFuY2UuZGVzaWduUmVzb2x1dGlvbi53aWR0aCAvIGNjLkNhbnZhcy5pbnN0YW5jZS5kZXNpZ25SZXNvbHV0aW9uLmhlaWdodFxuXHRcdGxldCBmID0gc2NyZWVuX3NpemUgPj0gZGVzaWduX3NpemVcblx0XHRjYy5DYW52YXMuaW5zdGFuY2UuZml0SGVpZ2h0ID0gZlxuXHRcdGNjLkNhbnZhcy5pbnN0YW5jZS5maXRXaWR0aCA9ICFmXG5cblx0XHRjb25zdCBmcmFtZVNpemUgPSBjYy52aWV3LmdldEZyYW1lU2l6ZSgpO1xuXHRcdHRoaXMuX2ZyYW1lU2l6ZSA9IGZyYW1lU2l6ZTtcblxuXHRcdHRoaXMuX2Rlc2lnblNpemUgPSBjYy52aWV3LmdldERlc2lnblJlc29sdXRpb25TaXplKCk7XG5cblx0XHRsZXQgc3ggPSBjYy53aW5TaXplLndpZHRoIC8gZnJhbWVTaXplLndpZHRoO1xuXHRcdGxldCBzeSA9IGNjLndpblNpemUuaGVpZ2h0IC8gZnJhbWVTaXplLmhlaWdodDtcblx0XHR0aGlzLl9jb2Nvc1NjYWxlID0gTWF0aC5taW4oc3gsIHN5KTtcblxuXHRcdHN4ID0gZnJhbWVTaXplLndpZHRoIC8gdGhpcy5fZGVzaWduU2l6ZS53aWR0aDtcblx0XHRzeSA9IGZyYW1lU2l6ZS5oZWlnaHQgLyB0aGlzLl9kZXNpZ25TaXplLmhlaWdodDtcblx0XHR0aGlzLl9tYXBTY2FsZU1pbiA9IE1hdGgubWluKHN4LCBzeSkgKiB0aGlzLl9jb2Nvc1NjYWxlO1xuXHRcdHRoaXMuX21hcFNjYWxlTWF4ID0gTWF0aC5tYXgoc3gsIHN5KSAqIHRoaXMuX2NvY29zU2NhbGU7XG5cdH0sXG5cdGNyZWF0ZVN0YXRlTWFjaGluZSgpe1xuXHRcdGNvbnN0IGNoZWNrID0gIFtcblx0XHRcdFx0XHRcdFx0eyB0YXJnZXQ6ICcjZ2FtZS5lbmQnLCBjb25kOiAoY3R4LCBldnQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnW2Fuc3dlciBORVhUXSBjaGVjayBpZiBlbmQnLCBjdHgucXVlc3Rpb25JbmRleCA+PSBjdHgucXVlc3Rpb25zQ291bnQgLSAxKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gY3R4LnF1ZXN0aW9uSW5kZXggPj0gY3R4LnF1ZXN0aW9uc0NvdW50IC0xXG5cblx0XHRcdFx0XHRcdFx0fSB9LFxuICAgICAgICBcdFx0XHRcdFx0eyB0YXJnZXQ6ICdoaW50JyB9IC8vIHJlZW50ZXIgJ2hpbnQnIHN0YXRlXG5cdFx0XHRcdFx0XHRdXG5cdFx0Y29uc3QgUXVlc3Rpb25TdGF0ZSA9IHtcblx0XHRcdGlkOiAncXVlc3Rpb24nLFxuXHRcdFx0aW5pdGlhbDogJ2hpbnQnLFxuXHRcdFx0c3RhdGVzOiB7XG5cdFx0XHRcdGhpbnQ6IHtcblx0XHRcdFx0XHRpbnZva2U6IHtcblx0XHRcdFx0XHRcdHNyYzogKGN0eCwgZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYFtoaW50XSBwbGF5IHF1ZXN0aW9uICR7Y3R4LnF1ZXN0aW9uSW5kZXh9OiAke2N0eC5xdWVzdGlvblBsYXlUaW1lcyB9IGF1ZGlvYCk7XG5cdFx0XHRcdFx0XHRcdGN0eC5xdWVzdGlvblBsYXlUaW1lcyArPSAxO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0cGxheUF1ZGlvQnlVcmwoY3R4LnF1ZXN0aW9uc1tjdHgucXVlc3Rpb25JbmRleF0uYXVkaW9fdXJsLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnaGludCBmaW5pc2gnKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoKVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25Eb25lOiAnYW5zd2VyJyxcblx0XHRcdFx0XHRcdG9uRXJyb3I6ICdhbnN3ZXInXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhbnN3ZXI6IHtcblx0XHRcdFx0XHRhZnRlcjoge1xuXHRcdFx0XHRcdFx0ODAwMDogW1xuICAgICAgICBcdFx0XHRcdFx0eyBcblx0XHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICd3cm9uZycsXG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdH0gLy8gcmVlbnRlciAnaGludCcgc3RhdGVcblx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0aW52b2tlOiB7XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdHNyYzogKGNvbnRleHQsIGV2ZW50KSA9PiAoY2FsbGJhY2ssIG9uUmVjZWl2ZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ1thbnN3ZXJdIHRoaW5raW5nIGFuZCBwbGF5aW5nJyk7XG5cdFx0XHRcdFx0XHRcdC8vIGNoZWNrIGV2ZXJ5IHNlY29uZFxuXHRcdFx0XHRcdFx0XHRjb25zdCBpZCA9IHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcImFhYWFhYVwiKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5kaXJ0eSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjb25zdCByZWdpb24gPSBjb250ZXh0LnF1ZXN0aW9uc1tjb250ZXh0LnF1ZXN0aW9uSW5kZXhdO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuY2hlY2tJblJlZ2lvbihyZWdpb24ucmVjdCk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnW0dlbmlzZSBKU10gY2hlY2tJblJlZ2lvbicgKyByZXN1bHQpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FsbGJhY2soJ1JJR0hUJylcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FsbGJhY2soJ1dST05HJylcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0sIDMwMCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2ludGVydmFsSWRzLnB1c2goaWQpO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHQvLyBQZXJmb3JtIGNsZWFudXBcblx0XHRcdFx0XHRcdFx0cmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaWQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0b246IHtcblx0XHRcdFx0XHRcdFJJR0hUOiB7XG5cdFx0XHRcdFx0XHRcdHRhcmdldDogJ3JpZ2h0Jyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRXUk9ORzoge1xuXHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICd3cm9uZycsXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRcblx0XHRcdFx0cmlnaHQ6IHtcblx0XHRcdFx0XHRpbnZva2U6IHtcblx0XHRcdFx0XHRcdHNyYzogKGNvbnRleHQsIGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5wb3MgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24uZGlydHkgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnYW5zd2VyIHJpZ2h0Jyk7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gdGhpcy5wbGF5QW5pKGNvbnRleHQucXVlc3Rpb25JbmRleCwgJ25vcm1hbCcpXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgYW4gPSBjb250ZXh0LnF1ZXN0aW9uc1tjb250ZXh0LnF1ZXN0aW9uSW5kZXhdLm5vZGU7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2luIHJpZ2h0ICcgKyAodHlwZW9mIGFuKSlcblx0XHRcdFx0XHRcdFx0XHRhbi5hY3RpdmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRyYWdvbkRpc3BsYXkgPSBhbi5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdFx0XHRkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24oJ25vcm1hbCcsIDApO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRkTG9nb0NhdCA9IHRoaXMubG9nb0NhdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KVxuXHRcdFx0XHRcdFx0XHRcdGRkTG9nb0NhdC5wbGF5QW5pbWF0aW9uKCdyaWdodCcsIDEpXG5cdFx0XHRcdFx0XHRcdFx0ZGRMb2dvQ2F0Lm9uY2UoZHJhZ29uQm9uZXMuRXZlbnRPYmplY3QuQ09NUExFVEUsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2dvQ2F0LmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpLnBsYXlBbmltYXRpb24oJ25vcm1hbCcsIDApXG5cdFx0XHRcdFx0XHRcdFx0fSwgdGhpcylcblxuXHRcdFx0XHRcdFx0XHRcdHBsYXlBdWRpb0J5VXJsKHRoaXMucmlnaHRBdWRpbywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgpXG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25Eb25lOiB7XG5cdFx0XHRcdFx0XHRcdHRhcmdldDogJyNRdWVzdGlvbnNBcnJheS5uZXh0Jyxcblx0XHRcdFx0XHRcdFx0YWN0aW9uczogcmFpc2UoJ0NIRUNLJylcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRvbkVycm9yOiB7XG5cdFx0XHRcdFx0XHRcdHRhcmdldDogJyNRdWVzdGlvbnNBcnJheS5uZXh0Jyxcblx0XHRcdFx0XHRcdFx0YWN0aW9uczogcmFpc2UoJ0NIRUNLJylcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHdyb25nOntcblx0XHRcdFx0XHRpbnZva2U6IHtcblx0XHRcdFx0XHRcdHNyYzogKGNvbnRleHQsIGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5wb3MgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24uZGlydHkgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnYW5zd2VyIHdyb25nJywgY29udGV4dC5xdWVzdGlvbkluZGV4LCBjb250ZXh0LnF1ZXN0aW9uUGxheVRpbWVzICwgY29udGV4dC5tYXhRdWVzdGlvblRyeVRpbWVzKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBkZExvZ29DYXQgPSB0aGlzLmxvZ29DYXQuZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSlcblx0XHRcdFx0XHRcdFx0XHRkZExvZ29DYXQucGxheUFuaW1hdGlvbignd3JvbmcnLCAxKVxuXHRcdFx0XHRcdFx0XHRcdGRkTG9nb0NhdC5vbmNlKGRyYWdvbkJvbmVzLkV2ZW50T2JqZWN0LkNPTVBMRVRFLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMubG9nb0NhdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KS5wbGF5QW5pbWF0aW9uKCdub3JtYWwnLCAwKVxuXHRcdFx0XHRcdFx0XHRcdH0sIHRoaXMpO1xuXHRcdFx0XHRcdFx0XHRcdGxldCB3cm9uZ0VmZmVjdCA9IHRoaXMud3JvbmdBdWRpbztcblx0XHRcdFx0XHRcdFx0XHQvLyDnrKzkuIDlkoznrKzkuozpopjnmoTmj5DnpLrpn7Ncblx0XHRcdFx0XHRcdFx0XHRpZiAoWzAsIDFdLmluY2x1ZGVzKGNvbnRleHQucXVlc3Rpb25JbmRleCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHdyb25nRWZmZWN0ID0gdGhpcy5kYXRhW2B3cm9uZ19hdWRpbyR7Y29udGV4dC5xdWVzdGlvblBsYXlUaW1lc31gXVxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyDpnZ7nrKzkuIDlkoznrKzkuozpopjvvIzlubbkuJTlgZrnrKzkuozpgY3nmoTmj5DnpLrpn7Ncblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjb250ZXh0LnF1ZXN0aW9uUGxheVRpbWVzID09IDIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3JvbmdFZmZlY3QgPSB0aGlzLmRhdGFbYHdyb25nX2F1ZGlvJHtjb250ZXh0LnF1ZXN0aW9uUGxheVRpbWVzfWBdXG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoY29udGV4dC5xdWVzdGlvblBsYXlUaW1lcyA+PSBjb250ZXh0Lm1heFF1ZXN0aW9uVHJ5VGltZXMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGFuID0gY29udGV4dC5xdWVzdGlvbnNbY29udGV4dC5xdWVzdGlvbkluZGV4XS5ub2RlO1xuXHRcdFx0XHRcdFx0XHRcdFx0YW4uYWN0aXZlID0gdHJ1ZTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFuLmlzU3BpbmUpIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBza2VsZXRvbiA9IGFuLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldFRvU2V0dXBQb3NlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldEFuaW1hdGlvbigwLCAnbm9ybWFsJywgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sIDEpO1xuXHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRyYWdvbkRpc3BsYXkgPSBhbi5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdub3JtYWwnLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ3Nob3cgYW5pbWF0aW9uJywgYW4uYWN0aXZlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0cGxheUF1ZGlvQnlVcmwod3JvbmdFZmZlY3QsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjb250ZXh0LnF1ZXN0aW9uUGxheVRpbWVzID49IGNvbnRleHQubWF4UXVlc3Rpb25UcnlUaW1lcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zdCBhbiA9IGNvbnRleHQucXVlc3Rpb25zW2NvbnRleHQucXVlc3Rpb25JbmRleF0ubm9kZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW4uYWN0aXZlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc3QgZHJhZ29uRGlzcGxheSA9IGFuLmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24oJ25vcm1hbCcsIDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygnc2hvdyBhbmltYXRpb24nLCBhbi5hY3RpdmUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZWplY3QoKVxuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgpXG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25Eb25lOiB7XG5cdFx0XHRcdFx0XHRcdHRhcmdldDogJ2hpbnQnLFxuXHRcdFx0XHRcdFx0XHQvLyBhY3Rpb25zOiByYWlzZSgnQ0hFQ0snKVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG9uRXJyb3I6IHtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnI1F1ZXN0aW9uc0FycmF5Lm5leHQnLFxuXHRcdFx0XHRcdFx0XHRhY3Rpb25zOiByYWlzZSgnQ0hFQ0snKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgUXVlc3Rpb25zQXJyYXlTdGF0dXMgPSB7XG5cdFx0XHRpZDogJ1F1ZXN0aW9uc0FycmF5Jyxcblx0XHRcdGluaXRpYWw6ICdwbGF5Jyxcblx0XHRcdHN0YXRlczoge1xuXHRcdFx0XHRwbGF5OiB7XG5cdFx0XHRcdFx0Li4uUXVlc3Rpb25TdGF0ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRuZXh0OiB7XG5cdFx0XHRcdFx0b246IHtcblx0XHRcdFx0XHRcdENIRUNLOiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICcjZ2FtZS5lbmQnLFxuXHRcdFx0XHRcdFx0XHRcdGNvbmQ6IChjdHgsIGV2dCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3R4LnF1ZXN0aW9uSW5kZXggKz0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdGN0eC5xdWVzdGlvblBsYXlUaW1lcyA9IDBcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCcjZ2FtZS5lbmQnLCAgY3R4LnF1ZXN0aW9uSW5kZXggPj0gY3R4LnF1ZXN0aW9uc0NvdW50IClcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBjdHgucXVlc3Rpb25JbmRleCA+PSBjdHgucXVlc3Rpb25zQ291bnRcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHt0YXJnZXQ6ICdwbGF5J31cblx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRcblx0XHRjb25zdCBzdGF0ZSA9IHtcblx0XHRcdGlkOiAnZ2FtZScsXG5cdFx0XHRpbml0aWFsOiAnYmVnaW4nLFxuXHRcdFx0Y29udGV4dDoge1xuXHRcdFx0XHRxdWVzdGlvbkluZGV4OiAwLFxuXHRcdFx0XHRxdWVzdGlvblBsYXlUaW1lczogMCxcblx0XHRcdFx0bWF4UXVlc3Rpb25UcnlUaW1lczogMixcblx0XHRcdFx0cXVlc3Rpb25zQ291bnQ6IHRoaXMuX2ZpZ3VyZVBvaW50UmVjdEFycmF5Lmxlbmd0aCxcblx0XHRcdFx0cXVlc3Rpb25zOiB0aGlzLl9maWd1cmVQb2ludFJlY3RBcnJheSxcblx0XHRcdH0sXG5cdFx0XHRzdGF0ZXM6IHtcblx0XHRcdFx0YmVnaW46IHtcblx0XHRcdFx0XHRpbnZva2U6IHtcblx0XHRcdFx0XHRcdHNyYzogKGN0eCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2FtZSBiZWdpbiAxJyk7XG5cdFx0XHRcdFx0XHRcdGlmKHdpbmRvdy5jb3Vyc2V3YXJlICYmIHdpbmRvdy5jb3Vyc2V3YXJlLm9wZW5Pc21vRmluZ2VyUmVhZCkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaXNPcGVuZWRPc21vRmluZ2VyUmVhZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LmNvdXJzZXdhcmUub3Blbk9zbW9GaW5nZXJSZWFkKHtcblx0XHRcdFx0XHRcdFx0XHRcdFwicGFnZV9pZFwiOiAyNyxcblx0XHRcdFx0XHRcdFx0XHRcdFwiYm9va19pZFwiOiBcIm9wdzFcIlxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dmFyIGRyYWdvbkRpc3BsYXkgPSB0aGlzLmxvZ29DYXQuZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHN0YXRlID0gZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdiZWdpbicsIDApO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cGxheUF1ZGlvQnlVcmwodGhpcy5kYXRhLmJlZ2luX2F1ZGlvLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2FtZSBiZWdpbiBhdWRpbyBmaW5pc2gnKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoKVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG9uRG9uZTogICdndWlkZScsXG5cdFx0XHRcdFx0XHRvbkVycm9yOiAnZ3VpZGUnXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRcblx0XHRcdFx0Z3VpZGU6e1xuXHRcdFx0XHRcdGludm9rZToge1xuXHRcdFx0XHRcdFx0c3JjOiAoY3R4KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSxyZWplY3QpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRwbGF5QXVkaW9CeVVybCh0aGlzLmRhdGEuZ3VpZGVfYXVkaW8sICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnYW1lIGd1aWRlIGF1ZGlvIGZpbmlzaCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVqZWN0KClcblx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRvbkRvbmU6ICAncGxheWluZycsXG5cdFx0XHRcdFx0XHRvbkVycm9yOiAncGxheWluZydcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRwbGF5aW5nOiB7XG5cdFx0XHRcdFx0ZW50cnk6IChjdHgpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdlbnRyeSBwbGF5IHN0YWdlJyk7XG5cdFx0XHRcdFx0XHR2YXIgZHJhZ29uRGlzcGxheSA9IHRoaXMubG9nb0NhdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdGNvbnN0IHN0YXRlID0gZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdub3JtYWwnLCAwKTtcblx0XHRcdFx0XHRcdGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHRoaXMuZGF0YS5wbGF5aW5nX2F1ZGlvLCAoZXJyLCBhdWRpb0NsaXApID0+IHtcblx0XHRcdFx0XHRcdFx0Y2MuYXVkaW9FbmdpbmUucGxheU11c2ljKGF1ZGlvQ2xpcCwgdHJ1ZSwgMC44KTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0Y3R4LnF1ZXN0aW9ucy5mb3JFYWNoKChibG9jaykgPT4ge1xuXHRcdFx0XHRcdFx0XHRibG9jay5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRleGl0OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZXhpdCBwbGF5IHN0YWdlJyk7XG5cdFx0XHRcdFx0XHRjYy5hdWRpb0VuZ2luZS5zdG9wTXVzaWMoKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG9uOiB7XG5cdFx0XHRcdFx0XHRORVhUOiAnZW5kJ1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Ly8gLi4uUXVlc3Rpb25zU3RhdGVzXG5cdFx0XHRcdFx0Li4uUXVlc3Rpb25zQXJyYXlTdGF0dXNcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW5kOiB7XG5cdFx0XHRcdFx0XHRlbnRyeTogKGN0eCwgZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2dhbWUgZW5kJyk7XG5cdFx0XHRcdFx0XHRcdHZhciBkcmFnb25EaXNwbGF5ID0gdGhpcy5sb2dvQ2F0LmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzdGF0ZSA9IGRyYWdvbkRpc3BsYXkucGxheUFuaW1hdGlvbignZmluaXNoJywgMCk7XG5cdFx0XHRcdFx0XHRcdGlmKHdpbmRvdy5jb3Vyc2V3YXJlICYmIHdpbmRvdy5jb3Vyc2V3YXJlLmNsb3NlT3Ntb0ZpbmdlclJlYWQpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmlzT3BlbmVkT3Ntb0ZpbmdlclJlYWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cuY291cnNld2FyZS5jbG9zZU9zbW9GaW5nZXJSZWFkKClcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRwbGF5QXVkaW9CeVVybCh0aGlzLmRhdGEuZW5kX2F1ZGlvLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2dhbWUgZmluaXNoJyk7XG5cdFx0XHRcdFx0XHRcdFx0b25Ib21ld29ya0ZpbmlzaCgpO1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHQvLyByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIFx0XHRjb25zb2xlLmxvZygnaGludCBmaW5pc2gnKTtcblx0XHRcdFx0XHRcdFx0Ly8gXHRcdHJlc29sdmUoKVxuXHRcdFx0XHRcdFx0XHQvLyBcdH0sIDIwMDApXG5cdFx0XHRcdFx0XHRcdC8vIH0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XG5cdFx0XHRcdH0sXG5cdFx0XHR9XG5cdFx0fTtcblx0XHRjb25zdCBhZnRlciA9IHt9O1xuXHRcdGZvcihsZXQgaSA9IDAgO2kgIDwgdGhpcy5faGludHNOb2RlTGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgdCA9IHRoaXMuX2hpbnRzTm9kZUxpc3RbaV0ubm9kZTtcblx0XHRcdGNvbnN0IGsgPSB0aGlzLl9oaW50c05vZGVMaXN0W2ldLmFmdGVyO1xuXHRcdFx0YWZ0ZXJba109IHtcblx0XHRcdFx0YWN0aW9uczogKCkgPT4ge1xuXG5cdFx0XHRcdFx0aWYgKHQuaXNTcGluZSkge1xuXG5cdFx0XHRcdFx0XHRjb25zdCBza2VsZXRvbiA9IHQuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKTtcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0c2tlbGV0b24uc2V0VG9TZXR1cFBvc2UoKTtcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRza2VsZXRvbi5zZXRBbmltYXRpb24oMCwgJ2VubGFyZ2UnLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHR9LCAxKTtcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0Ly8gc2tlbGV0b24uYW5pbWF0aW9uID0gc2tlbGV0b24uYW5pbWF0aW9uTmFtZXNbMF07XG5cblx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRjb25zdCBkcmFnb25EaXNwbGF5ID0gdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdGRyYWdvbkRpc3BsYXkucGxheUFuaW1hdGlvbignZW5sYXJnZScsIDEpO1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZHJhZ29uRGlzcGxheS5fYXJtYXR1cmVLZXksICdlbmxhcmdlJylcblx0XHRcdFx0XHRcdGRyYWdvbkRpc3BsYXkuYWRkRXZlbnRMaXN0ZW5lcihkcmFnb25Cb25lcy5FdmVudE9iamVjdC5DT01QTEVURSwgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIFRPRE8g6L+Z6YeM5YaZ6Kem5Y+R5LqL5Lu2XG5cdFx0XHRcdFx0XHRcdC8vIGV2ZW50Lm5hbWXkuLrkuovku7blkI3np7Bcblx0XHRcdFx0XHRcdFx0Ly8gZXZlbnQuYXJtYXR1cmUuYW5pbWF0aW9uLnBsYXkoJ25vcm1hbCcsIDApO1xuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhldmVudC5hbmltYXRpb25TdGF0ZS5uYW1lLCBkcmFnb25EaXNwbGF5Ll9hcm1hdHVyZUtleSwgJ2VuZCcpXG5cdFx0XHRcdFx0XHR9LCB0aGlzKTtcblx0XHRcdFx0XHR9XG5cblxuXG5cdFx0XHRcdFx0Ly8gY29uc3QgZHJhZ29uRGlzcGxheSA9IHQuZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSk7XG5cdFx0XHRcdFx0Ly8gZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdlbmxhcmdlJywgMSk7XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZHJhZ29uRGlzcGxheS5fYXJtYXR1cmVLZXksICdlbmxhcmdlJylcblx0XHRcdFx0XHQvLyBkcmFnb25EaXNwbGF5LmFkZEV2ZW50TGlzdGVuZXIoZHJhZ29uQm9uZXMuRXZlbnRPYmplY3QuQ09NUExFVEUsIChldmVudCkgPT4ge1xuXHRcdFx0XHRcdC8vIFx0Ly9UT0RPIOi/memHjOWGmeinpuWPkeS6i+S7tlxuXHRcdFx0XHRcdC8vIFx0Ly9ldmVudC5uYW1l5Li65LqL5Lu25ZCN56ewXG5cdFx0XHRcdFx0Ly8gXHRldmVudC5hcm1hdHVyZS5hbmltYXRpb24ucGxheSgnbm9ybWFsJywgMCk7XG5cdFx0XHRcdFx0Ly8gXHRjb25zb2xlLmxvZyhldmVudC5hbmltYXRpb25TdGF0ZS5uYW1lLCBkcmFnb25EaXNwbGF5Ll9hcm1hdHVyZUtleSwgJ2VuZCcpXG5cdFx0XHRcdFx0Ly8gfSwgdGhpcyk7XG5cdFx0XHRcdH0gXG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICh0aGlzLmRhdGEuYmVnaW5fc2VwX3RpbWUpIHtcblx0XHRcdGNvbnN0IHQgPSArdGhpcy5kYXRhLmJlZ2luX3NlcF90aW1lICogMTAwMDtcblx0XHRcdGFmdGVyW3RdID0ge1xuXHRcdFx0XHRhY3Rpb25zOiAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ2dhbWUgYmVnaW4gMicpO1xuXG5cdFx0XHRcdFx0Zm9yKGxldCBpID0gMCA7aSAgPCB0aGlzLl9hbGxBbmltYXRpb25Ob2Rlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0Y29uc3QgdCA9IHRoaXMuX2FsbEFuaW1hdGlvbk5vZGVzW2ldO1xuXHRcdFx0XHRcdFx0aWYgKHQuaXNTcGluZSkge1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gdC5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnc2tlbGV0b246ICcsIHNrZWxldG9uKTtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldFRvU2V0dXBQb3NlKCk7XG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldEFuaW1hdGlvbigwLCAnbm9ybWFsJywgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdH0sIDEpO1xuXHRcdFx0XHRcdFx0XHRcblxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnc2tlbGV0b24gMjI6ICcsIHNrZWxldG9uKTtcblxuXHRcdFx0XHRcdFx0XHQvLyBza2VsZXRvbi5hbmltYXRpb24gPSBza2VsZXRvbi5hbmltYXRpb25OYW1lc1swXTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgZHJhZ29uRGlzcGxheSA9IHQuZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSk7XG5cdFx0XHRcdFx0XHRcdGRyYWdvbkRpc3BsYXkucGxheUFuaW1hdGlvbignbm9ybWFsJywgMCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHRcdHN0YXRlLnN0YXRlcy5iZWdpbi5hZnRlciA9IGFmdGVyO1xuXG5cblxuXHRcdGNvbnN0IGdhbWVNYWNoaW5lID0gY3JlYXRlTWFjaGluZShzdGF0ZSk7XG5cdFx0d2luZG93LmdhbWVNYWNoaW5lID0gZ2FtZU1hY2hpbmU7XG5cdFx0dGhpcy5nYW1lTWFjaGluZVNlcnZpY2UgPSBpbnRlcnByZXQoZ2FtZU1hY2hpbmUpLm9uVHJhbnNpdGlvbigoc3RhdGUpID0+IHtcblx0XHQvLyBjb25zb2xlLmxvZygxLCBzdGF0ZS52YWx1ZSwgc3RhdGUuY29udGV4dCk7XG5cdFx0fSk7XG5cdFx0dGhpcy5nYW1lTWFjaGluZVNlcnZpY2Uuc3RhcnQoKTtcblx0XHRpZiAod2luZG93LmdhbWVNYWNoaW5lU2VydmljZSkge1xuXHRcdFx0d2luZG93LmdhbWVNYWNoaW5lU2VydmljZSA9IGdhbWVNYWNoaW5lU2VydmljZTtcblx0XHR9XG5cblxuXHR9LFxuXG5cdFxuXG5cblxuXHQvLyDnlJ/lkb3lkajmnJ8gc3RhcnRcblx0c3RhcnQoKSB7XG5cdFx0bGV0IGdldERhdGEgPSB0aGlzLmdldERhdGEuYmluZCh0aGlzKTtcblx0XHRpZiAod2luZG93ICYmIHdpbmRvdy5jb3Vyc2V3YXJlKSB7XG5cdFx0XHRnZXREYXRhID0gd2luZG93LmNvdXJzZXdhcmUuZ2V0RGF0YTtcblx0XHR9XG5cblx0XHRnZXREYXRhKChkYXRhKSA9PiB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygnZGF0YTonLCBkYXRhKTtcblx0XHRcdHRoaXMuZGF0YSA9IGRhdGEgfHwgdGhpcy5nZXREZWZhdWx0RGF0YSgpO1xuXHRcdFx0dGhpcy5kYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKVxuXHRcdFx0XG5cdFx0XHR0aGlzLnByZWxvYWRJdGVtKClcblx0XHR9KTtcblx0XHR3aW5kb3cuYWlyID0gd2luZG93LmFpciB8fCB7fVxuXHRcdGlmICh3aW5kb3cuYWlyKSB7XG5cdFx0XHR3aW5kb3cuYWlyLm9zbW9GaW5nZXJSZWFkQ2FsbGJhY2sgPSAocmVzdWx0KSA9PiB7XG5cdFx0XHRcdGlmICghdGhpcy5nYW1lTWFjaGluZVNlcnZpY2UpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gY29uc3Qgc3QgPSB0aGlzLmdhbWVNYWNoaW5lU2VydmljZS5zdGF0ZS52YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lID09ICdPYmplY3QnIFxuXHRcdFx0XHQvLyAmJiB0aGlzLmdhbWVNYWNoaW5lU2VydmljZS5zdGF0ZS52YWx1ZVsncGxheWluZyddXG5cdFx0XHRcdC8vICYmIHRoaXMuZ2FtZU1hY2hpbmVTZXJ2aWNlLnN0YXRlLnZhbHVlWydwbGF5aW5nJ10uY29uc3RydWN0b3IubmFtZSA9PSAnT2JqZWN0J1xuXHRcdFx0XHQvLyAmJiB0aGlzLmdhbWVNYWNoaW5lU2VydmljZS5zdGF0ZS52YWx1ZVsncGxheWluZyddWydwbGF5J11cblx0XHRcdFx0Ly8gJiYgdGhpcy5nYW1lTWFjaGluZVNlcnZpY2Uuc3RhdGUudmFsdWVbJ3BsYXlpbmcnXVsncGxheSddID09ICdhbnN3ZXInXG5cdFx0XHRcdC8vIGlmIChzdCkge1xuXHRcdFx0XHQvLyB9XG5cdFx0XHRcdGNvbnN0IHJlc3VsdE9iaiA9IEpTT04ucGFyc2UocmVzdWx0KTtcblx0XHRcdFx0Y29uc29sZS5sb2coJ1tHZW5pc2UgSlNdICcrIEpTT04uc3RyaW5naWZ5KHJlc3VsdE9iai5maW5nZXJfcG9zX2luX3BhZ2UpKVxuXHRcdFx0XHRjb25zdCBwID0gcmVzdWx0T2JqLmZpbmdlcl9wb3NfaW5fcGFnZTtcblx0XHRcdFx0aWYgKHAueCA9PSAtMSB8fCBwLnkgPT0gLTEpIHtcblx0XHRcdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24ucG9zID0gbnVsbDtcblx0XHRcdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24uZGlydHkgPSBmYWxzZTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uID0ge1xuXHRcdFx0XHRcdHBvczp7XG5cdFx0XHRcdFx0XHR4OiBwLngsXG5cdFx0XHRcdFx0XHR5OiBwLnlcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGRpcnR5OiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5kZWJ1Z1BvaW50ZXIocC54LCBwLnkpXG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuaXNEZWJ1ZyA9IGZhbHNlO1xuXHRcdFxuXHR9LFxuXHRjaGVja0luUmVnaW9uKHIpIHtcblx0XHRjb25zb2xlLmxvZygncn5+fjogJywgcik7XG5cdFx0aWYgKCF0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24gJiYgIXRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5wb3MpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRjb25zdCBwID0gdGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uID8gdGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uLnBvcyB8fCB7eDowLCB5OjB9IDoge3g6MCwgeTowfTtcblx0XHRjb25zdCB3ID0gcC54ID4gci54ICYmIHAueCA8IChyLnggKyByLndpZHRoKTtcblx0XHRjb25zdCBoID0gcC55ID4gci55ICYmIHAueSA8IChyLnkgKyByLmhlaWdodCk7XG5cdFx0cmV0dXJuIHcgJiYgaDtcblxuXHR9LFxuXG5cdGdldERhdGEoZnVuYykge1xuXHRcdGlmICh3aW5kb3cgJiYgd2luZG93LmNvdXJzZXdhcmUpIHtcblx0XHRcdHdpbmRvdy5jb3Vyc2V3YXJlLmdldERhdGEoZnVuYywgJ3NjZW5lJyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgbWlkZGxlTGF5ZXIgPSBjYy5maW5kKCdtaWRkbGVMYXllcicpO1xuXHRcdGlmIChtaWRkbGVMYXllcikge1xuXHRcdFx0Y29uc3QgbWlkZGxlTGF5ZXJDb21wb25lbnQgPSBtaWRkbGVMYXllci5nZXRDb21wb25lbnQoJ21pZGRsZUxheWVyJyk7XG5cdFx0XHRtaWRkbGVMYXllckNvbXBvbmVudC5nZXREYXRhKGZ1bmMpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGZ1bmModGhpcy5nZXREZWZhdWx0RGF0YSgpKTtcblx0fSxcblxuXHRnZXREZWZhdWx0RGF0YSgpIHtcblx0XHRyZXR1cm4gIHtcImJlZ2luX2F1ZGlvXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzNkMzA3YTAyNjYzZTFjZDY2N2I3Yzk1MTM0MGVjOThiLm1wM1wiLFwiYmVnaW5fc2VwX3RpbWVcIjoxLFwiZ3VpZGVfYXVkaW9cIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2QzMDdhMDI2NjNlMWNkNjY3YjdjOTUxMzQwZWM5OGIubXAzXCIsXCJwbGF5aW5nX2F1ZGlvXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzNkMzA3YTAyNjYzZTFjZDY2N2I3Yzk1MTM0MGVjOThiLm1wM1wiLFwicmlnaHRfYXVkaW9cIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2QzMDdhMDI2NjNlMWNkNjY3YjdjOTUxMzQwZWM5OGIubXAzXCIsXCJ3cm9uZ19hdWRpb1wiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zZDMwN2EwMjY2M2UxY2Q2NjdiN2M5NTEzNDBlYzk4Yi5tcDNcIixcIndyb25nX2F1ZGlvMVwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zZDMwN2EwMjY2M2UxY2Q2NjdiN2M5NTEzNDBlYzk4Yi5tcDNcIixcIndyb25nX2F1ZGlvMlwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zZDMwN2EwMjY2M2UxY2Q2NjdiN2M5NTEzNDBlYzk4Yi5tcDNcIixcImVuZF9hdWRpb1wiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zZDMwN2EwMjY2M2UxY2Q2NjdiN2M5NTEzNDBlYzk4Yi5tcDNcIixcImJnSXRlbVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS84NGVjNmVkYzIwYmNlYWFhOWRiZTgyNDA5MmI2ODYwZC5wbmdcIixcInJlY3RcIjp7XCJ4XCI6NzM2Ljk1LFwieVwiOjAsXCJ3aWR0aFwiOjU5OS4wOSxcImhlaWdodFwiOjc3NX19LFwiaG90Wm9uZUl0ZW1BcnJcIjpbe1wiaWRcIjpcIjE2NTkzMzM2NDU1NzNcIixcImluZGV4XCI6MCxcImF1ZGlvX3VybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS81YTFhMjY3MDg0NWJmZTc2NjYyZTg2ZDlhM2E2OWY4MS5tcDNcIixcIml0ZW1UeXBlXCI6XCJyZWN0XCIsXCJmb250U2NhbGVcIjoxLjYxOTUzMTI1LFwiaW1nU2NhbGVcIjoxLFwiaW1nU2l6ZVdcIjowLFwiaW1nU2l6ZUhcIjowLFwibWFwU2NhbGVcIjoxLjYxOTUzMTI1LFwiZHJhZ0RvdFwiOntcInhcIjoxMDM2LjUsXCJ5XCI6Mzg3LjV9LFwiZ0lkeFwiOlwiMVwiLFwibGFiZWxUZXh0XCI6XCIxXCIsXCJwb3NYXCI6ODg3LjUsXCJwb3NZXCI6MTY1LjUsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8xMzNhMWY2MDcxOWVkMjYyNDdlMzVkYzAyMmQ4Mjg2Mi5qc29uXCIsXCJuYW1lXCI6XCJzcGluZWJveS1wcm8uanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2UwOTQ1YjgyNjVlYTNiODA1M2FmYjgxNGM2Yjg0OWQzLmF0bGFzXCIsXCJuYW1lXCI6XCJzcGluZWJveS1wcm8uYXRsYXNcIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzUxNzU1M2Y1MDIyNDkxNTE0OGY5ZWZjNWI3NTU2Nzk4LnBuZ1wiLFwibmFtZVwiOlwic3BpbmVib3ktcHJvLnBuZ1wifSxcImFuaW1UeXBlXCI6XCJzcGluZVwiLFwicmVjdFwiOntcInhcIjo0OC4wNSxcInlcIjo2NS41LFwid2lkdGhcIjoyMDUsXCJoZWlnaHRcIjoyMDB9fSx7XCJpZFwiOlwiMTY1OTMzNDA5ODkzMFwiLFwiaW5kZXhcIjoxLFwiYXVkaW9fdXJsXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzE2ZWIwNmE2YmViOWU0ZmE3N2M5YjVkMmQ2NDNhYjI5Lm1wM1wiLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjEuNjE5NTMxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjEuNjE5NTMxMjUsXCJkcmFnRG90XCI6e1wieFwiOjEwMzYuNSxcInlcIjozODcuNX0sXCJnSWR4XCI6XCIwXCIsXCJsYWJlbFRleHRcIjpcIjFcIixcInBvc1hcIjoxMjEyLjUsXCJwb3NZXCI6NjQzLjUsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS82NzlmZWQyNmRhYTQ2NDgxOWQ1NTNkZTYzMzFiMzU1Mi5qc29uXCIsXCJuYW1lXCI6XCJhbGllbi1wcm8uanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzY1ZDgyMTRjNmI1YzVkMDQ5NmUxN2FkYjA0MDgyNzZhLmF0bGFzXCIsXCJuYW1lXCI6XCJhbGllbi1wcm8uYXRsYXNcIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2EzMTliMzcyODk5MjM5MzI1YjkwYmI0ZWMwN2I0OTcwLnBuZ1wiLFwibmFtZVwiOlwiYWxpZW4tcHJvLnBuZ1wifSxcImFuaW1UeXBlXCI6XCJzcGluZVwiLFwicmVjdFwiOntcInhcIjozNzUuNTYsXCJ5XCI6NTQzLjUsXCJ3aWR0aFwiOjIwMCxcImhlaWdodFwiOjIwMH19XX1cblx0XHQvLyByZXR1cm4gZGVmYXVsdERhdGE7XG5cdH0sXG5cblx0cHJlbG9hZEl0ZW0oKSB7XG5cdFx0dGhpcy5hZGRQcmVsb2FkSW1hZ2UoKTtcblx0XHR0aGlzLmFkZFByZWxvYWRBdWRpbygpO1xuXHRcdHRoaXMuYWRkUHJlbG9hZEFuaW1hKCk7XG5cdFx0dGhpcy5wcmVsb2FkKCk7XG5cdH0sXG5cblxuXHRhZGRQcmVsb2FkSW1hZ2UoKSB7XG5cblx0XHR0aGlzLl9pbWFnZVJlc0xpc3QucHVzaCh7IHVybDogdGhpcy5kYXRhLmJnSXRlbS51cmx9KTtcblxuXHRcdGZvciAoY29uc3QgcSBvZiB0aGlzLmRhdGEuaG90Wm9uZUl0ZW1BcnIpIHtcblx0XHRcdGlmIChxLmdJZHggPT0nMCcpIHtcblx0XHRcdFx0dGhpcy5faW1hZ2VSZXNMaXN0LnB1c2goeyB1cmw6IHEudGV4UG5nRGF0YS51cmx9KTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHEuZ0lkeCA9PScxJykge1xuXHRcdFx0XHR0aGlzLl9pbWFnZVJlc0xpc3QucHVzaCh7IHVybDogcS50ZXhQbmdEYXRhLnVybCB9KTtcblx0XHRcdH1cblx0XHRcdGlmIChxLmdJZHggPT0nMicpIHtcblx0XHRcdFx0dGhpcy5faW1hZ2VSZXNMaXN0LnB1c2goeyB1cmw6IHEucGljX3VybH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0cHJlcGFyZUF1ZGlvQ2xpcCh1cmwsIGtleSkge1xuXHRcdGlmICh1cmwpIHtcblx0XHRcdGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHVybCwgKGVyciwgYXVkaW9DbGlwKSA9PiB7XG5cdFx0XHRcdGlmIChhdWRpb0NsaXApIHtcblx0XHRcdFx0XHR0aGlzW2tleV0gPSBhdWRpb0NsaXA7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblx0YWRkUHJlbG9hZEF1ZGlvKCkge1xuXG5cdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS5iZWdpbl9hdWRpbyB9KTtcblx0XHQvLyB0aGlzLnByZXBhcmVBdWRpb0NsaXAodGhpcy5kYXRhLmJlZ2luX2F1ZGlvMSwgJ2JlZ2luX2F1ZGlvMScpXG5cdFx0Ly8gdGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS5iZWdpbl9hdWRpbzIgfSk7XG5cdFx0Ly8gdGhpcy5wcmVwYXJlQXVkaW9DbGlwKHRoaXMuZGF0YS5iZWdpbl9hdWRpbzIsICdiZWdpbl9hdWRpbzInKVxuXHRcdHRoaXMuX2F1ZGlvUmVzTGlzdC5wdXNoKHsgdXJsOiB0aGlzLmRhdGEuZ3VpZGVfYXVkaW8gfSk7XG5cdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS5wbGF5aW5nX2F1ZGlvIH0pO1xuXHRcdGlmICh0aGlzLmRhdGEud3JvbmdfYXVkaW8pIHtcblx0XHRcdHRoaXMuX2F1ZGlvUmVzTGlzdC5wdXNoKHsgdXJsOiB0aGlzLmRhdGEud3JvbmdfYXVkaW8gfSk7XG5cdFx0XHR0aGlzLndyb25nQXVkaW8gPSB0aGlzLmRhdGEud3JvbmdfYXVkaW9cblx0XHR9XG5cdFx0aWYgKHRoaXMuZGF0YS5yaWdodF9hdWRpbykge1xuXHRcdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS5yaWdodF9hdWRpbyB9KTtcblx0XHRcdHRoaXMucmlnaHRBdWRpbyA9IHRoaXMuZGF0YS5yaWdodF9hdWRpb1xuXHRcdH1cblx0XHR0aGlzLl9hdWRpb1Jlc0xpc3QucHVzaCh7IHVybDogdGhpcy5kYXRhLndyb25nX2F1ZGlvMSB9KTtcblx0XHR0aGlzLl9hdWRpb1Jlc0xpc3QucHVzaCh7IHVybDogdGhpcy5kYXRhLndyb25nX2F1ZGlvMiB9KTtcblx0XHR0aGlzLl9hdWRpb1Jlc0xpc3QucHVzaCh7IHVybDogdGhpcy5kYXRhLmVuZF9hdWRpbyB9KTtcblxuXG5cdFx0Zm9yIChjb25zdCBxIG9mIHRoaXMuZGF0YS5ob3Rab25lSXRlbUFycikge1xuXHRcdFx0aWYgKHEuZ0lkeCA9PScwJykge1xuXHRcdFx0XHR0aGlzLl9hdWRpb1Jlc0xpc3QucHVzaCh7IHVybDogcS5hdWRpb191cmwgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRkZWJ1Z1BvaW50ZXIoKSB7XG5cdFx0Y29uc3QgYm94RGVidWdnZXIgPSBjYy5maW5kKCdDYW52YXMvYm94LWRlYnVnZ2VyJyk7XG5cdFx0aWYgKCF0aGlzLmlzRGVidWcpIHtcblx0XHRcdGJveERlYnVnZ2VyLmFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoIXRoaXMuUE9JTlRFUl9OT0RFKSB7XG5cdFx0XHR0aGlzLlBPSU5URVJfTk9ERSA9IG5ldyBjYy5Ob2RlKCk7XG5cdFx0XHR0aGlzLlBPSU5URVJfTk9ERS5wYXJlbnQgPSBib3hEZWJ1Z2dlcjtcblx0XHRcdHRoaXMuUE9JTlRFUl9OT0RFLm5hbWUgPSAnUE9JTlRFUl9OT0RFJ1xuXHRcdFx0dGhpcy5QT0lOVEVSX05PREUuYWRkQ29tcG9uZW50KGNjLkdyYXBoaWNzKTtcblx0XHR9XG5cdFx0Y29uc3QgZ3JhcCA9IHRoaXMuUE9JTlRFUl9OT0RFLmdldENvbXBvbmVudChjYy5HcmFwaGljcyk7XG5cdFx0Z3JhcC5jbGVhcigpO1xuXHRcdGNvbnN0IGdyb3VuZCA9IGNjLmZpbmQoJ0NhbnZhcy9mcmFtZS1ib3JkZXIvZ3JvdW5kJyk7XG5cdFx0Y29uc3Qge3dpZHRoOiBiYXNlVywgaGVpZ2h0OiBiYXNlSH0gPSBncm91bmQ7XG5cdFx0Y29uc3Qge3g6IHB4LCB5OiBweX0gPSB0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24ucG9zO1xuXHRcdGxldCB4ID0gYmFzZVcgKiBweCAtIGJhc2VXIC8gMjtcblx0XHRsZXQgeSA9IGJhc2VIIC0gKGJhc2VIICogcHkpIC0gYmFzZUggLyAyIC0gMTY7XG5cdFx0Y29uc3QgcG4gPSBuZXcgY2MuTm9kZSgpO1xuXHRcdFxuXHRcdGdyYXAuZmlsbENvbG9yPWNjLmNvbG9yKDI1NSwgMCwgMCk7XG5cdFx0Z3JhcC5jaXJjbGUoeCwgeSwgMzIpO1xuXHRcdGdyYXAuZmlsbCgpO1xuXHRcdGdyYXAuc3Ryb2tlKCk7XG5cdH0sXG5cdGRlYnVnR3JhcGhpY3MoKSB7XG5cdFx0Y29uc3QgYm94RGVidWdnZXIgPSBjYy5maW5kKCdDYW52YXMvYm94LWRlYnVnZ2VyJyk7XG5cdFx0aWYgKCF0aGlzLmlzRGVidWcpIHtcblx0XHRcdGJveERlYnVnZ2VyLmFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRib3hEZWJ1Z2dlci5hY3RpdmUgPSB0cnVlO1xuXHRcdGNvbnNvbGUubG9nKCdzaG93IGRlYnVnIGdyYXBoaWNzJyk7XG5cdFx0Y29uc3QgZ3JvdW5kID0gY2MuZmluZCgnQ2FudmFzL2ZyYW1lLWJvcmRlci9ncm91bmQnKTtcblx0XHRjb25zdCBjYW52YXMgPSBjYy5maW5kKCdDYW52YXMnKTtcblx0XHRjb25zdCB7d2lkdGg6IGJhc2VXLCBoZWlnaHQ6IGJhc2VIfSA9IGdyb3VuZDtcblx0XHRjb25zdCB7d2lkdGg6IGJnVywgaGVpZ2h0OiBiZ0h9ID0gdGhpcy5kYXRhLmJnSXRlbS5yZWN0XG5cdFx0Y29uc3Qgc2NhbGVYID0gYmdXIC8gYmFzZVc7XG5cdFx0Y29uc3Qgc2NhbGVZID0gYmdIIC8gYmFzZUg7XG5cdFx0bGV0IGFkZGVkICA9ZmFsc2Vcblx0XHR0aGlzLmRhdGEuaG90Wm9uZUl0ZW1BcnIuZm9yRWFjaChhcmVhID0+IHtcblx0XHRcdFxuXHRcdFx0aWYgKGFkZGVkKSB7XG5cdFx0XHRcdC8vIHJldHVyblxuXHRcdFx0fVxuXHRcdFx0aWYgKGFyZWEuZ0lkeCAhPSAnMCcpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0YWRkZWQgPSB0cnVlO1xuXHRcdFx0Y29uc3QgZG4gPSBuZXcgY2MuTm9kZSgpO1xuXHRcdFx0Y29uc3QgbGJsTm9kZSA9IG5ldyBjYy5Ob2RlKCk7XG5cdFx0XHRsYmxOb2RlLnBhcmVudCA9IGRuXG5cdFx0XHRjb25zdCBsYmwgPSBsYmxOb2RlLmFkZENvbXBvbmVudChjYy5MYWJlbCk7XG5cdFx0XHRsYmxOb2RlLmNvbG9yID0gY2MuY29sb3IoMCwwLDApXG5cdFx0XHRsYmwuc3RyaW5nID0gYXJlYS5za2VKc29uRGF0YS5uYW1lLnN1YnN0cmluZygwLCBhcmVhLnNrZUpzb25EYXRhLm5hbWUubGVuZ3RoIC0gOSlcblx0XHRcdGRuLm5hbWUgPSBsYmwuc3RyaW5nO1xuXHRcdFx0ZG4ucGFyZW50ID0gYm94RGVidWdnZXI7XG5cdFx0XHRkbi53aWR0aCA9IGJhc2VXO1xuXHRcdFx0ZG4uaGVpZ2h0ID0gYmFzZUg7XG5cdFx0XHRcblx0XHRcdGNvbnN0IGdyYXAgPSBkbi5hZGRDb21wb25lbnQoY2MuR3JhcGhpY3MpO1xuXHRcdFx0Y29uc3QgciA9IFJhbmRvbUludCgxLDI1NSlcblx0XHRcdGNvbnN0IGcgPSBSYW5kb21JbnQoMSwyNTUpXG5cdFx0XHRjb25zdCBiID0gUmFuZG9tSW50KDEsMjU1KVxuXHRcdFx0Z3JhcC5maWxsQ29sb3I9Y2MuY29sb3IociwgZywgYiwgMTI3KTtcblx0XHRcdGNvbnN0IHt4OiByeCwgeTogcnksIHdpZHRoOiBydywgaGVpZ2h0OiByaH0gPSAgYXJlYS5yZWN0O1xuXHRcdFx0bGV0IHcgPSAocncgLyBiZ1cpICogYmFzZVc7XG5cdFx0XHRsZXQgaCA9IChyaCAvIGJnSCkgKiBiYXNlSDtcblx0XHRcdGxldCB4ID0gKHJ4IC8gYmdXKSAqIGJhc2VXIC0gYmFzZVcgLyAyO1xuXHRcdFx0bGV0IHkgPSBiYXNlSCAtICgocnkgLyBiZ0gpICogYmFzZUgpIC0gaCAtIGJhc2VIIC8gMjtcblx0XHRcdC8vIHcgKj0gc2NhbGVYXG5cdFx0XHQvLyBoICo9IHNjYWxlWVxuXHRcdFx0Ly8geCAqPSBzY2FsZVhcblx0XHRcdC8vIHkgKj0gc2NhbGVZXG4gICAgICAgICAgICAvLyBjb25zdCBwID0gYm94RGVidWdnZXIuY29udmVydFRvTm9kZVNwYWNlQVIoY2MudjIoeCx5KSk7XG5cdFx0XHQvLyB4ID0gcC54O1xuXHRcdFx0Ly8geSA9IHAueTtcblx0XHRcdGxibE5vZGUueCA9IHg7XG5cdFx0XHRsYmxOb2RlLnkgPSB5ICsgaDtcblx0XHRcdC8vIGRuLnNjYWxlWCA9IHNjYWxlWDtcblx0XHRcdC8vIGRuLnNjYWxlWSA9IHNjYWxlWTtcblx0XHRcdC8vIGRuLnNjYWxlID0gYXJlYS5tYXBTY2FsZTsgLy8gbWluU2NhbGU7IC8vIHRoaXMuX21hcFNjYWxlTWF4ICogYXJlYS5tYXBTY2FsZTsgLy8gO1xuXHRcdFx0Y29uc29sZS5sb2coJ1tkZWJ1Z10nLCBhcmVhLnNrZUpzb25EYXRhLm5hbWUsIHgsIHksIHcsIGgpO1xuXHRcdFx0Z3JhcC5maWxsUmVjdCh4LCB5LCB3LCBoKTtcblx0XHRcdGdyYXAuc3Ryb2tlKCk7XG5cdFx0XHRcblx0XHR9KTtcblxuXHR9LFxuXHRhZGRQcmVsb2FkQW5pbWEoKSB7XG5cblx0fSxcblxuXHRwcmVsb2FkKCkge1xuXG5cdFx0Y29uc3QgcHJlbG9hZEFyciA9IHRoaXMuX2ltYWdlUmVzTGlzdC5jb25jYXQodGhpcy5fYXVkaW9SZXNMaXN0KS5jb25jYXQodGhpcy5fYW5pbWFSZXNMaXN0KTtcblx0XHQvLyBjb25zb2xlLmxvZyhwcmVsb2FkQXJyKTtcblx0XHRjYy5hc3NldE1hbmFnZXIubG9hZEFueShwcmVsb2FkQXJyLCBudWxsLCAoZiwgdCwgaXRlbSkgPT4ge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZiwgdCwgaXRlbSlcblx0XHR9LCAoZXJyLCBkYXRhKSA9PiB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIsIGRhdGEpO1xuXHRcdFx0Y29uc3QgZ3JvdW5kID0gY2MuZmluZChgQ2FudmFzL2ZyYW1lLWJvcmRlci9ncm91bmRgKTtcblx0XHRcdGNvbnN0IGdyb3VuZEJnID0gY2MuZmluZChgQ2FudmFzL2ZyYW1lLWJvcmRlci9ncm91bmQvYmdgKTtcblx0XHRcdGdyb3VuZEJnLmFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0Y29uc3QgYmFzZVJlY3QgPSB0aGlzLmRhdGEuYmdJdGVtLnJlY3Q7XG5cdFx0XHRnZXRTcHJpdGVGcmltZUJ5VXJsKHRoaXMuZGF0YS5iZ0l0ZW0udXJsLCAoc2YpID0+IHtcblx0XHRcdFx0Y29uc3QgZ3MgPSBncm91bmRCZy5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcblx0XHRcdFx0Z3Muc3ByaXRlRnJhbWUgPSBzZjtcblx0XHRcdFx0Z3JvdW5kQmcuYWN0aXZlID0gdHJ1ZTtcblxuXHRcdFx0XHRsZXQgZGJDb3VudCA9IDA7XG5cdFx0XHRcdGxldCBmaW5pc2hEYkNvdW50ID0gMFxuXHRcdFx0XHRmb3IoY29uc3QgYmxvY2sgb2YgdGhpcy5kYXRhLmhvdFpvbmVJdGVtQXJyKSB7XG5cdFx0XHRcdFx0aWYgKGJsb2NrLmdJZHggPT0gJzAnIHx8IGJsb2NrLmdJZHggPT0gJzEnKSB7XG5cdFx0XHRcdFx0XHRkYkNvdW50Kys7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcihjb25zdCBibG9jayBvZiB0aGlzLmRhdGEuaG90Wm9uZUl0ZW1BcnIpIHtcblxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdGlmIChibG9jay5nSWR4ID09ICcyJykge1xuXHRcdFx0XHRcdFx0Y29uc3QgczEgPSAoKGdyb3VuZC53aWR0aCAgLyBibG9jay5pbWdTaXplVykgKyAoZ3JvdW5kLmhlaWdodCAgLyBibG9jay5pbWdTaXplSCkpIC8gMlxuXHRcdFx0XHRcdFx0Y29uc3Qgbm9kZSA9IG5ldyBjYy5Ob2RlKCk7XG5cdFx0XHRcdFx0XHRub2RlLnBhcmVudCA9IGdyb3VuZDtcblx0XHRcdFx0XHRcdGNvbnN0IHNwciA9IG5vZGUuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSk7XG5cdFx0XHRcdFx0XHRnZXRTcHJpdGVGcmltZUJ5VXJsKGJsb2NrLnBpY191cmwsIChzZikgPT4ge1xuXHRcdFx0XHRcdFx0c3ByLnNwcml0ZUZyYW1lID0gc2Y7XG5cdFx0XHRcdFx0XHRub2RlLnNjYWxlID0gczE7XG5cdFx0XHRcdFx0XHR9KVxuXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChibG9jay5nSWR4ID09ICcwJyB8fCBibG9jay5nSWR4ID09ICcxJykge1xuXG5cdFx0XHRcdFx0XHRjb25zdCBuID0gbmV3IGNjLk5vZGUoKTtcblx0XHRcdFx0XHRcdG4uc2NhbGUgPSAwLjI1O1xuXHRcdFx0XHRcdFx0bi5wYXJlbnQgPSBncm91bmQ7XG5cdFx0XHRcdFx0XHRuLmFjdGl2ZSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHRpZiAoYmxvY2suYW5pbVR5cGUgPT0gJ3NwaW5lJykge1xuXHRcdFx0XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gbi5hZGRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xuXHRcdFx0XHRcdFx0XHRuLmlzU3BpbmUgPSB0cnVlO1xuXG5cdFx0XHRcdFx0XHRcdGxvYWRTcGluZShza2VsZXRvbiwgYmxvY2sudGV4UG5nRGF0YS5uYW1lLCB7XG5cdFx0XHRcdFx0XHRcdFx0dGV4OiBibG9jay50ZXhQbmdEYXRhLnVybCwgXG5cdFx0XHRcdFx0XHRcdFx0YXRsYXM6IGJsb2NrLnRleEpzb25EYXRhLnVybCxcblx0XHRcdFx0XHRcdFx0XHRza2U6IGJsb2NrLnNrZUpzb25EYXRhLnVybCxcblx0XHRcdFx0XHRcdFx0fSkudGhlbigoe3dpZHRoLCBoZWlnaHR9KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bi53aWR0aCA9IHdpZHRoO1xuXHRcdFx0XHRcdFx0XHRcdG4uaGVpZ2h0ID0gaGVpZ2h0O1x0XG5cdFx0XHRcdFx0XHRcdFx0bi5hY3RpdmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdC8vIGRiLnBsYXlBbmltYXRpb24oJ251bGwnLCAwKTtcblx0XHRcdFx0XHRcdFx0XHQvLyBza2VsZXRvbi5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldEFuaW1hdGlvbigwLCAnZW5sYXJnZScsIHRydWUpO1x0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5fYWxsQW5pbWF0aW9uTm9kZXMucHVzaChuKTtcblx0XHRcdFx0XHRcdFx0XHRmaW5pc2hEYkNvdW50Kys7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZmluaXNoRGJDb3VudCwgZGJDb3VudClcblx0XHRcdFx0XHRcdFx0XHRpZiAoZmluaXNoRGJDb3VudCA9PSBkYkNvdW50KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pLmNhdGNoKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRmaW5pc2hEYkNvdW50Kys7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZmluaXNoRGJDb3VudCwgZGJDb3VudClcblx0XHRcdFx0XHRcdFx0XHRpZiAoZmluaXNoRGJDb3VudCA9PSBkYkNvdW50KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGRiID0gbi5hZGRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblxuXHRcdFx0XHRcdFx0XHRsb2FkRHJhZ29uQm9uZXMoZGIsIHtcblx0XHRcdFx0XHRcdFx0XHR0ZXg6IGJsb2NrLnRleFBuZ0RhdGEudXJsLCBcblx0XHRcdFx0XHRcdFx0XHRhdGxhczogYmxvY2sudGV4SnNvbkRhdGEudXJsLFxuXHRcdFx0XHRcdFx0XHRcdHNrZTogYmxvY2suc2tlSnNvbkRhdGEudXJsLFxuXHRcdFx0XHRcdFx0XHR9KS50aGVuKCh7d2lkdGgsIGhlaWdodH0pID0+IHtcblx0XHRcdFx0XHRcdFx0XHRuLndpZHRoID0gd2lkdGg7XG5cdFx0XHRcdFx0XHRcdFx0bi5oZWlnaHQgPSBoZWlnaHQ7XHRcblx0XHRcdFx0XHRcdFx0XHRuLmFjdGl2ZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0ZGIucGxheUFuaW1hdGlvbignbnVsbCcsIDApO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuX2FsbEFuaW1hdGlvbk5vZGVzLnB1c2gobik7XG5cdFx0XHRcdFx0XHRcdFx0ZmluaXNoRGJDb3VudCsrO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGZpbmlzaERiQ291bnQsIGRiQ291bnQpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGZpbmlzaERiQ291bnQgPT0gZGJDb3VudCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkRW5kKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KS5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0ZmluaXNoRGJDb3VudCsrO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGZpbmlzaERiQ291bnQsIGRiQ291bnQpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGZpbmlzaERiQ291bnQgPT0gZGJDb3VudCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkRW5kKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XG5cblx0XHRcdFx0XHRcdGlmIChibG9jay5nSWR4ID09ICcwJykge1xuXHRcdFx0XHRcdFx0XHRjb25zdCByZWN0SW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0XHRub2RlOiBuLFxuXHRcdFx0XHRcdFx0XHRcdGF1ZGlvX3VybDogYmxvY2suYXVkaW9fdXJsICxcblx0XHRcdFx0XHRcdFx0XHRyZWN0OiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR4OiBibG9jay5yZWN0LnggLyBiYXNlUmVjdC53aWR0aCxcblx0XHRcdFx0XHRcdFx0XHRcdHk6IGJsb2NrLnJlY3QueSAvIGJhc2VSZWN0LmhlaWdodCxcblx0XHRcdFx0XHRcdFx0XHRcdHdpZHRoOiBibG9jay5yZWN0LndpZHRoIC8gYmFzZVJlY3Qud2lkdGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ6IGJsb2NrLnJlY3QuaGVpZ2h0IC8gYmFzZVJlY3QuaGVpZ2h0LFxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fZmlndXJlUG9pbnRSZWN0QXJyYXkucHVzaChyZWN0SW5mbyk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gdGhpcy5hZGRSZWN0Tm9kZUxpc3RlbmVyKGJsb2NrKTtcblx0XHRcblx0XHRcdFx0XHRcdFx0aWYgKGJsb2NrLmxhYmVsVGV4dCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGsgPSArYmxvY2subGFiZWxUZXh0ICogMTAwMDtcblx0XHRcdFx0XHRcdFx0XHRpZighaXNOYU4oaykpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuX2hpbnRzTm9kZUxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGU6IG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFmdGVyOiBrXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0XG5cdFx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEpO1xuXHRcdFx0Y29uc29sZS5sb2coJ3Jlc291cmNlIHBlcmxvYWQgZmluaXNoJyk7XG5cbi8vIDw8PDw8PDwgSEVBRFxuLy8gPT09PT09PVxuLy8gXHRcdFx0aWYgKHdpbmRvdyAmJiB3aW5kb3dbXCJhaXJcIl0pIHtcbi8vIFx0XHRcdFx0Ly8gY2MuZmluZCgnQ2FudmFzJykub3BhY2l0eSA9IDA7XG4vLyBcdFx0XHRcdHdpbmRvdy5haXIub25Db3Vyc2VJblNjcmVlbiA9IChuZXh0KSA9PiB7XG4vLyBcdFx0XHRcdFx0Ly8gY2MuZmluZCgnQ2FudmFzJykub3BhY2l0eSA9IDI1NTtcbi8vIFx0XHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcbi8vIFx0XHRcdFx0XHRuZXh0KCk7XG4vLyBcdFx0XHRcdH1cbi8vIFx0XHRcdFx0d2luZG93LmFpci5oaWRlQWlyQ2xhc3NMb2FkaW5nKCk7XG4vLyBcdFx0XHR9IGVsc2Uge1xuLy8gXHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcbi8vIFx0XHRcdH1cbi8vID4+Pj4+Pj4gMmQ0NjFlMTkxMDU3MWJjZmM2YWQ0ZGM5M2MyY2VkYWZjMjA5MjNlYVxuXG5cdFx0XHRjYy5kZWJ1Zy5zZXREaXNwbGF5U3RhdHMoZmFsc2UpO1xuXHRcdH0pO1xuXHR9LFxuXG5cblx0bG9hZEVuZCgpIHtcblx0XHRpZiAod2luZG93ICYmIHdpbmRvd1tcImFpclwiXSAmJiB3aW5kb3dbXCJhaXJcIl0uaGlkZUFpckNsYXNzTG9hZGluZykge1xuXHRcdFx0d2luZG93W1wiYWlyXCJdLmhpZGVBaXJDbGFzc0xvYWRpbmcoKTtcblx0XHR9XG5cdFx0dGhpcy5pbml0RGF0YSgpO1xuXHRcdC8vIHRoaXMuaW5pdEF1ZGlvKCk7XG5cdFx0Ly8gdGhpcy5pbml0VmlldygpO1xuXHRcdHRoaXMuaW5pdEJnKCk7XG5cdFx0Ly8gdGhpcy5pbml0TGlzdGVuZXIoKTtcblx0XHR0aGlzLmRlYnVnR3JhcGhpY3MoKTtcblx0XHR0aGlzLmNyZWF0ZVN0YXRlTWFjaGluZSgpO1xuXHR9LFxuXG5cdF9jYW50b3VjaDogbnVsbCxcblx0aW5pdERhdGEoKSB7XG5cdFx0Ly8g5omA5pyJ5YWo5bGA5Y+Y6YePIOm7mOiupOmDveaYr251bGwgXG5cdFx0dGhpcy5fY2FudG91Y2ggPSB0cnVlO1xuXHR9LFxuXG5cdC8vIGF1ZGlvQnRuOiBudWxsLFxuXHQvLyBpbml0QXVkaW8oKSB7XG5cdC8vIFx0Y29uc3QgYXVkaW9Ob2RlID0gY2MuZmluZCgnQ2FudmFzL3Jlcy9hdWRpbycpO1xuXG5cdC8vIFx0Y29uc3QgZ2V0QXVkaW9CeVJlc05hbWUgPSAocmVzTmFtZSkgPT4ge1xuXHQvLyBcdFx0cmV0dXJuIGF1ZGlvTm9kZS5nZXRDaGlsZEJ5TmFtZShyZXNOYW1lKS5nZXRDb21wb25lbnQoY2MuQXVkaW9Tb3VyY2UpO1xuXHQvLyBcdH1cblxuXHQvLyBcdHRoaXMuYXVkaW9CdG4gPSBnZXRBdWRpb0J5UmVzTmFtZSgnYnRuJyk7XG5cblx0Ly8gfSxcblxuXG5cdC8vIGluaXRWaWV3KCkge1xuXG5cdC8vIFx0Ly8gdGhpcy5pbml0QmcoKTtcblx0Ly8gXHQvLyB0aGlzLmluaXRQaWMoKTtcblx0Ly8gXHQvLyB0aGlzLmluaXRCdG4oKTtcblx0Ly8gXHR0aGlzLmluaXRJY29uKCk7XG5cdC8vIH0sXG5cblx0YWRkUmVjdE5vZGVMaXN0ZW5lcihkYXRhKSB7XG5cblxuXHRcdGNvbnN0IGJnID0gY2MuZmluZChgQ2FudmFzL2ZyYW1lLWJvcmRlci9ncm91bmQvYmdgKTtcblxuXHRcdGNvbnN0IHJhdGUgPSAoYmcuc2NhbGUgKiBiZy53aWR0aCkgLyB0aGlzLmRhdGEuYmdJdGVtLnJlY3Qud2lkdGg7XG5cblx0XHRjb25zdCByZWN0Tm9kZSA9IG5ldyBjYy5Ob2RlKCk7XG5cdFx0cmVjdE5vZGUubmFtZSA9ICdyZWN0JyArIGRhdGEuaW5kZXg7XG5cdFx0YmcuYWRkQ2hpbGQocmVjdE5vZGUpO1xuXG5cblx0XHRjb25zdCBjdHggPSByZWN0Tm9kZS5hZGRDb21wb25lbnQoY2MuR3JhcGhpY3MpO1xuXHRcdC8vIOe6ouiJsuefqeW9olxuXHRcdGN0eC5saW5lV2lkdGggPSA0O1xuXHRcdGN0eC5zdHJva2VDb2xvciA9IGNjLkNvbG9yLkJMQUNLO1xuXHRcdGN0eC5maWxsQ29sb3IgPSBjYy5Db2xvci5XSElURS5zZXRBKDEwMCk7XG5cblx0XHRjb25zdCBzY2FsZSA9IHJhdGUgLyBiZy5zY2FsZVk7XG5cblx0XHRyZWN0Tm9kZS53aWR0aCA9IGRhdGEucmVjdC53aWR0aCAqIHNjYWxlO1xuXHRcdHJlY3ROb2RlLmhlaWdodCA9IGRhdGEucmVjdC5oZWlnaHQgKiBzY2FsZTtcblx0XHRyZWN0Tm9kZS54ID0gLWJnLndpZHRoIC8gMiArIGRhdGEucmVjdC54ICogc2NhbGU7XG5cdFx0cmVjdE5vZGUueSA9IGJnLmhlaWdodCAvIDIgLSBkYXRhLnJlY3QuaGVpZ2h0ICogc2NhbGUgLSBkYXRhLnJlY3QueSAqIHNjYWxlO1xuXG5cdFx0cmVjdE5vZGUuYW5jaG9yWCA9IHJlY3ROb2RlLmFuY2hvclkgPSAwO1xuXG5cblx0XHQvLyBpZiAocGFnZURhdGEuYmdJdGVtLmlzU2hvd0RlYnVnTGluZSkge1xuXHRcdFx0Y3R4LnJlY3QoMCwgMCwgcmVjdE5vZGUud2lkdGgsIHJlY3ROb2RlLmhlaWdodCk7XG5cdFx0Ly8gfVxuXHRcdGN0eC5zdHJva2UoKTtcblx0XHRjdHguZmlsbCgpO1xuXG5cdH0sXG5cblx0aW5pdEJnKCkge1xuXHRcdGNvbnN0IGJnTm9kZSA9IGNjLmZpbmQoJ0NhbnZhcy9iZycpO1xuXHRcdGJnTm9kZS5zY2FsZSA9IHRoaXMuX21hcFNjYWxlTWF4O1xuXHRcdGNvbnNvbGUubG9nKCd0aGlzLl9tYXBTY2FsZU1heCcsIHRoaXMuX21hcFNjYWxlTWF4KTtcblx0fSxcblxuXHRcblx0XG5cblx0Lyppbml0QnRuKCkge1xuXG5cdFx0dGhpcy5jdXJQYWdlID0gMDtcblx0XHRjb25zdCBib3R0b21QYXJ0ID0gY2MuZmluZCgnQ2FudmFzL2JvdHRvbVBhcnQnKTtcblx0XHRib3R0b21QYXJ0LnpJbmRleCA9IDU7IC8vIOaPkOmrmOWxgue6p1xuXG5cdFx0Ym90dG9tUGFydC54ID0gYm90dG9tUGFydC5wYXJlbnQud2lkdGggLyAyO1xuXHRcdGJvdHRvbVBhcnQueSA9IC1ib3R0b21QYXJ0LnBhcmVudC5oZWlnaHQgLyAyO1xuXG5cdFx0Y29uc3QgbGVmdEJ0bk5vZGUgPSBib3R0b21QYXJ0LmdldENoaWxkQnlOYW1lKCdidG5fbGVmdCcpO1xuXHRcdC8v6IqC54K55Lit5re75Yqg5LqGYnV0dG9u57uE5Lu2IOWImeWPr+S7pea3u+WKoGNsaWNr5LqL5Lu255uR5ZCsXG5cdFx0bGVmdEJ0bk5vZGUub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLl9jYW50b3VjaCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5jdXJQYWdlID09IDApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5jdXJQYWdlID0gMFxuXHRcdFx0dGhpcy5sZWZ0TW92ZSgpO1xuXG5cdFx0XHQvLyDmuLjmiI/nu5PmnZ/ml7bpnIDopoHosIPnlKjov5nkuKrmlrnms5XpgJrnn6Xns7vnu5/kvZzkuJrlrozmiJBcblx0XHRcdG9uSG9tZXdvcmtGaW5pc2goKTtcblxuXHRcdFx0Y2MuYXVkaW9FbmdpbmUucGxheSh0aGlzLmF1ZGlvQnRuLmNsaXAsIGZhbHNlLCAwLjgpXG5cdFx0fSlcblxuXHRcdGNvbnN0IHJpZ2h0QnRuTm9kZSA9IGJvdHRvbVBhcnQuZ2V0Q2hpbGRCeU5hbWUoJ2J0bl9yaWdodCcpO1xuXHRcdC8v6IqC54K55Lit5re75Yqg5LqGYnV0dG9u57uE5Lu2IOWImeWPr+S7pea3u+WKoGNsaWNr5LqL5Lu255uR5ZCsXG5cdFx0cmlnaHRCdG5Ob2RlLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdGlmICghdGhpcy5fY2FudG91Y2gpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuY3VyUGFnZSA9PSAxKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5jdXJQYWdlID0gMVxuXHRcdFx0dGhpcy5yaWdodE1vdmUoKTtcblxuXHRcdFx0Y2MuYXVkaW9FbmdpbmUucGxheSh0aGlzLmF1ZGlvQnRuLmNsaXAsIGZhbHNlLCAwLjUpXG5cdFx0fSlcblx0fSwqL1xuXG5cblxuXG5cdC8vIHVwZGF0ZSAoZHQpIHt9LFxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblx0X3RpbWVvdXRJZHM6IG51bGwsXG5cdF9pbnRlcnZhbElkczogbnVsbCxcblx0Ly8g55Sf5ZG95ZGo5pyfXG5cdG9uRGVzdHJveSgpIHtcblx0XHRjb25zb2xlLmxvZygnb3AxNSBvbkRlc3Ryb3knKTtcblx0XHR0aGlzLl90aW1lb3V0SWRzLmZvckVhY2goaWQgPT4ge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KGlkKTtcblx0XHR9KTtcblx0XHR0aGlzLl9pbnRlcnZhbElkcy5mb3JFYWNoKGlkID0+IHtcblx0XHRcdGNsZWFySW50ZXJ2YWwoaWQpO1xuXHRcdH0pO1xuXHRcdHRoaXMuZ2FtZU1hY2hpbmVTZXJ2aWNlLnN0b3BDaGlsZCgpO1xuXHRcdHRoaXMuZ2FtZU1hY2hpbmVTZXJ2aWNlLnN0b3AoKTtcblx0XHRpZih3aW5kb3cuY291cnNld2FyZSAmJiB3aW5kb3cuY291cnNld2FyZS5jbG9zZU9zbW9GaW5nZXJSZWFkKSB7XG5cdFx0XHRpZiAodGhpcy5pc09wZW5lZE9zbW9GaW5nZXJSZWFkKSB7XG5cdFx0XHRcdHdpbmRvdy5jb3Vyc2V3YXJlLmNsb3NlT3Ntb0ZpbmdlclJlYWQoKVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXG5cblxuXG59KTtcbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9PUDE1L3NjZW5lL09QMTUuanMiXSwibmFtZXMiOlsicHVyZSIsImFjdGlvbnMiLCJzZW5kIiwicmFpc2UiLCJzZW5kUGFyZW50IiwiY2MiLCJDbGFzcyIsIkNvbXBvbmVudCIsInByb3BlcnRpZXMiLCJyaWdodEF1ZGlvIiwidHlwZSIsIkF1ZGlvQ2xpcCIsIndyb25nQXVkaW8iLCJsb2dvQ2F0IiwiTm9kZSIsInBsYXlBbmkiLCJpZHgiLCJuYW1lIiwib3B0aW9ucyIsInRpbWVzIiwiY2IiLCJjYWxsYmFjayIsIm5vZGUiLCJfZmlndXJlUG9pbnRSZWN0QXJyYXkiLCJkcmFnb25EaXNwbGF5IiwiZ2V0Q29tcG9uZW50IiwiZHJhZ29uQm9uZXMiLCJBcm1hdHVyZURpc3BsYXkiLCJzdGF0ZSIsInBsYXlBbmltYXRpb24iLCJvbkxvYWQiLCJfdGltZW91dElkcyIsIl9pbnRlcnZhbElkcyIsImluaXRTY2VuZURhdGEiLCJpbml0U2l6ZSIsIndpbmRvdyIsImNjYyIsIl9pbWFnZVJlc0xpc3QiLCJfYXVkaW9SZXNMaXN0IiwiX2FuaW1hUmVzTGlzdCIsIl9sYXN0RmluZ2VyUG9zaXRpb24iLCJfaGludHNOb2RlTGlzdCIsIl9hbGxBbmltYXRpb25Ob2RlcyIsInBvcyIsImRpcnR5IiwiX2Rlc2lnblNpemUiLCJfZnJhbWVTaXplIiwiX21hcFNjYWxlTWluIiwiX21hcFNjYWxlTWF4IiwiX2NvY29zU2NhbGUiLCJzY3JlZW5fc2l6ZSIsInZpZXciLCJnZXRGcmFtZVNpemUiLCJ3aWR0aCIsImhlaWdodCIsImRlc2lnbl9zaXplIiwiQ2FudmFzIiwiaW5zdGFuY2UiLCJkZXNpZ25SZXNvbHV0aW9uIiwiZiIsImZpdEhlaWdodCIsImZpdFdpZHRoIiwiZnJhbWVTaXplIiwiZ2V0RGVzaWduUmVzb2x1dGlvblNpemUiLCJzeCIsIndpblNpemUiLCJzeSIsIk1hdGgiLCJtaW4iLCJtYXgiLCJjcmVhdGVTdGF0ZU1hY2hpbmUiLCJjaGVjayIsInRhcmdldCIsImNvbmQiLCJjdHgiLCJldnQiLCJjb25zb2xlIiwibG9nIiwicXVlc3Rpb25JbmRleCIsInF1ZXN0aW9uc0NvdW50IiwiUXVlc3Rpb25TdGF0ZSIsImlkIiwiaW5pdGlhbCIsInN0YXRlcyIsImhpbnQiLCJpbnZva2UiLCJzcmMiLCJldmVudCIsInF1ZXN0aW9uUGxheVRpbWVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJxdWVzdGlvbnMiLCJhdWRpb191cmwiLCJvbkRvbmUiLCJvbkVycm9yIiwiYW5zd2VyIiwiYWZ0ZXIiLCJjb250ZXh0Iiwib25SZWNlaXZlIiwic2V0SW50ZXJ2YWwiLCJyZWdpb24iLCJyZXN1bHQiLCJjaGVja0luUmVnaW9uIiwicmVjdCIsInB1c2giLCJjbGVhckludGVydmFsIiwib24iLCJSSUdIVCIsIldST05HIiwicmlnaHQiLCJhbiIsImFjdGl2ZSIsImlzU3BpbmUiLCJza2VsZXRvbiIsInNwIiwiU2tlbGV0b24iLCJzZXRUb1NldHVwUG9zZSIsInNldFRpbWVvdXQiLCJzZXRBbmltYXRpb24iLCJkZExvZ29DYXQiLCJvbmNlIiwiRXZlbnRPYmplY3QiLCJDT01QTEVURSIsIndyb25nIiwibWF4UXVlc3Rpb25UcnlUaW1lcyIsIndyb25nRWZmZWN0IiwiaW5jbHVkZXMiLCJkYXRhIiwiUXVlc3Rpb25zQXJyYXlTdGF0dXMiLCJwbGF5IiwibmV4dCIsIkNIRUNLIiwibGVuZ3RoIiwiYmVnaW4iLCJjb3Vyc2V3YXJlIiwib3Blbk9zbW9GaW5nZXJSZWFkIiwiaXNPcGVuZWRPc21vRmluZ2VyUmVhZCIsImJlZ2luX2F1ZGlvIiwiZ3VpZGUiLCJndWlkZV9hdWRpbyIsInBsYXlpbmciLCJlbnRyeSIsImFzc2V0TWFuYWdlciIsImxvYWRSZW1vdGUiLCJwbGF5aW5nX2F1ZGlvIiwiZXJyIiwiYXVkaW9DbGlwIiwiYXVkaW9FbmdpbmUiLCJwbGF5TXVzaWMiLCJmb3JFYWNoIiwiYmxvY2siLCJleGl0Iiwic3RvcE11c2ljIiwiTkVYVCIsImVuZCIsImNsb3NlT3Ntb0ZpbmdlclJlYWQiLCJlbmRfYXVkaW8iLCJpIiwidCIsImsiLCJfYXJtYXR1cmVLZXkiLCJhZGRFdmVudExpc3RlbmVyIiwiYmVnaW5fc2VwX3RpbWUiLCJnYW1lTWFjaGluZSIsImdhbWVNYWNoaW5lU2VydmljZSIsIm9uVHJhbnNpdGlvbiIsInN0YXJ0IiwiZ2V0RGF0YSIsImJpbmQiLCJnZXREZWZhdWx0RGF0YSIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsInByZWxvYWRJdGVtIiwiYWlyIiwib3Ntb0ZpbmdlclJlYWRDYWxsYmFjayIsInJlc3VsdE9iaiIsImZpbmdlcl9wb3NfaW5fcGFnZSIsInAiLCJ4IiwieSIsImRlYnVnUG9pbnRlciIsImlzRGVidWciLCJyIiwidyIsImgiLCJmdW5jIiwibWlkZGxlTGF5ZXIiLCJmaW5kIiwibWlkZGxlTGF5ZXJDb21wb25lbnQiLCJhZGRQcmVsb2FkSW1hZ2UiLCJhZGRQcmVsb2FkQXVkaW8iLCJhZGRQcmVsb2FkQW5pbWEiLCJwcmVsb2FkIiwidXJsIiwiYmdJdGVtIiwiaG90Wm9uZUl0ZW1BcnIiLCJxIiwiZ0lkeCIsInRleFBuZ0RhdGEiLCJwaWNfdXJsIiwicHJlcGFyZUF1ZGlvQ2xpcCIsImtleSIsIndyb25nX2F1ZGlvIiwicmlnaHRfYXVkaW8iLCJ3cm9uZ19hdWRpbzEiLCJ3cm9uZ19hdWRpbzIiLCJib3hEZWJ1Z2dlciIsIlBPSU5URVJfTk9ERSIsInBhcmVudCIsImFkZENvbXBvbmVudCIsIkdyYXBoaWNzIiwiZ3JhcCIsImNsZWFyIiwiZ3JvdW5kIiwiYmFzZVciLCJiYXNlSCIsInB4IiwicHkiLCJwbiIsImZpbGxDb2xvciIsImNvbG9yIiwiY2lyY2xlIiwiZmlsbCIsInN0cm9rZSIsImRlYnVnR3JhcGhpY3MiLCJjYW52YXMiLCJiZ1ciLCJiZ0giLCJzY2FsZVgiLCJzY2FsZVkiLCJhZGRlZCIsImFyZWEiLCJkbiIsImxibE5vZGUiLCJsYmwiLCJMYWJlbCIsInN0cmluZyIsInNrZUpzb25EYXRhIiwic3Vic3RyaW5nIiwiZyIsImIiLCJyeCIsInJ5IiwicnciLCJyaCIsImZpbGxSZWN0IiwicHJlbG9hZEFyciIsImNvbmNhdCIsImxvYWRBbnkiLCJpdGVtIiwiZ3JvdW5kQmciLCJiYXNlUmVjdCIsInNmIiwiZ3MiLCJTcHJpdGUiLCJzcHJpdGVGcmFtZSIsImRiQ291bnQiLCJmaW5pc2hEYkNvdW50IiwiczEiLCJpbWdTaXplVyIsImltZ1NpemVIIiwic3ByIiwic2NhbGUiLCJuIiwiYW5pbVR5cGUiLCJ0ZXgiLCJhdGxhcyIsInRleEpzb25EYXRhIiwic2tlIiwidGhlbiIsImxvYWRFbmQiLCJkYiIsInJlY3RJbmZvIiwibGFiZWxUZXh0IiwiaXNOYU4iLCJkZWJ1ZyIsInNldERpc3BsYXlTdGF0cyIsImhpZGVBaXJDbGFzc0xvYWRpbmciLCJpbml0RGF0YSIsImluaXRCZyIsIl9jYW50b3VjaCIsImFkZFJlY3ROb2RlTGlzdGVuZXIiLCJiZyIsInJhdGUiLCJyZWN0Tm9kZSIsImluZGV4IiwiYWRkQ2hpbGQiLCJsaW5lV2lkdGgiLCJzdHJva2VDb2xvciIsIkNvbG9yIiwiQkxBQ0siLCJXSElURSIsInNldEEiLCJhbmNob3JYIiwiYW5jaG9yWSIsIkJ1dHRvbiIsIl94IiwiX3kiLCJfdyIsIl9oIiwiYmdOb2RlIiwib25EZXN0cm95IiwiY2xlYXJUaW1lb3V0Iiwic3RvcENoaWxkIiwic3RvcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztJQUNRQSxPQUFvQ0MsZ0JBQXBDRDtJQUFPRSxPQUE2QkQsZ0JBQTdCQztJQUFNQyxRQUF1QkYsZ0JBQXZCRTtJQUFPQyxhQUFnQkgsZ0JBQWhCRztBQUc1QkMsRUFBRSxDQUFDQyxLQUFILENBQVM7QUFFUixhQUFTRCxFQUFFLENBQUNFLFNBRko7QUFJUkMsRUFBQUEsVUFBVSxFQUFFO0FBQ1g7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUUsSUE3bkNMO0FBOG5DUkMsRUFBQUEsWUFBWSxFQUFFLElBOW5DTjtBQStuQ1I7QUFDQStRLEVBQUFBLFNBaG9DUSx1QkFnb0NJO0FBQ1huTyxJQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxnQkFBWjs7QUFDQSxTQUFLOUMsV0FBTCxDQUFpQnVILE9BQWpCLENBQXlCLFVBQUFyRSxFQUFFLEVBQUk7QUFDOUIrTixNQUFBQSxZQUFZLENBQUMvTixFQUFELENBQVo7QUFDQSxLQUZEOztBQUdBLFNBQUtqRCxZQUFMLENBQWtCc0gsT0FBbEIsQ0FBMEIsVUFBQXJFLEVBQUUsRUFBSTtBQUMvQnlCLE1BQUFBLGFBQWEsQ0FBQ3pCLEVBQUQsQ0FBYjtBQUNBLEtBRkQ7O0FBR0EsU0FBS29GLGtCQUFMLENBQXdCNEksU0FBeEI7QUFDQSxTQUFLNUksa0JBQUwsQ0FBd0I2SSxJQUF4Qjs7QUFDQSxRQUFHL1EsTUFBTSxDQUFDb0csVUFBUCxJQUFxQnBHLE1BQU0sQ0FBQ29HLFVBQVAsQ0FBa0JxQixtQkFBMUMsRUFBK0Q7QUFDOUQsVUFBSSxLQUFLbkIsc0JBQVQsRUFBaUM7QUFDaEN0RyxRQUFBQSxNQUFNLENBQUNvRyxVQUFQLENBQWtCcUIsbUJBQWxCO0FBQ0E7QUFDRDtBQUNEO0FBL29DTyxDQUFUIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvbkhvbWV3b3JrRmluaXNoLCBSYW5kb21JbnQsIHBsYXlBdWRpb0J5VXJsLCBsb2FkRHJhZ29uQm9uZXMsIGdldFNwcml0ZUZyaW1lQnlVcmwsIGxvYWRTcGluZSB9IGZyb20gXCIuLi9zY3JpcHQvdXRpbFwiO1xuaW1wb3J0IHsgZGVmYXVsdERhdGEgfSBmcm9tIFwiLi4vc2NyaXB0L2RlZmF1bHREYXRhXCI7XG5pbXBvcnQgeyBhc3NpZ24sIGNyZWF0ZU1hY2hpbmUsIGludGVycHJldCwgYWN0aW9ucywgZm9yd2FyZFRvLCBtYXRjaGVzU3RhdGUgIH0gZnJvbSBcIi4uL3NjcmlwdC94c3RhdGVcIjtcbmNvbnN0IHsgcHVyZSAsIHNlbmQsIHJhaXNlLCBzZW5kUGFyZW50ICB9ID0gYWN0aW9ucztcblxuXG5jYy5DbGFzcyh7XG5cblx0ZXh0ZW5kczogY2MuQ29tcG9uZW50LFxuXG5cdHByb3BlcnRpZXM6IHtcblx0XHQvKmFudDoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRhcHBsZToge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRiaXJkOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGNhcjoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRjYXQ6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0Y293OiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGR1Y2s6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0ZWdnOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGZhcm1lcjoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLk5vZGUsXG5cdFx0fSxcblx0XHRmaXNoOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGdpcmw6IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5Ob2RlLFxuXHRcdH0sXG5cdFx0aGVuOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LFxuXHRcdGhvdXNlOiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZSxcblx0XHR9LCovXG5cdFx0cmlnaHRBdWRpbzoge1xuXHRcdFx0ZGVmYXVsdDogbnVsbCxcblx0XHRcdHR5cGU6IGNjLkF1ZGlvQ2xpcCxcblx0XHR9LFxuXHRcdHdyb25nQXVkaW86IHtcblx0XHRcdGRlZmF1bHQ6IG51bGwsXG5cdFx0XHR0eXBlOiBjYy5BdWRpb0NsaXAsXG5cdFx0fSxcblx0XHRsb2dvQ2F0OiB7XG5cdFx0XHRkZWZhdWx0OiBudWxsLFxuXHRcdFx0dHlwZTogY2MuTm9kZVxuXHRcdH1cblxuXHR9LFxuXG5cdHBsYXlBbmkoaWR4LCBuYW1lLCBvcHRpb25zKSB7XG5cdFx0Y29uc3QgdGltZXMgPSAob3B0aW9ucyAmJiBvcHRpb25zLnRpbWVzKSB8fCAxO1xuXHRcdGNvbnN0IGNiID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5jYWxsYmFjaykgfHwgbnVsbDtcblx0XHQvLyBjb25zdCBjYXQgPSBjYy5maW5kKGBDYW52YXMvZnJhbWUtYm9yZGVyL2dyb3VuZC8ke25vZGV9YCk7XG5cdFx0Y29uc3Qgbm9kZSA9IHRoaXMuX2ZpZ3VyZVBvaW50UmVjdEFycmF5W2lkeF0ubm9kZVxuXHRcdHZhciBkcmFnb25EaXNwbGF5ID0gbm9kZS5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblxuXHRcdGNvbnN0IHN0YXRlID0gZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKG5hbWUsIHRpbWVzKTtcblx0XHQvLyBkcmFnb25EaXNwbGF5LmFkZEV2ZW50TGlzdGVuZXIoZHJhZ29uQm9uZXMuRXZlbnRPYmplY3QuQ09NUExFVEUsIChldmVudCkgPT4ge1xuXHRcdC8vIFx0Ly9UT0RPIOi/memHjOWGmeinpuWPkeS6i+S7tlxuXHRcdC8vIFx0Ly9ldmVudC5uYW1l5Li65LqL5Lu25ZCN56ewXG5cdFx0Ly8gXHRjb25zb2xlLmxvZyhldmVudC5uYW1lKVxuXHRcdC8vIH0sIHRoaXMpO1xuXHRcdC8vIGFuaW1hdGlvbkRpc3BsYXkuYWRkRXZlbnRMaXN0ZW5lcihkcmFnb25Cb25lcy5FdmVudE9iamVjdC5DT01QTEVURSwgY29tcGxldGVDYWxsYmFjayk7XG5cdFx0cmV0dXJuIHN0YXRlO1xuXHR9LFxuXHQvLyDnlJ/lkb3lkajmnJ8gb25Mb2FkXG5cdG9uTG9hZCgpIHtcblx0XHR0aGlzLl90aW1lb3V0SWRzID0gW107XG5cdFx0dGhpcy5faW50ZXJ2YWxJZHMgPSBbXTtcblx0XHR0aGlzLmluaXRTY2VuZURhdGEoKTtcblx0XHR0aGlzLmluaXRTaXplKCk7XG5cdFx0d2luZG93LmNjYyA9IHRoaXM7XG5cdH0sXG5cblx0X2ltYWdlUmVzTGlzdDogbnVsbCxcblx0X2F1ZGlvUmVzTGlzdDogbnVsbCxcblx0X2FuaW1hUmVzTGlzdDogbnVsbCxcblxuXHRfbGFzdEZpbmdlclBvc2l0aW9uOiBudWxsLFxuXG5cdF9oaW50c05vZGVMaXN0IDogbnVsbCxcblx0X2ZpZ3VyZVBvaW50UmVjdEFycmF5OiBudWxsLFxuXG5cdF9hbGxBbmltYXRpb25Ob2RlczogbnVsbCxcblxuXHRpbml0U2NlbmVEYXRhKCkge1xuXHRcdHRoaXMuX2ltYWdlUmVzTGlzdCA9IFtdO1xuXHRcdHRoaXMuX2F1ZGlvUmVzTGlzdCA9IFtdO1xuXHRcdHRoaXMuX2FuaW1hUmVzTGlzdCA9IFtdO1xuXG5cdFx0dGhpcy5fYWxsQW5pbWF0aW9uTm9kZXMgPSBbXTtcblx0XHR0aGlzLl9oaW50c05vZGVMaXN0ID0gW107XG5cdFx0dGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uPSB7XG5cdFx0XHRwb3M6IG51bGwsXG5cdFx0XHRkaXJ0eTogZmFsc2Vcblx0XHR9O1xuXHRcdHRoaXMuX2ZpZ3VyZVBvaW50UmVjdEFycmF5ID0gW107XG5cdH0sXG5cblx0X2Rlc2lnblNpemU6IG51bGwsICAvLyDorr7orqHliIbovqjnjodcblx0X2ZyYW1lU2l6ZTogbnVsbCwgIC8vIOWxj+W5leWIhui+qOeOh1xuXHRfbWFwU2NhbGVNaW46IG51bGwsICAvLyDlnLrmma/kuK3luLjnlKjnvKnmlL7vvIjlj5blpKflgLzvvIlcblx0X21hcFNjYWxlTWF4OiBudWxsLCAgLy8g5Zy65pmv5Lit5bi455So57yp5pS+77yI5Y+W5bCP5YC877yJXG5cdF9jb2Nvc1NjYWxlOiBudWxsLCAgLy8gY29jb3Mg6Ieq57yp5pS+IO+8iOi+g+WwkeeUqOWIsO+8iVxuXHRcblx0aW5pdFNpemUoKSB7XG5cdFx0Ly8g5rOo5oSPY2Mud2luU2l6ZeWPquacieWcqOmAgumFjeWQjijkv67mlLlmaXRIZWlnaHQvZml0V2lkdGjlkI4p5omN6IO96I635Y+W5Yiw5q2j56Gu55qE5YC8LOWboOatpOS9v+eUqGNjLmdldEZyYW1lU2l6ZSgp5p2l6I635Y+W5Yid5aeL55qE5bGP5bmV5aSn5bCPXG5cdFx0bGV0IHNjcmVlbl9zaXplID0gY2Mudmlldy5nZXRGcmFtZVNpemUoKS53aWR0aCAvIGNjLnZpZXcuZ2V0RnJhbWVTaXplKCkuaGVpZ2h0XG5cdFx0bGV0IGRlc2lnbl9zaXplID0gY2MuQ2FudmFzLmluc3RhbmNlLmRlc2lnblJlc29sdXRpb24ud2lkdGggLyBjYy5DYW52YXMuaW5zdGFuY2UuZGVzaWduUmVzb2x1dGlvbi5oZWlnaHRcblx0XHRsZXQgZiA9IHNjcmVlbl9zaXplID49IGRlc2lnbl9zaXplXG5cdFx0Y2MuQ2FudmFzLmluc3RhbmNlLmZpdEhlaWdodCA9IGZcblx0XHRjYy5DYW52YXMuaW5zdGFuY2UuZml0V2lkdGggPSAhZlxuXG5cdFx0Y29uc3QgZnJhbWVTaXplID0gY2Mudmlldy5nZXRGcmFtZVNpemUoKTtcblx0XHR0aGlzLl9mcmFtZVNpemUgPSBmcmFtZVNpemU7XG5cblx0XHR0aGlzLl9kZXNpZ25TaXplID0gY2Mudmlldy5nZXREZXNpZ25SZXNvbHV0aW9uU2l6ZSgpO1xuXG5cdFx0bGV0IHN4ID0gY2Mud2luU2l6ZS53aWR0aCAvIGZyYW1lU2l6ZS53aWR0aDtcblx0XHRsZXQgc3kgPSBjYy53aW5TaXplLmhlaWdodCAvIGZyYW1lU2l6ZS5oZWlnaHQ7XG5cdFx0dGhpcy5fY29jb3NTY2FsZSA9IE1hdGgubWluKHN4LCBzeSk7XG5cblx0XHRzeCA9IGZyYW1lU2l6ZS53aWR0aCAvIHRoaXMuX2Rlc2lnblNpemUud2lkdGg7XG5cdFx0c3kgPSBmcmFtZVNpemUuaGVpZ2h0IC8gdGhpcy5fZGVzaWduU2l6ZS5oZWlnaHQ7XG5cdFx0dGhpcy5fbWFwU2NhbGVNaW4gPSBNYXRoLm1pbihzeCwgc3kpICogdGhpcy5fY29jb3NTY2FsZTtcblx0XHR0aGlzLl9tYXBTY2FsZU1heCA9IE1hdGgubWF4KHN4LCBzeSkgKiB0aGlzLl9jb2Nvc1NjYWxlO1xuXHR9LFxuXHRjcmVhdGVTdGF0ZU1hY2hpbmUoKXtcblx0XHRjb25zdCBjaGVjayA9ICBbXG5cdFx0XHRcdFx0XHRcdHsgdGFyZ2V0OiAnI2dhbWUuZW5kJywgY29uZDogKGN0eCwgZXZ0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ1thbnN3ZXIgTkVYVF0gY2hlY2sgaWYgZW5kJywgY3R4LnF1ZXN0aW9uSW5kZXggPj0gY3R4LnF1ZXN0aW9uc0NvdW50IC0gMSk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGN0eC5xdWVzdGlvbkluZGV4ID49IGN0eC5xdWVzdGlvbnNDb3VudCAtMVxuXG5cdFx0XHRcdFx0XHRcdH0gfSxcbiAgICAgICAgXHRcdFx0XHRcdHsgdGFyZ2V0OiAnaGludCcgfSAvLyByZWVudGVyICdoaW50JyBzdGF0ZVxuXHRcdFx0XHRcdFx0XVxuXHRcdGNvbnN0IFF1ZXN0aW9uU3RhdGUgPSB7XG5cdFx0XHRpZDogJ3F1ZXN0aW9uJyxcblx0XHRcdGluaXRpYWw6ICdoaW50Jyxcblx0XHRcdHN0YXRlczoge1xuXHRcdFx0XHRoaW50OiB7XG5cdFx0XHRcdFx0aW52b2tlOiB7XG5cdFx0XHRcdFx0XHRzcmM6IChjdHgsIGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbaGludF0gcGxheSBxdWVzdGlvbiAke2N0eC5xdWVzdGlvbkluZGV4fTogJHtjdHgucXVlc3Rpb25QbGF5VGltZXMgfSBhdWRpb2ApO1xuXHRcdFx0XHRcdFx0XHRjdHgucXVlc3Rpb25QbGF5VGltZXMgKz0gMTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdHBsYXlBdWRpb0J5VXJsKGN0eC5xdWVzdGlvbnNbY3R4LnF1ZXN0aW9uSW5kZXhdLmF1ZGlvX3VybCwgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2hpbnQgZmluaXNoJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKClcblx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG9uRG9uZTogJ2Fuc3dlcicsXG5cdFx0XHRcdFx0XHRvbkVycm9yOiAnYW5zd2VyJ1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0YW5zd2VyOiB7XG5cdFx0XHRcdFx0YWZ0ZXI6IHtcblx0XHRcdFx0XHRcdDgwMDA6IFtcbiAgICAgICAgXHRcdFx0XHRcdHsgXG5cdFx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnd3JvbmcnLFxuXHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHR9IC8vIHJlZW50ZXIgJ2hpbnQnIHN0YXRlXG5cdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdGludm9rZToge1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRzcmM6IChjb250ZXh0LCBldmVudCkgPT4gKGNhbGxiYWNrLCBvblJlY2VpdmUpID0+IHtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdbYW5zd2VyXSB0aGlua2luZyBhbmQgcGxheWluZycpO1xuXHRcdFx0XHRcdFx0XHQvLyBjaGVjayBldmVyeSBzZWNvbmRcblx0XHRcdFx0XHRcdFx0Y29uc3QgaWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCF0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24uZGlydHkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgcmVnaW9uID0gY29udGV4dC5xdWVzdGlvbnNbY29udGV4dC5xdWVzdGlvbkluZGV4XTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmNoZWNrSW5SZWdpb24ocmVnaW9uLnJlY3QpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChyZXN1bHQgPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ1tHZW5pc2UgSlNdIGNoZWNrSW5SZWdpb24nICsgcmVzdWx0KVxuXHRcdFx0XHRcdFx0XHRcdGlmIChyZXN1bHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNhbGxiYWNrKCdSSUdIVCcpXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNhbGxiYWNrKCdXUk9ORycpXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9LCAxMDApO1xuXHRcdFx0XHRcdFx0XHR0aGlzLl9pbnRlcnZhbElkcy5wdXNoKGlkKTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0Ly8gUGVyZm9ybSBjbGVhbnVwXG5cdFx0XHRcdFx0XHRcdHJldHVybiAoKSA9PiBjbGVhckludGVydmFsKGlkKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG9uOiB7XG5cdFx0XHRcdFx0XHRSSUdIVDoge1xuXHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICdyaWdodCcsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0V1JPTkc6IHtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnd3JvbmcnLFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0XG5cdFx0XHRcdHJpZ2h0OiB7XG5cdFx0XHRcdFx0aW52b2tlOiB7XG5cdFx0XHRcdFx0XHRzcmM6IChjb250ZXh0LCBldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24ucG9zID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0dGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uLmRpcnR5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2Fuc3dlciByaWdodCcpO1xuXHRcdFx0XHRcdFx0XHRcdC8vIHRoaXMucGxheUFuaShjb250ZXh0LnF1ZXN0aW9uSW5kZXgsICdub3JtYWwnKVxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGFuID0gY29udGV4dC5xdWVzdGlvbnNbY29udGV4dC5xdWVzdGlvbkluZGV4XS5ub2RlO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdpbiByaWdodCAnICsgKHR5cGVvZiBhbikpXG5cdFx0XHRcdFx0XHRcdFx0YW4uYWN0aXZlID0gdHJ1ZTtcblxuXHRcdFx0XHRcdFx0XHRcdGlmIChhbi5pc1NwaW5lKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gYW4uZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKTtcblx0XHRcdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldFRvU2V0dXBQb3NlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2tlbGV0b24uc2V0QW5pbWF0aW9uKDAsICdub3JtYWwnLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0sIDEpO1xuXHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRyYWdvbkRpc3BsYXkgPSBhbi5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdFx0XHRcdGRyYWdvbkRpc3BsYXkucGxheUFuaW1hdGlvbignbm9ybWFsJywgMCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgZGRMb2dvQ2F0ID0gdGhpcy5sb2dvQ2F0LmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpXG5cdFx0XHRcdFx0XHRcdFx0ZGRMb2dvQ2F0LnBsYXlBbmltYXRpb24oJ3JpZ2h0JywgMSlcblx0XHRcdFx0XHRcdFx0XHRkZExvZ29DYXQub25jZShkcmFnb25Cb25lcy5FdmVudE9iamVjdC5DT01QTEVURSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvZ29DYXQuZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSkucGxheUFuaW1hdGlvbignbm9ybWFsJywgMClcblx0XHRcdFx0XHRcdFx0XHR9LCB0aGlzKVxuXG5cdFx0XHRcdFx0XHRcdFx0cGxheUF1ZGlvQnlVcmwodGhpcy5yaWdodEF1ZGlvLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKClcblx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRvbkRvbmU6IHtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnI1F1ZXN0aW9uc0FycmF5Lm5leHQnLFxuXHRcdFx0XHRcdFx0XHRhY3Rpb25zOiByYWlzZSgnQ0hFQ0snKVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG9uRXJyb3I6IHtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnI1F1ZXN0aW9uc0FycmF5Lm5leHQnLFxuXHRcdFx0XHRcdFx0XHRhY3Rpb25zOiByYWlzZSgnQ0hFQ0snKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0d3Jvbmc6e1xuXHRcdFx0XHRcdGludm9rZToge1xuXHRcdFx0XHRcdFx0c3JjOiAoY29udGV4dCwgZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uLnBvcyA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5kaXJ0eSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdhbnN3ZXIgd3JvbmcnLCBjb250ZXh0LnF1ZXN0aW9uSW5kZXgsIGNvbnRleHQucXVlc3Rpb25QbGF5VGltZXMgLCBjb250ZXh0Lm1heFF1ZXN0aW9uVHJ5VGltZXMpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRkTG9nb0NhdCA9IHRoaXMubG9nb0NhdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KVxuXHRcdFx0XHRcdFx0XHRcdGRkTG9nb0NhdC5wbGF5QW5pbWF0aW9uKCd3cm9uZycsIDEpXG5cdFx0XHRcdFx0XHRcdFx0ZGRMb2dvQ2F0Lm9uY2UoZHJhZ29uQm9uZXMuRXZlbnRPYmplY3QuQ09NUExFVEUsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2dvQ2F0LmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpLnBsYXlBbmltYXRpb24oJ25vcm1hbCcsIDApXG5cdFx0XHRcdFx0XHRcdFx0fSwgdGhpcyk7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHdyb25nRWZmZWN0ID0gdGhpcy53cm9uZ0F1ZGlvO1xuXHRcdFx0XHRcdFx0XHRcdC8vIOesrOS4gOWSjOesrOS6jOmimOeahOaPkOekuumfs1xuXHRcdFx0XHRcdFx0XHRcdGlmIChbMCwgMV0uaW5jbHVkZXMoY29udGV4dC5xdWVzdGlvbkluZGV4KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0d3JvbmdFZmZlY3QgPSB0aGlzLmRhdGFbYHdyb25nX2F1ZGlvJHtjb250ZXh0LnF1ZXN0aW9uUGxheVRpbWVzfWBdXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIOmdnuesrOS4gOWSjOesrOS6jOmimO+8jOW5tuS4lOWBmuesrOS6jOmBjeeahOaPkOekuumfs1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNvbnRleHQucXVlc3Rpb25QbGF5VGltZXMgPT0gMikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR3cm9uZ0VmZmVjdCA9IHRoaXMuZGF0YVtgd3JvbmdfYXVkaW8ke2NvbnRleHQucXVlc3Rpb25QbGF5VGltZXN9YF1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cblxuXHRcdFx0XHRcdFx0XHRcdGlmIChjb250ZXh0LnF1ZXN0aW9uUGxheVRpbWVzID49IGNvbnRleHQubWF4UXVlc3Rpb25UcnlUaW1lcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgYW4gPSBjb250ZXh0LnF1ZXN0aW9uc1tjb250ZXh0LnF1ZXN0aW9uSW5kZXhdLm5vZGU7XG5cdFx0XHRcdFx0XHRcdFx0XHRhbi5hY3RpdmUgPSB0cnVlO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYW4uaXNTcGluZSkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gYW4uZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2tlbGV0b24uc2V0VG9TZXR1cFBvc2UoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2tlbGV0b24uc2V0QW5pbWF0aW9uKDAsICdub3JtYWwnLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgMSk7XG5cdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgZHJhZ29uRGlzcGxheSA9IGFuLmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24oJ25vcm1hbCcsIDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnc2hvdyBhbmltYXRpb24nLCBhbi5hY3RpdmUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRwbGF5QXVkaW9CeVVybCh3cm9uZ0VmZmVjdCwgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNvbnRleHQucXVlc3Rpb25QbGF5VGltZXMgPj0gY29udGV4dC5tYXhRdWVzdGlvblRyeVRpbWVzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGNvbnN0IGFuID0gY29udGV4dC5xdWVzdGlvbnNbY29udGV4dC5xdWVzdGlvbkluZGV4XS5ub2RlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhbi5hY3RpdmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zdCBkcmFnb25EaXNwbGF5ID0gYW4uZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGRyYWdvbkRpc3BsYXkucGxheUFuaW1hdGlvbignbm9ybWFsJywgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdzaG93IGFuaW1hdGlvbicsIGFuLmFjdGl2ZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdCgpXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKClcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRvbkRvbmU6IHtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnaGludCcsXG5cdFx0XHRcdFx0XHRcdC8vIGFjdGlvbnM6IHJhaXNlKCdDSEVDSycpXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25FcnJvcjoge1xuXHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICcjUXVlc3Rpb25zQXJyYXkubmV4dCcsXG5cdFx0XHRcdFx0XHRcdGFjdGlvbnM6IHJhaXNlKCdDSEVDSycpXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCBRdWVzdGlvbnNBcnJheVN0YXR1cyA9IHtcblx0XHRcdGlkOiAnUXVlc3Rpb25zQXJyYXknLFxuXHRcdFx0aW5pdGlhbDogJ3BsYXknLFxuXHRcdFx0c3RhdGVzOiB7XG5cdFx0XHRcdHBsYXk6IHtcblx0XHRcdFx0XHQuLi5RdWVzdGlvblN0YXRlXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG5leHQ6IHtcblx0XHRcdFx0XHRvbjoge1xuXHRcdFx0XHRcdFx0Q0hFQ0s6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHRhcmdldDogJyNnYW1lLmVuZCcsXG5cdFx0XHRcdFx0XHRcdFx0Y29uZDogKGN0eCwgZXZ0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjdHgucXVlc3Rpb25JbmRleCArPSAxO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3R4LnF1ZXN0aW9uUGxheVRpbWVzID0gMFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJyNnYW1lLmVuZCcsICBjdHgucXVlc3Rpb25JbmRleCA+PSBjdHgucXVlc3Rpb25zQ291bnQgKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGN0eC5xdWVzdGlvbkluZGV4ID49IGN0eC5xdWVzdGlvbnNDb3VudFxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e3RhcmdldDogJ3BsYXknfVxuXHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdFxuXHRcdGNvbnN0IHN0YXRlID0ge1xuXHRcdFx0aWQ6ICdnYW1lJyxcblx0XHRcdGluaXRpYWw6ICdiZWdpbicsXG5cdFx0XHRjb250ZXh0OiB7XG5cdFx0XHRcdHF1ZXN0aW9uSW5kZXg6IDAsXG5cdFx0XHRcdHF1ZXN0aW9uUGxheVRpbWVzOiAwLFxuXHRcdFx0XHRtYXhRdWVzdGlvblRyeVRpbWVzOiAyLFxuXHRcdFx0XHRxdWVzdGlvbnNDb3VudDogdGhpcy5fZmlndXJlUG9pbnRSZWN0QXJyYXkubGVuZ3RoLFxuXHRcdFx0XHRxdWVzdGlvbnM6IHRoaXMuX2ZpZ3VyZVBvaW50UmVjdEFycmF5LFxuXHRcdFx0fSxcblx0XHRcdHN0YXRlczoge1xuXHRcdFx0XHRiZWdpbjoge1xuXHRcdFx0XHRcdGludm9rZToge1xuXHRcdFx0XHRcdFx0c3JjOiAoY3R4KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnYW1lIGJlZ2luIDEnKTtcblx0XHRcdFx0XHRcdFx0aWYod2luZG93LmNvdXJzZXdhcmUgJiYgd2luZG93LmNvdXJzZXdhcmUub3Blbk9zbW9GaW5nZXJSZWFkKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5pc09wZW5lZE9zbW9GaW5nZXJSZWFkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cuY291cnNld2FyZS5vcGVuT3Ntb0ZpbmdlclJlYWQoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XCJwYWdlX2lkXCI6IDI3LFxuXHRcdFx0XHRcdFx0XHRcdFx0XCJib29rX2lkXCI6IFwib3B3MVwiXG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR2YXIgZHJhZ29uRGlzcGxheSA9IHRoaXMubG9nb0NhdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSBkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24oJ2JlZ2luJywgMCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSxyZWplY3QpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRwbGF5QXVkaW9CeVVybCh0aGlzLmRhdGEuYmVnaW5fYXVkaW8sICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnYW1lIGJlZ2luIGF1ZGlvIGZpbmlzaCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgpXG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25Eb25lOiAgJ2d1aWRlJyxcblx0XHRcdFx0XHRcdG9uRXJyb3I6ICdndWlkZSdcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdFxuXHRcdFx0XHRndWlkZTp7XG5cdFx0XHRcdFx0aW52b2tlOiB7XG5cdFx0XHRcdFx0XHRzcmM6IChjdHgpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHBsYXlBdWRpb0J5VXJsKHRoaXMuZGF0YS5ndWlkZV9hdWRpbywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2dhbWUgZ3VpZGUgYXVkaW8gZmluaXNoJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZWplY3QoKVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG9uRG9uZTogICdwbGF5aW5nJyxcblx0XHRcdFx0XHRcdG9uRXJyb3I6ICdwbGF5aW5nJ1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHBsYXlpbmc6IHtcblx0XHRcdFx0XHRlbnRyeTogKGN0eCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2VudHJ5IHBsYXkgc3RhZ2UnKTtcblx0XHRcdFx0XHRcdHZhciBkcmFnb25EaXNwbGF5ID0gdGhpcy5sb2dvQ2F0LmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpO1xuXHRcdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSBkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24oJ25vcm1hbCcsIDApO1xuXHRcdFx0XHRcdFx0Y2MuYXNzZXRNYW5hZ2VyLmxvYWRSZW1vdGUodGhpcy5kYXRhLnBsYXlpbmdfYXVkaW8sIChlcnIsIGF1ZGlvQ2xpcCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjYy5hdWRpb0VuZ2luZS5wbGF5TXVzaWMoYXVkaW9DbGlwLCB0cnVlLCAwLjgpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjdHgucXVlc3Rpb25zLmZvckVhY2goKGJsb2NrKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGJsb2NrLm5vZGUuYWN0aXZlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGV4aXQ6ICgpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdleGl0IHBsYXkgc3RhZ2UnKTtcblx0XHRcdFx0XHRcdGNjLmF1ZGlvRW5naW5lLnN0b3BNdXNpYygpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0b246IHtcblx0XHRcdFx0XHRcdE5FWFQ6ICdlbmQnXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQvLyAuLi5RdWVzdGlvbnNTdGF0ZXNcblx0XHRcdFx0XHQuLi5RdWVzdGlvbnNBcnJheVN0YXR1c1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRlbmQ6IHtcblx0XHRcdFx0XHRcdGVudHJ5OiAoY3R4LCBldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2FtZSBlbmQnKTtcblx0XHRcdFx0XHRcdFx0dmFyIGRyYWdvbkRpc3BsYXkgPSB0aGlzLmxvZ29DYXQuZ2V0Q29tcG9uZW50KGRyYWdvbkJvbmVzLkFybWF0dXJlRGlzcGxheSk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHN0YXRlID0gZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdmaW5pc2gnLCAwKTtcblx0XHRcdFx0XHRcdFx0aWYod2luZG93LmNvdXJzZXdhcmUgJiYgd2luZG93LmNvdXJzZXdhcmUuY2xvc2VPc21vRmluZ2VyUmVhZCkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaXNPcGVuZWRPc21vRmluZ2VyUmVhZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy5jb3Vyc2V3YXJlLmNsb3NlT3Ntb0ZpbmdlclJlYWQoKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHBsYXlBdWRpb0J5VXJsKHRoaXMuZGF0YS5lbmRfYXVkaW8sICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2FtZSBmaW5pc2gnKTtcblx0XHRcdFx0XHRcdFx0XHRvbkhvbWV3b3JrRmluaXNoKCk7XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdC8vIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSxyZWplY3QpID0+IHtcblx0XHRcdFx0XHRcdFx0Ly8gXHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdFx0Ly8gXHRcdGNvbnNvbGUubG9nKCdoaW50IGZpbmlzaCcpO1xuXHRcdFx0XHRcdFx0XHQvLyBcdFx0cmVzb2x2ZSgpXG5cdFx0XHRcdFx0XHRcdC8vIFx0fSwgMjAwMClcblx0XHRcdFx0XHRcdFx0Ly8gfSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcblx0XHRcdFx0fSxcblx0XHRcdH1cblx0XHR9O1xuXHRcdGNvbnN0IGFmdGVyID0ge307XG5cdFx0Zm9yKGxldCBpID0gMCA7aSAgPCB0aGlzLl9oaW50c05vZGVMaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCB0ID0gdGhpcy5faGludHNOb2RlTGlzdFtpXS5ub2RlO1xuXHRcdFx0Y29uc3QgayA9IHRoaXMuX2hpbnRzTm9kZUxpc3RbaV0uYWZ0ZXI7XG5cdFx0XHRhZnRlcltrXT0ge1xuXHRcdFx0XHRhY3Rpb25zOiAoKSA9PiB7XG5cblx0XHRcdFx0XHRpZiAodC5pc1NwaW5lKSB7XG5cblx0XHRcdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gdC5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRza2VsZXRvbi5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHNrZWxldG9uLnNldEFuaW1hdGlvbigwLCAnZW5sYXJnZScsIGZhbHNlKTtcblx0XHRcdFx0XHRcdH0sIDEpO1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQvLyBza2VsZXRvbi5hbmltYXRpb24gPSBza2VsZXRvbi5hbmltYXRpb25OYW1lc1swXTtcblxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdGNvbnN0IGRyYWdvbkRpc3BsYXkgPSB0LmdldENvbXBvbmVudChkcmFnb25Cb25lcy5Bcm1hdHVyZURpc3BsYXkpO1xuXHRcdFx0XHRcdFx0ZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdlbmxhcmdlJywgMSk7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhkcmFnb25EaXNwbGF5Ll9hcm1hdHVyZUtleSwgJ2VubGFyZ2UnKVxuXHRcdFx0XHRcdFx0ZHJhZ29uRGlzcGxheS5hZGRFdmVudExpc3RlbmVyKGRyYWdvbkJvbmVzLkV2ZW50T2JqZWN0LkNPTVBMRVRFLCAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETyDov5nph4zlhpnop6blj5Hkuovku7Zcblx0XHRcdFx0XHRcdFx0Ly8gZXZlbnQubmFtZeS4uuS6i+S7tuWQjeensFxuXHRcdFx0XHRcdFx0XHQvLyBldmVudC5hcm1hdHVyZS5hbmltYXRpb24ucGxheSgnbm9ybWFsJywgMCk7XG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV2ZW50LmFuaW1hdGlvblN0YXRlLm5hbWUsIGRyYWdvbkRpc3BsYXkuX2FybWF0dXJlS2V5LCAnZW5kJylcblx0XHRcdFx0XHRcdH0sIHRoaXMpO1xuXHRcdFx0XHRcdH1cblxuXG5cblx0XHRcdFx0XHQvLyBjb25zdCBkcmFnb25EaXNwbGF5ID0gdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHQvLyBkcmFnb25EaXNwbGF5LnBsYXlBbmltYXRpb24oJ2VubGFyZ2UnLCAxKTtcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkcmFnb25EaXNwbGF5Ll9hcm1hdHVyZUtleSwgJ2VubGFyZ2UnKVxuXHRcdFx0XHRcdC8vIGRyYWdvbkRpc3BsYXkuYWRkRXZlbnRMaXN0ZW5lcihkcmFnb25Cb25lcy5FdmVudE9iamVjdC5DT01QTEVURSwgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0Ly8gXHQvL1RPRE8g6L+Z6YeM5YaZ6Kem5Y+R5LqL5Lu2XG5cdFx0XHRcdFx0Ly8gXHQvL2V2ZW50Lm5hbWXkuLrkuovku7blkI3np7Bcblx0XHRcdFx0XHQvLyBcdGV2ZW50LmFybWF0dXJlLmFuaW1hdGlvbi5wbGF5KCdub3JtYWwnLCAwKTtcblx0XHRcdFx0XHQvLyBcdGNvbnNvbGUubG9nKGV2ZW50LmFuaW1hdGlvblN0YXRlLm5hbWUsIGRyYWdvbkRpc3BsYXkuX2FybWF0dXJlS2V5LCAnZW5kJylcblx0XHRcdFx0XHQvLyB9LCB0aGlzKTtcblx0XHRcdFx0fSBcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHRoaXMuZGF0YS5iZWdpbl9zZXBfdGltZSkge1xuXHRcdFx0Y29uc3QgdCA9ICt0aGlzLmRhdGEuYmVnaW5fc2VwX3RpbWUgKiAxMDAwO1xuXHRcdFx0YWZ0ZXJbdF0gPSB7XG5cdFx0XHRcdGFjdGlvbnM6ICgpID0+IHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2FtZSBiZWdpbiAyJyk7XG5cblx0XHRcdFx0XHRmb3IobGV0IGkgPSAwIDtpICA8IHRoaXMuX2FsbEFuaW1hdGlvbk5vZGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB0ID0gdGhpcy5fYWxsQW5pbWF0aW9uTm9kZXNbaV07XG5cdFx0XHRcdFx0XHRpZiAodC5pc1NwaW5lKSB7XG5cblx0XHRcdFx0XHRcdFx0Y29uc3Qgc2tlbGV0b24gPSB0LmdldENvbXBvbmVudChzcC5Ta2VsZXRvbik7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdza2VsZXRvbjogJywgc2tlbGV0b24pO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0c2tlbGV0b24uc2V0VG9TZXR1cFBvc2UoKTtcblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0c2tlbGV0b24uc2V0QW5pbWF0aW9uKDAsICdub3JtYWwnLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0fSwgMSk7XG5cdFx0XHRcdFx0XHRcdFxuXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdza2VsZXRvbiAyMjogJywgc2tlbGV0b24pO1xuXG5cdFx0XHRcdFx0XHRcdC8vIHNrZWxldG9uLmFuaW1hdGlvbiA9IHNrZWxldG9uLmFuaW1hdGlvbk5hbWVzWzBdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHRjb25zdCBkcmFnb25EaXNwbGF5ID0gdC5nZXRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblx0XHRcdFx0XHRcdFx0ZHJhZ29uRGlzcGxheS5wbGF5QW5pbWF0aW9uKCdub3JtYWwnLCAwKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdFx0c3RhdGUuc3RhdGVzLmJlZ2luLmFmdGVyID0gYWZ0ZXI7XG5cblxuXG5cdFx0Y29uc3QgZ2FtZU1hY2hpbmUgPSBjcmVhdGVNYWNoaW5lKHN0YXRlKTtcblx0XHR3aW5kb3cuZ2FtZU1hY2hpbmUgPSBnYW1lTWFjaGluZTtcblx0XHR0aGlzLmdhbWVNYWNoaW5lU2VydmljZSA9IGludGVycHJldChnYW1lTWFjaGluZSkub25UcmFuc2l0aW9uKChzdGF0ZSkgPT4ge1xuXHRcdC8vIGNvbnNvbGUubG9nKDEsIHN0YXRlLnZhbHVlLCBzdGF0ZS5jb250ZXh0KTtcblx0XHR9KTtcblx0XHR0aGlzLmdhbWVNYWNoaW5lU2VydmljZS5zdGFydCgpO1xuXHRcdGlmICh3aW5kb3cuZ2FtZU1hY2hpbmVTZXJ2aWNlKSB7XG5cdFx0XHR3aW5kb3cuZ2FtZU1hY2hpbmVTZXJ2aWNlID0gZ2FtZU1hY2hpbmVTZXJ2aWNlO1xuXHRcdH1cblxuXG5cdH0sXG5cblx0XG5cblxuXG5cdC8vIOeUn+WRveWRqOacnyBzdGFydFxuXHRzdGFydCgpIHtcblx0XHRsZXQgZ2V0RGF0YSA9IHRoaXMuZ2V0RGF0YS5iaW5kKHRoaXMpO1xuXHRcdGlmICh3aW5kb3cgJiYgd2luZG93LmNvdXJzZXdhcmUpIHtcblx0XHRcdGdldERhdGEgPSB3aW5kb3cuY291cnNld2FyZS5nZXREYXRhO1xuXHRcdH1cblxuXHRcdGdldERhdGEoKGRhdGEpID0+IHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdkYXRhOicsIGRhdGEpO1xuXHRcdFx0dGhpcy5kYXRhID0gZGF0YSB8fCB0aGlzLmdldERlZmF1bHREYXRhKCk7XG5cdFx0XHR0aGlzLmRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpXG5cdFx0XHRcblx0XHRcdHRoaXMucHJlbG9hZEl0ZW0oKVxuXHRcdH0pO1xuXHRcdHdpbmRvdy5haXIgPSB3aW5kb3cuYWlyIHx8IHt9XG5cdFx0aWYgKHdpbmRvdy5haXIpIHtcblx0XHRcdHdpbmRvdy5haXIub3Ntb0ZpbmdlclJlYWRDYWxsYmFjayA9IChyZXN1bHQpID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLmdhbWVNYWNoaW5lU2VydmljZSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBjb25zdCBzdCA9IHRoaXMuZ2FtZU1hY2hpbmVTZXJ2aWNlLnN0YXRlLnZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgPT0gJ09iamVjdCcgXG5cdFx0XHRcdC8vICYmIHRoaXMuZ2FtZU1hY2hpbmVTZXJ2aWNlLnN0YXRlLnZhbHVlWydwbGF5aW5nJ11cblx0XHRcdFx0Ly8gJiYgdGhpcy5nYW1lTWFjaGluZVNlcnZpY2Uuc3RhdGUudmFsdWVbJ3BsYXlpbmcnXS5jb25zdHJ1Y3Rvci5uYW1lID09ICdPYmplY3QnXG5cdFx0XHRcdC8vICYmIHRoaXMuZ2FtZU1hY2hpbmVTZXJ2aWNlLnN0YXRlLnZhbHVlWydwbGF5aW5nJ11bJ3BsYXknXVxuXHRcdFx0XHQvLyAmJiB0aGlzLmdhbWVNYWNoaW5lU2VydmljZS5zdGF0ZS52YWx1ZVsncGxheWluZyddWydwbGF5J10gPT0gJ2Fuc3dlcidcblx0XHRcdFx0Ly8gaWYgKHN0KSB7XG5cdFx0XHRcdC8vIH1cblx0XHRcdFx0Y29uc3QgcmVzdWx0T2JqID0gSlNPTi5wYXJzZShyZXN1bHQpO1xuXHRcdFx0XHRjb25zb2xlLmxvZygnW0dlbmlzZSBKU10gJysgSlNPTi5zdHJpbmdpZnkocmVzdWx0T2JqLmZpbmdlcl9wb3NfaW5fcGFnZSkpXG5cdFx0XHRcdGNvbnN0IHAgPSByZXN1bHRPYmouZmluZ2VyX3Bvc19pbl9wYWdlO1xuXHRcdFx0XHRpZiAocC54ID09IC0xIHx8IHAueSA9PSAtMSkge1xuXHRcdFx0XHRcdHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5wb3MgPSBudWxsO1xuXHRcdFx0XHRcdHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5kaXJ0eSA9IGZhbHNlO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24gPSB7XG5cdFx0XHRcdFx0cG9zOntcblx0XHRcdFx0XHRcdHg6IHAueCxcblx0XHRcdFx0XHRcdHk6IHAueVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZGlydHk6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmRlYnVnUG9pbnRlcihwLngsIHAueSlcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5pc0RlYnVnID0gZmFsc2U7XG5cdFx0XG5cdH0sXG5cdGNoZWNrSW5SZWdpb24ocikge1xuXHRcdGlmICghdGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uICYmICF0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24ucG9zKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0Y29uc3QgcCA9IHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbiA/IHRoaXMuX2xhc3RGaW5nZXJQb3NpdGlvbi5wb3MgfHwge3g6MCwgeTowfSA6IHt4OjAsIHk6MH07XG5cblx0XHRjb25zb2xlLmxvZygnfnA6ICcsIHApO1xuXHRcdGNvbnNvbGUubG9nKCd+cjogJywgcik7XG5cblx0XHRjb25zdCB3ID0gcC54ID4gci54ICYmIHAueCA8IChyLnggKyByLndpZHRoKTtcblx0XHRjb25zdCBoID0gcC55ID4gci55ICYmIHAueSA8IChyLnkgKyByLmhlaWdodCk7XG5cdFx0cmV0dXJuIHcgJiYgaDtcblxuXHR9LFxuXG5cdGdldERhdGEoZnVuYykge1xuXHRcdGlmICh3aW5kb3cgJiYgd2luZG93LmNvdXJzZXdhcmUpIHtcblx0XHRcdHdpbmRvdy5jb3Vyc2V3YXJlLmdldERhdGEoZnVuYywgJ3NjZW5lJyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgbWlkZGxlTGF5ZXIgPSBjYy5maW5kKCdtaWRkbGVMYXllcicpO1xuXHRcdGlmIChtaWRkbGVMYXllcikge1xuXHRcdFx0Y29uc3QgbWlkZGxlTGF5ZXJDb21wb25lbnQgPSBtaWRkbGVMYXllci5nZXRDb21wb25lbnQoJ21pZGRsZUxheWVyJyk7XG5cdFx0XHRtaWRkbGVMYXllckNvbXBvbmVudC5nZXREYXRhKGZ1bmMpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGZ1bmModGhpcy5nZXREZWZhdWx0RGF0YSgpKTtcblx0fSxcblxuXHRnZXREZWZhdWx0RGF0YSgpIHtcblx0XHRyZXR1cm4ge1wiYmVnaW5fYXVkaW9cIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS85YmU0NmM5YWRiNTQwZWQ4YTYwNzYzZjFlNjU3Y2NiNy5tcDNcIixcImJlZ2luX3NlcF90aW1lXCI6NjYsXCJndWlkZV9hdWRpb1wiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzk1MjNjOGVkNDVmYWVlNjg2MzYzZGQxNTdiMGQ3NDI2Lm1wM1wiLFwicGxheWluZ19hdWRpb1wiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2Q2YTk1MzA1MmE2ZjgwNTQ5NzMwY2I0MzA3YzU1NzE5Lm1wM1wiLFwicmlnaHRfYXVkaW9cIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS80Mzc5MWZjNDE4ZTY2NmRmNWU5ZWMxYjdiZjkzNjQwOS5tcDNcIixcIndyb25nX2F1ZGlvXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vN2RkODVmMDI1YTEzMmMyZWVmOGRhZWUzOGQ5MDAyODcubXAzXCIsXCJ3cm9uZ19hdWRpbzFcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9hNzZhZmIwNmFmMDc5OWJmNTM4ZTM4ZjlmODBhMjI2MS5tcDNcIixcIndyb25nX2F1ZGlvMlwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2RhZWU4OGI2ZjJlYWRkNzhiNjA0MzZlZWRmZmNhZTA4Lm1wM1wiLFwiZW5kX2F1ZGlvXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vOWMxZTg3YjNjMTg0YjA2ZTE0ZTQ0YmIwNThiOTgwNGUubXAzXCIsXCJiZ0l0ZW1cIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8xNmI2ZGFjZDhlNmMxY2U2ZGExNmY1MDBhNjZiMzY2Yi5qcGdcIixcInJlY3RcIjp7XCJ4XCI6MzE5LjY4LFwieVwiOjAsXCJ3aWR0aFwiOjI1Ny42NCxcImhlaWdodFwiOjM0Mn19LFwiaG90Wm9uZUl0ZW1BcnJcIjpbe1wiaWRcIjpcIjE2NTA1NDQ4MDc4NzdcIixcImluZGV4XCI6MCxcIml0ZW1UeXBlXCI6XCJwaWNcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3Ni42NTIwNzg3NzQ2MTcwMn0sXCJnSWR4XCI6XCIxXCIsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzY2YzdjMDg0N2MzM2Y3Zjk1Y2IwMDM1ZmUxNGM0NDA1Lmpzb25cIixcIm5hbWVcIjpcIm1vbmtleV9za2UuanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vOThhODI3MmNkMmQ5NzA0N2IwOTBmZjEwZTk0OGI5NzguanNvblwiLFwibmFtZVwiOlwibW9ua2V5X3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2MzNWNlZDQwOGFkNjhhNTJjNGVjNTM3NTM3M2QzNjI3LnBuZ1wiLFwibmFtZVwiOlwibW9ua2V5X3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjEyOC44MyxcInlcIjoxNzEsXCJ3aWR0aFwiOjAsXCJoZWlnaHRcIjowfX0se1wiaWRcIjpcIjE2NTA1NDYwNzkwMDBcIixcImluZGV4XCI6MSxcImF1ZGlvX3VybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2Y5ZWRjODRhNjY5Njg4YzVhYmRkZDU1ZTJhYWIwMTVkLm1wM1wiLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIwXCIsXCJsYWJlbFRleHRcIjpcIjIxLjNcIixcInBvc1hcIjo2OTIuNDEyNzUwMDE5MzU5OCxcInBvc1lcIjoyMTguMTQ2OTU5NTkxODU1NTYsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2UzYzY3YTI1ZGQzYmIzNGZlMTEzZTEyNmU2ZTFjYzgxLmpzb25cIixcIm5hbWVcIjpcIm94X3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS84MWQ0ODdiZjMxZDNhNGQwZjI1ZjQ0YzE4NGJhOTIzMy5qc29uXCIsXCJuYW1lXCI6XCJveF90ZXguanNvblwifSxcInRleFBuZ0RhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9lMTk5MzkyYjUyYTczNWY2ZTM3YTY4MTVlYzNiYjEwZS5wbmdcIixcIm5hbWVcIjpcIm94X3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjE1OS4zNCxcInlcIjoxMzguNjYsXCJ3aWR0aFwiOjM4LjgzLFwiaGVpZ2h0XCI6MzguODN9fSx7XCJpZFwiOlwiMTY1MDU0NjIzMjE4OVwiLFwiaW5kZXhcIjoyLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIxXCIsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzBhM2VhOTNjNjJmZjQwODc4NTllZDU4NzAyMGM1M2I1Lmpzb25cIixcIm5hbWVcIjpcImNhcl9za2UuanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNjAwMGU0ZmJiYjk1ZjU0NWFmYTU0NTZjNjRkOGM3ZDEuanNvblwiLFwibmFtZVwiOlwiY2FyX3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzc1ZTk5NzJjMTVkMmE2N2RlZWRmNjBkNDQ4ZmQ0ZTY5LnBuZ1wiLFwibmFtZVwiOlwiY2FyX3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjM2LjQsXCJ5XCI6NzguNTYsXCJ3aWR0aFwiOjE4NC44NyxcImhlaWdodFwiOjE4NC44N319LHtcImlkXCI6XCIxNjUwNTQ2MzIxMTI3XCIsXCJpbmRleFwiOjMsXCJpdGVtVHlwZVwiOlwicmVjdFwiLFwiZm9udFNjYWxlXCI6MC43MDA3ODEyNSxcImltZ1NjYWxlXCI6MSxcImltZ1NpemVXXCI6MCxcImltZ1NpemVIXCI6MCxcIm1hcFNjYWxlXCI6MC43MDA3ODEyNSxcImRyYWdEb3RcIjp7XCJ4XCI6NDQ4LjUsXCJ5XCI6MTcwLjU0OTg0NTgzNzYxNTY2fSxcImdJZHhcIjpcIjFcIixcInNrZUpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZDRjMWUxYWJjZjNkOGY1NDE1NzQ3ZmQyNTk5YjhhOGMuanNvblwiLFwibmFtZVwiOlwiQ2hhaXJfc2tlLmpzb25cIn0sXCJ0ZXhKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzFkNzI1NGViN2ZhMzAwOGU4MTc4MzQ3YmI5NDRjZGNiLmpzb25cIixcIm5hbWVcIjpcIkNoYWlyX3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzQ4ZTg1ZThmZjM4NGVlZDcyZGZlODY1ZmM5ODFlMThjLnBuZ1wiLFwibmFtZVwiOlwiQ2hhaXJfdGV4LnBuZ1wifSxcInJlY3RcIjp7XCJ4XCI6MzYuNCxcInlcIjo3OC41NixcIndpZHRoXCI6MTg0Ljg3LFwiaGVpZ2h0XCI6MTg0Ljg3fX0se1wiaWRcIjpcIjE2NTA1NDYzMzUyNDBcIixcImluZGV4XCI6NCxcImF1ZGlvX3VybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzYxODJkNDZiYWQwOWZjY2I4OTM0MjE3ZDMzNTU3MjA0Lm1wM1wiLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIwXCIsXCJsYWJlbFRleHRcIjpcIjUzXCIsXCJwb3NYXCI6NDUyLjUsXCJwb3NZXCI6MTI5LFwic2tlSnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9iNDYyZDgwYzIxYWE3NTk5NWRkOTlmMGY0M2NjZjFlNi5qc29uXCIsXCJuYW1lXCI6XCJxdWlsdF9za2UuanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vODY2YzllMjk4Nzg3MDk0N2ZjNjNiY2UxMDhlZjE1N2EuanNvblwiLFwibmFtZVwiOlwicXVpbHRfdGV4Lmpzb25cIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZDk1MmMzN2Y0MGMzY2YwN2UwMjRlZGZkNDQxNjQyM2UucG5nXCIsXCJuYW1lXCI6XCJxdWlsdF90ZXgucG5nXCJ9LFwicmVjdFwiOntcInhcIjo3MS45OSxcInlcIjoxMDAuNzUsXCJ3aWR0aFwiOjUwLjgzLFwiaGVpZ2h0XCI6MzYuOTd9fSx7XCJpZFwiOlwiMTY1MDU0NjY0NDMzM1wiLFwiaW5kZXhcIjo1LFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIxXCIsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzZiOGExYTdiMGZkMjM2ODZlYTYwNDY1Mjc5Y2Q0ZGEwLmpzb25cIixcIm5hbWVcIjpcInJvYm90X3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zMWE3NGVkOTVmZTQ4YWRhYjAwNzAyNjc1ODExYzNhOC5qc29uXCIsXCJuYW1lXCI6XCJyb2JvdF90ZXguanNvblwifSxcInRleFBuZ0RhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9lNTcwNTI1MzdkODkzNTZiMGE3OWQ4Y2I3Nzk4MDIxOS5wbmdcIixcIm5hbWVcIjpcInJvYm90X3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjM2LjQsXCJ5XCI6NzguNTYsXCJ3aWR0aFwiOjE4NC44NyxcImhlaWdodFwiOjE4NC44N319LHtcImlkXCI6XCIxNjUwNTQ2NjU4Njk3XCIsXCJpbmRleFwiOjYsXCJpdGVtVHlwZVwiOlwicmVjdFwiLFwiZm9udFNjYWxlXCI6MC43MDA3ODEyNSxcImltZ1NjYWxlXCI6MSxcImltZ1NpemVXXCI6MCxcImltZ1NpemVIXCI6MCxcIm1hcFNjYWxlXCI6MC43MDA3ODEyNSxcImRyYWdEb3RcIjp7XCJ4XCI6NDQ4LjUsXCJ5XCI6MTcwLjU0OTg0NTgzNzYxNTY2fSxcImdJZHhcIjpcIjFcIixcInNrZUpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vYmYzNjE2MDYwNDYwNDM5ZWViM2ZkNTIyNzM3MGUxNWEuanNvblwiLFwibmFtZVwiOlwicGFuZGFfc2tlLmpzb25cIn0sXCJ0ZXhKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzJkYWZlYjI1Yzk3M2M5MTAwMzVmZjdlZDFhNmE2MzM0Lmpzb25cIixcIm5hbWVcIjpcInBhbmRhX3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzc1ZDkwYjA1MzQ1ZmE0NzAyODVhYzQ4OGNiMjA1Y2ZkLnBuZ1wiLFwibmFtZVwiOlwicGFuZGFfdGV4LnBuZ1wifSxcInJlY3RcIjp7XCJ4XCI6MzYuNCxcInlcIjo3OC41NixcIndpZHRoXCI6MTg0Ljg3LFwiaGVpZ2h0XCI6MTg0Ljg3fX0se1wiaWRcIjpcIjE2NTA1NDY2NzI0NDhcIixcImluZGV4XCI6NyxcIml0ZW1UeXBlXCI6XCJyZWN0XCIsXCJmb250U2NhbGVcIjowLjcwMDc4MTI1LFwiaW1nU2NhbGVcIjoxLFwiaW1nU2l6ZVdcIjowLFwiaW1nU2l6ZUhcIjowLFwibWFwU2NhbGVcIjowLjcwMDc4MTI1LFwiZHJhZ0RvdFwiOntcInhcIjo0NDguNSxcInlcIjoxNzAuNTQ5ODQ1ODM3NjE1NjZ9LFwiZ0lkeFwiOlwiMVwiLFwic2tlSnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS81ZmVmZjgxMWIwMTE3ZGQ4ZTY3OTczMDcyZTYwZDMxMC5qc29uXCIsXCJuYW1lXCI6XCJxdWVlbl8xX3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9iYjU4NTZiOTJiMDljNWZlN2ExZGEwMGJiNjgxMzRjYS5qc29uXCIsXCJuYW1lXCI6XCJxdWVlbl8xX3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2Y0ZTVhMTM4YjA4NmVmM2RjZmE1NzQzMjU0M2I2NmU5LnBuZ1wiLFwibmFtZVwiOlwicXVlZW5fMV90ZXgucG5nXCJ9LFwiYW5pbVR5cGVcIjpcImRyYWdvbkJvbmVcIixcInJlY3RcIjp7XCJ4XCI6MzYuNCxcInlcIjo3OC41NixcIndpZHRoXCI6MTg0Ljg3LFwiaGVpZ2h0XCI6MTg0Ljg3fX0se1wiaWRcIjpcIjE2NTA1NDY2ODcwNjlcIixcImluZGV4XCI6OCxcImF1ZGlvX3VybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzMwMTg1OGRmN2IwN2U2NjE0MjZhMDA2YWNiMjYwNTljLm1wM1wiLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIwXCIsXCJsYWJlbFRleHRcIjpcIjQyLjVcIixcInBvc1hcIjo1MTIuMzg4MzUyNDYyOTgzNCxcInBvc1lcIjoyNTkuODM2MTcxMjU4NDksXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2YzYThlZmNkMTg1MGVlOGE2Y2VlODlhMThlODZkYzRhLmpzb25cIixcIm5hbWVcIjpcIm1pbGtfc2tlLmpzb25cIn0sXCJ0ZXhKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzczYjA1ZjE5ZDQxOWJkM2FjMTdjMmI5MmRhYjg4NDIzLmpzb25cIixcIm5hbWVcIjpcIm1pbGtfdGV4Lmpzb25cIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vZTM4Mzc1ZGE0NmY4NWEyMzIwMmQ1Y2JjODEyZDYyZTQucG5nXCIsXCJuYW1lXCI6XCJtaWxrX3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjM3LjcyLFwieVwiOjE2OC4xLFwid2lkdGhcIjoyMS4xNyxcImhlaWdodFwiOjQwLjM0fX0se1wiaWRcIjpcIjE2NTA1NDcwNjA0OTBcIixcImluZGV4XCI6OSxcImF1ZGlvX3VybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzA1ZTViMjlhZWZmYTRlZjk0YmNjNWIyMzE2N2FlYzkwLm1wM1wiLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIwXCIsXCJsYWJlbFRleHRcIjpcIjQ3LjdcIixcInBvc1hcIjo0ODMuMjIxMzU3MzQwMDY3MzYsXCJwb3NZXCI6MjQ1LjM4MDM5NDA3MDc2NTA1LFwic2tlSnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS85OWE2ZTZkOTM2MWVjYTdlNTFlZDM0Y2EyZTBmZDAxNy5qc29uXCIsXCJuYW1lXCI6XCJiaXJkX3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS82YTM3OWRkYmU2ZGYxODA2MzY4YzQzYzhlZTgyMzMyZC5qc29uXCIsXCJuYW1lXCI6XCJiaXJkX3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2NmMDRjNjMxMDRkODk1MTE5MDI1Nzg5NDQwNjFmOTgwLnBuZ1wiLFwibmFtZVwiOlwiYmlyZF90ZXgucG5nXCJ9LFwicmVjdFwiOntcInhcIjoxNy45MSxcInlcIjoxNDAuODMsXCJ3aWR0aFwiOjE4LjUyLFwiaGVpZ2h0XCI6NzMuOTV9fSx7XCJpZFwiOlwiMTY1MDU0NzM3Mzg2OVwiLFwiaW5kZXhcIjoxMCxcIml0ZW1UeXBlXCI6XCJyZWN0XCIsXCJmb250U2NhbGVcIjowLjcwMDc4MTI1LFwiaW1nU2NhbGVcIjoxLFwiaW1nU2l6ZVdcIjowLFwiaW1nU2l6ZUhcIjowLFwibWFwU2NhbGVcIjowLjcwMDc4MTI1LFwiZHJhZ0RvdFwiOntcInhcIjo0NDguNSxcInlcIjoxNzAuNTQ5ODQ1ODM3NjE1NjZ9LFwiZ0lkeFwiOlwiMVwiLFwibGFiZWxUZXh0XCI6XCI2MFwiLFwicG9zWFwiOjQyMC41LFwicG9zWVwiOjI5NSxcInNrZUpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vN2ViYzI4ZjNmMzM5YjE2Y2E0OGQyMGYyYTNlYjQ0YzEuanNvblwiLFwibmFtZVwiOlwiYWxsaWdhdG9yX3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9iMDRlODIwNmZkMjE3YmQyMmRjZGFjMTAwODM5MzMxNy5qc29uXCIsXCJuYW1lXCI6XCJhbGxpZ2F0b3JfdGV4Lmpzb25cIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vYjM5OTBkOTQ2MTJiZDNkNmUyNWNmMjAwZjg1ZTQzMzQucG5nXCIsXCJuYW1lXCI6XCJhbGxpZ2F0b3JfdGV4LnBuZ1wifSxcInJlY3RcIjp7XCJ4XCI6MTYuMDYsXCJ5XCI6MjI5LjI0LFwid2lkdGhcIjoxMDMuNTIsXCJoZWlnaHRcIjo4Ni44OX19LHtcImlkXCI6XCIxNjUwNTQ3NDgyMzk4XCIsXCJpbmRleFwiOjExLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIxXCIsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2ExOWYyZWQ3YzI5N2M3MGM2MzllNTRlOTY5ZDY0NTkzLmpzb25cIixcIm5hbWVcIjpcInJhYmJpdF9za2UuanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNGI0ZjgxODljZjc5ZmFkZDdlNjUzM2FkODRkYjk2YmUuanNvblwiLFwibmFtZVwiOlwicmFiYml0X3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzhmOTUzYzg2MWVhYzk0ZTRlMjJhOGU0ZWMzZWI1NmI1LnBuZ1wiLFwibmFtZVwiOlwicmFiYml0X3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjM2LjQsXCJ5XCI6NzguNTYsXCJ3aWR0aFwiOjE4NC44NyxcImhlaWdodFwiOjE4NC44N319LHtcImlkXCI6XCIxNjUwNTQ3NDk2MjMyXCIsXCJpbmRleFwiOjEyLFwiaXRlbVR5cGVcIjpcInJlY3RcIixcImZvbnRTY2FsZVwiOjAuNzAwNzgxMjUsXCJpbWdTY2FsZVwiOjEsXCJpbWdTaXplV1wiOjAsXCJpbWdTaXplSFwiOjAsXCJtYXBTY2FsZVwiOjAuNzAwNzgxMjUsXCJkcmFnRG90XCI6e1wieFwiOjQ0OC41LFwieVwiOjE3MC41NDk4NDU4Mzc2MTU2Nn0sXCJnSWR4XCI6XCIxXCIsXCJza2VKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzg5ZTBmYzYwODVjMjk0ODY2MTQyODAzYjRmZjI2N2JhLmpzb25cIixcIm5hbWVcIjpcIktpbmdfc2tlLmpzb25cIn0sXCJ0ZXhKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tL2Q2Y2ZkMmQ5Y2QyY2Q5YWZmMDlhYjdmMDNlMjg3NDIxLmpzb25cIixcIm5hbWVcIjpcIktpbmdfdGV4Lmpzb25cIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vOGMwMmMzNTYxYTJlZWEwNDIzY2IxMTAyMjAwZTc2ZjkucG5nXCIsXCJuYW1lXCI6XCJLaW5nX3RleC5wbmdcIn0sXCJyZWN0XCI6e1wieFwiOjM2LjQsXCJ5XCI6NzguNTYsXCJ3aWR0aFwiOjE4NC44NyxcImhlaWdodFwiOjE4NC44N319LHtcImlkXCI6XCIxNjUwNTQ3NTEwNjQ4XCIsXCJpbmRleFwiOjEzLFwiYXVkaW9fdXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNzE3ZWU5NzEzYjE4ZDMyZDM4ZWUwODljMGFiYzg1ZWEubXAzXCIsXCJpdGVtVHlwZVwiOlwicmVjdFwiLFwiZm9udFNjYWxlXCI6MC43MDA3ODEyNSxcImltZ1NjYWxlXCI6MSxcImltZ1NpemVXXCI6MCxcImltZ1NpemVIXCI6MCxcIm1hcFNjYWxlXCI6MC43MDA3ODEyNSxcImRyYWdEb3RcIjp7XCJ4XCI6NDQ4LjUsXCJ5XCI6MTcwLjU0OTg0NTgzNzYxNTY2fSxcImdJZHhcIjpcIjBcIixcImxhYmVsVGV4dFwiOlwiMTAuMlwiLFwicG9zWFwiOjY0MS42NjgwMTM0OTUxOTQ0LFwicG9zWVwiOjI4OC45MzY3MjcwMjU0MTI1NSxcInNrZUpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2I3MTEzZWJkZWRjYWU1NGJlNmQwYjk2MzM4NzViODguanNvblwiLFwibmFtZVwiOlwibmV0X3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9mYzgxMDc2MmYxZjIwMjU1ODVlNzIyZTQzZTk0MTM3Yi5qc29uXCIsXCJuYW1lXCI6XCJuZXRfdGV4Lmpzb25cIn0sXCJ0ZXhQbmdEYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vNWM5MDgyMGRhNGY1NTkyODBmZWU0NTc5ZThkYjJkYmMucG5nXCIsXCJuYW1lXCI6XCJuZXRfdGV4LnBuZ1wifSxcInJlY3RcIjp7XCJ4XCI6MTIzLjAzLFwieVwiOjE4My4wMixcIndpZHRoXCI6MzcuOSxcImhlaWdodFwiOjUyLjY4fX0se1wiaWRcIjpcIjE2NTA1NDc1NTUwMThcIixcImluZGV4XCI6MTQsXCJpdGVtVHlwZVwiOlwicmVjdFwiLFwiZm9udFNjYWxlXCI6MC43MDA3ODEyNSxcImltZ1NjYWxlXCI6MSxcImltZ1NpemVXXCI6MCxcImltZ1NpemVIXCI6MCxcIm1hcFNjYWxlXCI6MC43MDA3ODEyNSxcImRyYWdEb3RcIjp7XCJ4XCI6NDQ4LjUsXCJ5XCI6MTcwLjU0OTg0NTgzNzYxNTY2fSxcImdJZHhcIjpcIjFcIixcInNrZUpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vMGE1YzhkZjVhMjNhY2E3YTc1NDBiODczNDBjNzYwOGYuanNvblwiLFwibmFtZVwiOlwib3N0cmljaF9za2UuanNvblwifSxcInRleEpzb25EYXRhXCI6e1widXJsXCI6XCJodHRwczovL3RlYWNoLmNkbi5pcmVhZGFiYy5jb20vMjQ3ODU3M2M5MWQxYTgzZmEwMzhlN2Y2YTlkYjhhODUuanNvblwiLFwibmFtZVwiOlwib3N0cmljaF90ZXguanNvblwifSxcInRleFBuZ0RhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS80NjE5YWNlNjdlNTc3MGUxZmQ3ZmMzZmY3NmU3MjYzZS5wbmdcIixcIm5hbWVcIjpcIm9zdHJpY2hfdGV4LnBuZ1wifSxcInJlY3RcIjp7XCJ4XCI6MzYuNCxcInlcIjo3OC41NixcIndpZHRoXCI6MTg0Ljg3LFwiaGVpZ2h0XCI6MTg0Ljg3fX0se1wiaWRcIjpcIjE2NTA1NDc1NzMzMDVcIixcImluZGV4XCI6MTUsXCJhdWRpb191cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9iN2JjMTYxYzNhM2VlMTQzYTUzMDU4NjkxYWJmNGZhOS5tcDNcIixcIml0ZW1UeXBlXCI6XCJyZWN0XCIsXCJmb250U2NhbGVcIjowLjcwMDc4MTI1LFwiaW1nU2NhbGVcIjoxLFwiaW1nU2l6ZVdcIjowLFwiaW1nU2l6ZUhcIjowLFwibWFwU2NhbGVcIjowLjcwMDc4MTI1LFwiZHJhZ0RvdFwiOntcInhcIjo0NDguNSxcInlcIjoxNzAuNTQ5ODQ1ODM3NjE1NjZ9LFwiZ0lkeFwiOlwiMFwiLFwibGFiZWxUZXh0XCI6XCIxNS45XCIsXCJwb3NYXCI6NjcwLjgxMTk4Mzk3NzI3NTQsXCJwb3NZXCI6MTM3Ljg3OTQwODcwMjAxNjk3LFwic2tlSnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS85MWU4Y2EwM2QxZGY4OWU0ZWMyNDA0NDIxZDRjNjkyZi5qc29uXCIsXCJuYW1lXCI6XCJkdXJhem5vX3NrZS5qc29uXCJ9LFwidGV4SnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHBzOi8vdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zMmQyNTliMDE5NDM3MDYyNWY4ZmU5NGIxZGRjMGE4NS5qc29uXCIsXCJuYW1lXCI6XCJkdXJhem5vX3RleC5qc29uXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cHM6Ly90ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzhlZWY1NmIyMGUyMjFhMzZmY2UxZDY3MjE5OTg1OWZmLnBuZ1wiLFwibmFtZVwiOlwiZHVyYXpub190ZXgucG5nXCJ9LFwicmVjdFwiOntcInhcIjoxNDYuOTIsXCJ5XCI6ODMuNzMsXCJ3aWR0aFwiOjMyLjM0LFwiaGVpZ2h0XCI6MzIuMzR9fV19XG5cdFx0Ly8gcmV0dXJuICB7XCJiZWdpbl9hdWRpb1wiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zZDMwN2EwMjY2M2UxY2Q2NjdiN2M5NTEzNDBlYzk4Yi5tcDNcIixcImJlZ2luX3NlcF90aW1lXCI6MSxcImd1aWRlX2F1ZGlvXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzNkMzA3YTAyNjYzZTFjZDY2N2I3Yzk1MTM0MGVjOThiLm1wM1wiLFwicGxheWluZ19hdWRpb1wiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8zZDMwN2EwMjY2M2UxY2Q2NjdiN2M5NTEzNDBlYzk4Yi5tcDNcIixcInJpZ2h0X2F1ZGlvXCI6XCJodHRwOi8vc3RhZ2luZy10ZWFjaC5jZG4uaXJlYWRhYmMuY29tLzNkMzA3YTAyNjYzZTFjZDY2N2I3Yzk1MTM0MGVjOThiLm1wM1wiLFwid3JvbmdfYXVkaW9cIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2QzMDdhMDI2NjNlMWNkNjY3YjdjOTUxMzQwZWM5OGIubXAzXCIsXCJ3cm9uZ19hdWRpbzFcIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2QzMDdhMDI2NjNlMWNkNjY3YjdjOTUxMzQwZWM5OGIubXAzXCIsXCJ3cm9uZ19hdWRpbzJcIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2QzMDdhMDI2NjNlMWNkNjY3YjdjOTUxMzQwZWM5OGIubXAzXCIsXCJlbmRfYXVkaW9cIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vM2QzMDdhMDI2NjNlMWNkNjY3YjdjOTUxMzQwZWM5OGIubXAzXCIsXCJiZ0l0ZW1cIjp7XCJ1cmxcIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vODRlYzZlZGMyMGJjZWFhYTlkYmU4MjQwOTJiNjg2MGQucG5nXCIsXCJyZWN0XCI6e1wieFwiOjczNi45NSxcInlcIjowLFwid2lkdGhcIjo1OTkuMDksXCJoZWlnaHRcIjo3NzV9fSxcImhvdFpvbmVJdGVtQXJyXCI6W3tcImlkXCI6XCIxNjU5MzMzNjQ1NTczXCIsXCJpbmRleFwiOjAsXCJhdWRpb191cmxcIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vNWExYTI2NzA4NDViZmU3NjY2MmU4NmQ5YTNhNjlmODEubXAzXCIsXCJpdGVtVHlwZVwiOlwicmVjdFwiLFwiZm9udFNjYWxlXCI6MS42MTk1MzEyNSxcImltZ1NjYWxlXCI6MSxcImltZ1NpemVXXCI6MCxcImltZ1NpemVIXCI6MCxcIm1hcFNjYWxlXCI6MS42MTk1MzEyNSxcImRyYWdEb3RcIjp7XCJ4XCI6MTAzNi41LFwieVwiOjM4Ny41fSxcImdJZHhcIjpcIjFcIixcImxhYmVsVGV4dFwiOlwiMVwiLFwicG9zWFwiOjg4Ny41LFwicG9zWVwiOjE2NS41LFwic2tlSnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vMTMzYTFmNjA3MTllZDI2MjQ3ZTM1ZGMwMjJkODI4NjIuanNvblwiLFwibmFtZVwiOlwic3BpbmVib3ktcHJvLmpzb25cIn0sXCJ0ZXhKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9lMDk0NWI4MjY1ZWEzYjgwNTNhZmI4MTRjNmI4NDlkMy5hdGxhc1wiLFwibmFtZVwiOlwic3BpbmVib3ktcHJvLmF0bGFzXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS81MTc1NTNmNTAyMjQ5MTUxNDhmOWVmYzViNzU1Njc5OC5wbmdcIixcIm5hbWVcIjpcInNwaW5lYm95LXByby5wbmdcIn0sXCJhbmltVHlwZVwiOlwic3BpbmVcIixcInJlY3RcIjp7XCJ4XCI6NDguMDUsXCJ5XCI6NjUuNSxcIndpZHRoXCI6MjA1LFwiaGVpZ2h0XCI6MjAwfX0se1wiaWRcIjpcIjE2NTkzMzQwOTg5MzBcIixcImluZGV4XCI6MSxcImF1ZGlvX3VybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS8xNmViMDZhNmJlYjllNGZhNzdjOWI1ZDJkNjQzYWIyOS5tcDNcIixcIml0ZW1UeXBlXCI6XCJyZWN0XCIsXCJmb250U2NhbGVcIjoxLjYxOTUzMTI1LFwiaW1nU2NhbGVcIjoxLFwiaW1nU2l6ZVdcIjowLFwiaW1nU2l6ZUhcIjowLFwibWFwU2NhbGVcIjoxLjYxOTUzMTI1LFwiZHJhZ0RvdFwiOntcInhcIjoxMDM2LjUsXCJ5XCI6Mzg3LjV9LFwiZ0lkeFwiOlwiMFwiLFwibGFiZWxUZXh0XCI6XCIxXCIsXCJwb3NYXCI6MTIxMi41LFwicG9zWVwiOjY0My41LFwic2tlSnNvbkRhdGFcIjp7XCJ1cmxcIjpcImh0dHA6Ly9zdGFnaW5nLXRlYWNoLmNkbi5pcmVhZGFiYy5jb20vNjc5ZmVkMjZkYWE0NjQ4MTlkNTUzZGU2MzMxYjM1NTIuanNvblwiLFwibmFtZVwiOlwiYWxpZW4tcHJvLmpzb25cIn0sXCJ0ZXhKc29uRGF0YVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS82NWQ4MjE0YzZiNWM1ZDA0OTZlMTdhZGIwNDA4Mjc2YS5hdGxhc1wiLFwibmFtZVwiOlwiYWxpZW4tcHJvLmF0bGFzXCJ9LFwidGV4UG5nRGF0YVwiOntcInVybFwiOlwiaHR0cDovL3N0YWdpbmctdGVhY2guY2RuLmlyZWFkYWJjLmNvbS9hMzE5YjM3Mjg5OTIzOTMyNWI5MGJiNGVjMDdiNDk3MC5wbmdcIixcIm5hbWVcIjpcImFsaWVuLXByby5wbmdcIn0sXCJhbmltVHlwZVwiOlwic3BpbmVcIixcInJlY3RcIjp7XCJ4XCI6Mzc1LjU2LFwieVwiOjU0My41LFwid2lkdGhcIjoyMDAsXCJoZWlnaHRcIjoyMDB9fV19XG5cdFx0Ly8gcmV0dXJuIGRlZmF1bHREYXRhO1xuXHR9LFxuXG5cdHByZWxvYWRJdGVtKCkge1xuXHRcdHRoaXMuYWRkUHJlbG9hZEltYWdlKCk7XG5cdFx0dGhpcy5hZGRQcmVsb2FkQXVkaW8oKTtcblx0XHR0aGlzLmFkZFByZWxvYWRBbmltYSgpO1xuXHRcdHRoaXMucHJlbG9hZCgpO1xuXHR9LFxuXG5cblx0YWRkUHJlbG9hZEltYWdlKCkge1xuXG5cdFx0dGhpcy5faW1hZ2VSZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS5iZ0l0ZW0udXJsfSk7XG5cblx0XHRmb3IgKGNvbnN0IHEgb2YgdGhpcy5kYXRhLmhvdFpvbmVJdGVtQXJyKSB7XG5cdFx0XHRpZiAocS5nSWR4ID09JzAnKSB7XG5cdFx0XHRcdHRoaXMuX2ltYWdlUmVzTGlzdC5wdXNoKHsgdXJsOiBxLnRleFBuZ0RhdGEudXJsfSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChxLmdJZHggPT0nMScpIHtcblx0XHRcdFx0dGhpcy5faW1hZ2VSZXNMaXN0LnB1c2goeyB1cmw6IHEudGV4UG5nRGF0YS51cmwgfSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocS5nSWR4ID09JzInKSB7XG5cdFx0XHRcdHRoaXMuX2ltYWdlUmVzTGlzdC5wdXNoKHsgdXJsOiBxLnBpY191cmx9KTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdHByZXBhcmVBdWRpb0NsaXAodXJsLCBrZXkpIHtcblx0XHRpZiAodXJsKSB7XG5cdFx0XHRjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZSh1cmwsIChlcnIsIGF1ZGlvQ2xpcCkgPT4ge1xuXHRcdFx0XHRpZiAoYXVkaW9DbGlwKSB7XG5cdFx0XHRcdFx0dGhpc1trZXldID0gYXVkaW9DbGlwO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cdGFkZFByZWxvYWRBdWRpbygpIHtcblxuXHRcdHRoaXMuX2F1ZGlvUmVzTGlzdC5wdXNoKHsgdXJsOiB0aGlzLmRhdGEuYmVnaW5fYXVkaW8gfSk7XG5cdFx0Ly8gdGhpcy5wcmVwYXJlQXVkaW9DbGlwKHRoaXMuZGF0YS5iZWdpbl9hdWRpbzEsICdiZWdpbl9hdWRpbzEnKVxuXHRcdC8vIHRoaXMuX2F1ZGlvUmVzTGlzdC5wdXNoKHsgdXJsOiB0aGlzLmRhdGEuYmVnaW5fYXVkaW8yIH0pO1xuXHRcdC8vIHRoaXMucHJlcGFyZUF1ZGlvQ2xpcCh0aGlzLmRhdGEuYmVnaW5fYXVkaW8yLCAnYmVnaW5fYXVkaW8yJylcblx0XHR0aGlzLl9hdWRpb1Jlc0xpc3QucHVzaCh7IHVybDogdGhpcy5kYXRhLmd1aWRlX2F1ZGlvIH0pO1xuXHRcdHRoaXMuX2F1ZGlvUmVzTGlzdC5wdXNoKHsgdXJsOiB0aGlzLmRhdGEucGxheWluZ19hdWRpbyB9KTtcblx0XHRpZiAodGhpcy5kYXRhLndyb25nX2F1ZGlvKSB7XG5cdFx0XHR0aGlzLl9hdWRpb1Jlc0xpc3QucHVzaCh7IHVybDogdGhpcy5kYXRhLndyb25nX2F1ZGlvIH0pO1xuXHRcdFx0dGhpcy53cm9uZ0F1ZGlvID0gdGhpcy5kYXRhLndyb25nX2F1ZGlvXG5cdFx0fVxuXHRcdGlmICh0aGlzLmRhdGEucmlnaHRfYXVkaW8pIHtcblx0XHRcdHRoaXMuX2F1ZGlvUmVzTGlzdC5wdXNoKHsgdXJsOiB0aGlzLmRhdGEucmlnaHRfYXVkaW8gfSk7XG5cdFx0XHR0aGlzLnJpZ2h0QXVkaW8gPSB0aGlzLmRhdGEucmlnaHRfYXVkaW9cblx0XHR9XG5cdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS53cm9uZ19hdWRpbzEgfSk7XG5cdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS53cm9uZ19hdWRpbzIgfSk7XG5cdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHRoaXMuZGF0YS5lbmRfYXVkaW8gfSk7XG5cblxuXHRcdGZvciAoY29uc3QgcSBvZiB0aGlzLmRhdGEuaG90Wm9uZUl0ZW1BcnIpIHtcblx0XHRcdGlmIChxLmdJZHggPT0nMCcpIHtcblx0XHRcdFx0dGhpcy5fYXVkaW9SZXNMaXN0LnB1c2goeyB1cmw6IHEuYXVkaW9fdXJsIH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0ZGVidWdQb2ludGVyKCkge1xuXHRcdGNvbnN0IGJveERlYnVnZ2VyID0gY2MuZmluZCgnQ2FudmFzL2JveC1kZWJ1Z2dlcicpO1xuXHRcdGlmICghdGhpcy5pc0RlYnVnKSB7XG5cdFx0XHRib3hEZWJ1Z2dlci5hY3RpdmUgPSBmYWxzZTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLlBPSU5URVJfTk9ERSkge1xuXHRcdFx0dGhpcy5QT0lOVEVSX05PREUgPSBuZXcgY2MuTm9kZSgpO1xuXHRcdFx0dGhpcy5QT0lOVEVSX05PREUucGFyZW50ID0gYm94RGVidWdnZXI7XG5cdFx0XHR0aGlzLlBPSU5URVJfTk9ERS5uYW1lID0gJ1BPSU5URVJfTk9ERSdcblx0XHRcdHRoaXMuUE9JTlRFUl9OT0RFLmFkZENvbXBvbmVudChjYy5HcmFwaGljcyk7XG5cdFx0fVxuXHRcdGNvbnN0IGdyYXAgPSB0aGlzLlBPSU5URVJfTk9ERS5nZXRDb21wb25lbnQoY2MuR3JhcGhpY3MpO1xuXHRcdGdyYXAuY2xlYXIoKTtcblx0XHRjb25zdCBncm91bmQgPSBjYy5maW5kKCdDYW52YXMvZnJhbWUtYm9yZGVyL2dyb3VuZCcpO1xuXHRcdGNvbnN0IHt3aWR0aDogYmFzZVcsIGhlaWdodDogYmFzZUh9ID0gZ3JvdW5kO1xuXHRcdGNvbnN0IHt4OiBweCwgeTogcHl9ID0gdGhpcy5fbGFzdEZpbmdlclBvc2l0aW9uLnBvcztcblx0XHRsZXQgeCA9IGJhc2VXICogcHggLSBiYXNlVyAvIDI7XG5cdFx0bGV0IHkgPSBiYXNlSCAtIChiYXNlSCAqIHB5KSAtIGJhc2VIIC8gMiAtIDE2O1xuXHRcdGNvbnN0IHBuID0gbmV3IGNjLk5vZGUoKTtcblx0XHRcblx0XHRncmFwLmZpbGxDb2xvcj1jYy5jb2xvcigyNTUsIDAsIDApO1xuXHRcdGdyYXAuY2lyY2xlKHgsIHksIDMyKTtcblx0XHRncmFwLmZpbGwoKTtcblx0XHRncmFwLnN0cm9rZSgpO1xuXHR9LFxuXHRkZWJ1Z0dyYXBoaWNzKCkge1xuXHRcdGNvbnN0IGJveERlYnVnZ2VyID0gY2MuZmluZCgnQ2FudmFzL2JveC1kZWJ1Z2dlcicpO1xuXHRcdGlmICghdGhpcy5pc0RlYnVnKSB7XG5cdFx0XHRib3hEZWJ1Z2dlci5hY3RpdmUgPSBmYWxzZTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Ym94RGVidWdnZXIuYWN0aXZlID0gdHJ1ZTtcblx0XHRjb25zb2xlLmxvZygnc2hvdyBkZWJ1ZyBncmFwaGljcycpO1xuXHRcdGNvbnN0IGdyb3VuZCA9IGNjLmZpbmQoJ0NhbnZhcy9mcmFtZS1ib3JkZXIvZ3JvdW5kJyk7XG5cdFx0Y29uc3QgY2FudmFzID0gY2MuZmluZCgnQ2FudmFzJyk7XG5cdFx0Y29uc3Qge3dpZHRoOiBiYXNlVywgaGVpZ2h0OiBiYXNlSH0gPSBncm91bmQ7XG5cdFx0Y29uc3Qge3dpZHRoOiBiZ1csIGhlaWdodDogYmdIfSA9IHRoaXMuZGF0YS5iZ0l0ZW0ucmVjdFxuXHRcdGNvbnN0IHNjYWxlWCA9IGJnVyAvIGJhc2VXO1xuXHRcdGNvbnN0IHNjYWxlWSA9IGJnSCAvIGJhc2VIO1xuXHRcdGxldCBhZGRlZCAgPWZhbHNlXG5cdFx0dGhpcy5kYXRhLmhvdFpvbmVJdGVtQXJyLmZvckVhY2goYXJlYSA9PiB7XG5cdFx0XHRcblx0XHRcdGlmIChhZGRlZCkge1xuXHRcdFx0XHQvLyByZXR1cm5cblx0XHRcdH1cblx0XHRcdGlmIChhcmVhLmdJZHggIT0gJzAnKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGFkZGVkID0gdHJ1ZTtcblx0XHRcdGNvbnN0IGRuID0gbmV3IGNjLk5vZGUoKTtcblx0XHRcdGNvbnN0IGxibE5vZGUgPSBuZXcgY2MuTm9kZSgpO1xuXHRcdFx0bGJsTm9kZS5wYXJlbnQgPSBkblxuXHRcdFx0Y29uc3QgbGJsID0gbGJsTm9kZS5hZGRDb21wb25lbnQoY2MuTGFiZWwpO1xuXHRcdFx0bGJsTm9kZS5jb2xvciA9IGNjLmNvbG9yKDAsMCwwKVxuXHRcdFx0bGJsLnN0cmluZyA9IGFyZWEuc2tlSnNvbkRhdGEubmFtZS5zdWJzdHJpbmcoMCwgYXJlYS5za2VKc29uRGF0YS5uYW1lLmxlbmd0aCAtIDkpXG5cdFx0XHRkbi5uYW1lID0gbGJsLnN0cmluZztcblx0XHRcdGRuLnBhcmVudCA9IGJveERlYnVnZ2VyO1xuXHRcdFx0ZG4ud2lkdGggPSBiYXNlVztcblx0XHRcdGRuLmhlaWdodCA9IGJhc2VIO1xuXHRcdFx0XG5cdFx0XHRjb25zdCBncmFwID0gZG4uYWRkQ29tcG9uZW50KGNjLkdyYXBoaWNzKTtcblx0XHRcdGNvbnN0IHIgPSBSYW5kb21JbnQoMSwyNTUpXG5cdFx0XHRjb25zdCBnID0gUmFuZG9tSW50KDEsMjU1KVxuXHRcdFx0Y29uc3QgYiA9IFJhbmRvbUludCgxLDI1NSlcblx0XHRcdGdyYXAuZmlsbENvbG9yPWNjLmNvbG9yKHIsIGcsIGIsIDEyNyk7XG5cdFx0XHRjb25zdCB7eDogcngsIHk6IHJ5LCB3aWR0aDogcncsIGhlaWdodDogcmh9ID0gIGFyZWEucmVjdDtcblx0XHRcdGxldCB3ID0gKHJ3IC8gYmdXKSAqIGJhc2VXO1xuXHRcdFx0bGV0IGggPSAocmggLyBiZ0gpICogYmFzZUg7XG5cdFx0XHRsZXQgeCA9IChyeCAvIGJnVykgKiBiYXNlVyAtIGJhc2VXIC8gMjtcblx0XHRcdGxldCB5ID0gYmFzZUggLSAoKHJ5IC8gYmdIKSAqIGJhc2VIKSAtIGggLSBiYXNlSCAvIDI7XG5cdFx0XHQvLyB3ICo9IHNjYWxlWFxuXHRcdFx0Ly8gaCAqPSBzY2FsZVlcblx0XHRcdC8vIHggKj0gc2NhbGVYXG5cdFx0XHQvLyB5ICo9IHNjYWxlWVxuICAgICAgICAgICAgLy8gY29uc3QgcCA9IGJveERlYnVnZ2VyLmNvbnZlcnRUb05vZGVTcGFjZUFSKGNjLnYyKHgseSkpO1xuXHRcdFx0Ly8geCA9IHAueDtcblx0XHRcdC8vIHkgPSBwLnk7XG5cdFx0XHRsYmxOb2RlLnggPSB4O1xuXHRcdFx0bGJsTm9kZS55ID0geSArIGg7XG5cdFx0XHQvLyBkbi5zY2FsZVggPSBzY2FsZVg7XG5cdFx0XHQvLyBkbi5zY2FsZVkgPSBzY2FsZVk7XG5cdFx0XHQvLyBkbi5zY2FsZSA9IGFyZWEubWFwU2NhbGU7IC8vIG1pblNjYWxlOyAvLyB0aGlzLl9tYXBTY2FsZU1heCAqIGFyZWEubWFwU2NhbGU7IC8vIDtcblx0XHRcdGNvbnNvbGUubG9nKCdbZGVidWddJywgYXJlYS5za2VKc29uRGF0YS5uYW1lLCB4LCB5LCB3LCBoKTtcblx0XHRcdGdyYXAuZmlsbFJlY3QoeCwgeSwgdywgaCk7XG5cdFx0XHRncmFwLnN0cm9rZSgpO1xuXHRcdFx0XG5cdFx0fSk7XG5cblx0fSxcblx0YWRkUHJlbG9hZEFuaW1hKCkge1xuXG5cdH0sXG5cblx0cHJlbG9hZCgpIHtcblxuXHRcdGNvbnN0IHByZWxvYWRBcnIgPSB0aGlzLl9pbWFnZVJlc0xpc3QuY29uY2F0KHRoaXMuX2F1ZGlvUmVzTGlzdCkuY29uY2F0KHRoaXMuX2FuaW1hUmVzTGlzdCk7XG5cdFx0Ly8gY29uc29sZS5sb2cocHJlbG9hZEFycik7XG5cdFx0Y2MuYXNzZXRNYW5hZ2VyLmxvYWRBbnkocHJlbG9hZEFyciwgbnVsbCwgKGYsIHQsIGl0ZW0pID0+IHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGYsIHQsIGl0ZW0pXG5cdFx0fSwgKGVyciwgZGF0YSkgPT4ge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZXJyLCBkYXRhKTtcblx0XHRcdGNvbnN0IGdyb3VuZCA9IGNjLmZpbmQoYENhbnZhcy9mcmFtZS1ib3JkZXIvZ3JvdW5kYCk7XG5cdFx0XHRjb25zdCBncm91bmRCZyA9IGNjLmZpbmQoYENhbnZhcy9mcmFtZS1ib3JkZXIvZ3JvdW5kL2JnYCk7XG5cdFx0XHRncm91bmRCZy5hY3RpdmUgPSBmYWxzZTtcblx0XHRcdGNvbnN0IGJhc2VSZWN0ID0gdGhpcy5kYXRhLmJnSXRlbS5yZWN0O1xuXHRcdFx0Z2V0U3ByaXRlRnJpbWVCeVVybCh0aGlzLmRhdGEuYmdJdGVtLnVybCwgKHNmKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGdzID0gZ3JvdW5kQmcuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSk7XG5cdFx0XHRcdGdzLnNwcml0ZUZyYW1lID0gc2Y7XG5cdFx0XHRcdGdyb3VuZEJnLmFjdGl2ZSA9IHRydWU7XG5cblx0XHRcdFx0bGV0IGRiQ291bnQgPSAwO1xuXHRcdFx0XHRsZXQgZmluaXNoRGJDb3VudCA9IDBcblx0XHRcdFx0Zm9yKGNvbnN0IGJsb2NrIG9mIHRoaXMuZGF0YS5ob3Rab25lSXRlbUFycikge1xuXHRcdFx0XHRcdGlmIChibG9jay5nSWR4ID09ICcwJyB8fCBibG9jay5nSWR4ID09ICcxJykge1xuXHRcdFx0XHRcdFx0ZGJDb3VudCsrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IoY29uc3QgYmxvY2sgb2YgdGhpcy5kYXRhLmhvdFpvbmVJdGVtQXJyKSB7XG5cblx0XHRcdFx0XHRcblx0XHRcdFx0XHRpZiAoYmxvY2suZ0lkeCA9PSAnMicpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHMxID0gKChncm91bmQud2lkdGggIC8gYmxvY2suaW1nU2l6ZVcpICsgKGdyb3VuZC5oZWlnaHQgIC8gYmxvY2suaW1nU2l6ZUgpKSAvIDJcblx0XHRcdFx0XHRcdGNvbnN0IG5vZGUgPSBuZXcgY2MuTm9kZSgpO1xuXHRcdFx0XHRcdFx0bm9kZS5wYXJlbnQgPSBncm91bmQ7XG5cdFx0XHRcdFx0XHRjb25zdCBzcHIgPSBub2RlLmFkZENvbXBvbmVudChjYy5TcHJpdGUpO1xuXHRcdFx0XHRcdFx0Z2V0U3ByaXRlRnJpbWVCeVVybChibG9jay5waWNfdXJsLCAoc2YpID0+IHtcblx0XHRcdFx0XHRcdHNwci5zcHJpdGVGcmFtZSA9IHNmO1xuXHRcdFx0XHRcdFx0bm9kZS5zY2FsZSA9IHMxO1xuXHRcdFx0XHRcdFx0fSlcblxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoYmxvY2suZ0lkeCA9PSAnMCcgfHwgYmxvY2suZ0lkeCA9PSAnMScpIHtcblxuXHRcdFx0XHRcdFx0Y29uc3QgbiA9IG5ldyBjYy5Ob2RlKCk7XG5cdFx0XHRcdFx0XHQvLyBuLnNjYWxlID0gMC4yNTtcblx0XHRcdFx0XHRcdG4uc2NhbGUgPSBncm91bmQud2lkdGggLyBncm91bmRCZy53aWR0aDtcblxuXHRcdFx0XHRcdFx0bi5wYXJlbnQgPSBncm91bmQ7XG5cdFx0XHRcdFx0XHRuLmFjdGl2ZSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHRpZiAoYmxvY2suYW5pbVR5cGUgPT0gJ3NwaW5lJykge1xuXHRcdFx0XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gbi5hZGRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xuXHRcdFx0XHRcdFx0XHRuLmlzU3BpbmUgPSB0cnVlO1xuXG5cdFx0XHRcdFx0XHRcdGxvYWRTcGluZShza2VsZXRvbiwgYmxvY2sudGV4UG5nRGF0YS5uYW1lLCB7XG5cdFx0XHRcdFx0XHRcdFx0dGV4OiBibG9jay50ZXhQbmdEYXRhLnVybCwgXG5cdFx0XHRcdFx0XHRcdFx0YXRsYXM6IGJsb2NrLnRleEpzb25EYXRhLnVybCxcblx0XHRcdFx0XHRcdFx0XHRza2U6IGJsb2NrLnNrZUpzb25EYXRhLnVybCxcblx0XHRcdFx0XHRcdFx0fSkudGhlbigoe3dpZHRoLCBoZWlnaHR9KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bi53aWR0aCA9IHdpZHRoO1xuXHRcdFx0XHRcdFx0XHRcdG4uaGVpZ2h0ID0gaGVpZ2h0O1x0XG5cdFx0XHRcdFx0XHRcdFx0bi5hY3RpdmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdC8vIGRiLnBsYXlBbmltYXRpb24oJ251bGwnLCAwKTtcblx0XHRcdFx0XHRcdFx0XHQvLyBza2VsZXRvbi5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdFx0XHRcdFx0XHRcdC8vIHNrZWxldG9uLnNldEFuaW1hdGlvbigwLCAnZW5sYXJnZScsIHRydWUpO1x0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5fYWxsQW5pbWF0aW9uTm9kZXMucHVzaChuKTtcblx0XHRcdFx0XHRcdFx0XHRmaW5pc2hEYkNvdW50Kys7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZmluaXNoRGJDb3VudCwgZGJDb3VudClcblx0XHRcdFx0XHRcdFx0XHRpZiAoZmluaXNoRGJDb3VudCA9PSBkYkNvdW50KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pLmNhdGNoKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRmaW5pc2hEYkNvdW50Kys7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZmluaXNoRGJDb3VudCwgZGJDb3VudClcblx0XHRcdFx0XHRcdFx0XHRpZiAoZmluaXNoRGJDb3VudCA9PSBkYkNvdW50KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGRiID0gbi5hZGRDb21wb25lbnQoZHJhZ29uQm9uZXMuQXJtYXR1cmVEaXNwbGF5KTtcblxuXHRcdFx0XHRcdFx0XHRsb2FkRHJhZ29uQm9uZXMoZGIsIHtcblx0XHRcdFx0XHRcdFx0XHR0ZXg6IGJsb2NrLnRleFBuZ0RhdGEudXJsLCBcblx0XHRcdFx0XHRcdFx0XHRhdGxhczogYmxvY2sudGV4SnNvbkRhdGEudXJsLFxuXHRcdFx0XHRcdFx0XHRcdHNrZTogYmxvY2suc2tlSnNvbkRhdGEudXJsLFxuXHRcdFx0XHRcdFx0XHR9KS50aGVuKCh7d2lkdGgsIGhlaWdodH0pID0+IHtcblx0XHRcdFx0XHRcdFx0XHRuLndpZHRoID0gd2lkdGg7XG5cdFx0XHRcdFx0XHRcdFx0bi5oZWlnaHQgPSBoZWlnaHQ7XHRcblx0XHRcdFx0XHRcdFx0XHRuLmFjdGl2ZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0ZGIucGxheUFuaW1hdGlvbignbnVsbCcsIDApO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuX2FsbEFuaW1hdGlvbk5vZGVzLnB1c2gobik7XG5cdFx0XHRcdFx0XHRcdFx0ZmluaXNoRGJDb3VudCsrO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGZpbmlzaERiQ291bnQsIGRiQ291bnQpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGZpbmlzaERiQ291bnQgPT0gZGJDb3VudCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkRW5kKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KS5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0ZmluaXNoRGJDb3VudCsrO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGZpbmlzaERiQ291bnQsIGRiQ291bnQpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGZpbmlzaERiQ291bnQgPT0gZGJDb3VudCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkRW5kKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XG5cblx0XHRcdFx0XHRcdGlmIChibG9jay5nSWR4ID09ICcwJykge1xuXHRcdFx0XHRcdFx0XHRjb25zdCByZWN0SW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0XHRub2RlOiBuLFxuXHRcdFx0XHRcdFx0XHRcdGF1ZGlvX3VybDogYmxvY2suYXVkaW9fdXJsICxcblx0XHRcdFx0XHRcdFx0XHRyZWN0OiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR4OiBibG9jay5yZWN0LnggLyBiYXNlUmVjdC53aWR0aCxcblx0XHRcdFx0XHRcdFx0XHRcdHk6IGJsb2NrLnJlY3QueSAvIGJhc2VSZWN0LmhlaWdodCxcblx0XHRcdFx0XHRcdFx0XHRcdHdpZHRoOiBibG9jay5yZWN0LndpZHRoIC8gYmFzZVJlY3Qud2lkdGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ6IGJsb2NrLnJlY3QuaGVpZ2h0IC8gYmFzZVJlY3QuaGVpZ2h0LFxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fZmlndXJlUG9pbnRSZWN0QXJyYXkucHVzaChyZWN0SW5mbyk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gdGhpcy5hZGRSZWN0Tm9kZUxpc3RlbmVyKGJsb2NrKTtcblx0XHRcblx0XHRcdFx0XHRcdFx0aWYgKGJsb2NrLmxhYmVsVGV4dCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGsgPSArYmxvY2subGFiZWxUZXh0ICogMTAwMDtcblx0XHRcdFx0XHRcdFx0XHRpZighaXNOYU4oaykpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuX2hpbnRzTm9kZUxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGU6IG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFmdGVyOiBrXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0XG5cdFx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEpO1xuXHRcdFx0Y29uc29sZS5sb2coJ3Jlc291cmNlIHBlcmxvYWQgZmluaXNoJyk7XG5cbi8vIDw8PDw8PDwgSEVBRFxuLy8gPT09PT09PVxuLy8gXHRcdFx0aWYgKHdpbmRvdyAmJiB3aW5kb3dbXCJhaXJcIl0pIHtcbi8vIFx0XHRcdFx0Ly8gY2MuZmluZCgnQ2FudmFzJykub3BhY2l0eSA9IDA7XG4vLyBcdFx0XHRcdHdpbmRvdy5haXIub25Db3Vyc2VJblNjcmVlbiA9IChuZXh0KSA9PiB7XG4vLyBcdFx0XHRcdFx0Ly8gY2MuZmluZCgnQ2FudmFzJykub3BhY2l0eSA9IDI1NTtcbi8vIFx0XHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcbi8vIFx0XHRcdFx0XHRuZXh0KCk7XG4vLyBcdFx0XHRcdH1cbi8vIFx0XHRcdFx0d2luZG93LmFpci5oaWRlQWlyQ2xhc3NMb2FkaW5nKCk7XG4vLyBcdFx0XHR9IGVsc2Uge1xuLy8gXHRcdFx0XHR0aGlzLmxvYWRFbmQoKTtcbi8vIFx0XHRcdH1cbi8vID4+Pj4+Pj4gMmQ0NjFlMTkxMDU3MWJjZmM2YWQ0ZGM5M2MyY2VkYWZjMjA5MjNlYVxuXG5cdFx0XHRjYy5kZWJ1Zy5zZXREaXNwbGF5U3RhdHMoZmFsc2UpO1xuXHRcdH0pO1xuXHR9LFxuXG5cblx0bG9hZEVuZCgpIHtcblx0XHRpZiAod2luZG93ICYmIHdpbmRvd1tcImFpclwiXSAmJiB3aW5kb3dbXCJhaXJcIl0uaGlkZUFpckNsYXNzTG9hZGluZykge1xuXHRcdFx0d2luZG93W1wiYWlyXCJdLmhpZGVBaXJDbGFzc0xvYWRpbmcoKTtcblx0XHR9XG5cdFx0dGhpcy5pbml0RGF0YSgpO1xuXHRcdC8vIHRoaXMuaW5pdEF1ZGlvKCk7XG5cdFx0Ly8gdGhpcy5pbml0VmlldygpO1xuXHRcdHRoaXMuaW5pdEJnKCk7XG5cdFx0Ly8gdGhpcy5pbml0TGlzdGVuZXIoKTtcblx0XHR0aGlzLmRlYnVnR3JhcGhpY3MoKTtcblx0XHR0aGlzLmNyZWF0ZVN0YXRlTWFjaGluZSgpO1xuXHR9LFxuXG5cdF9jYW50b3VjaDogbnVsbCxcblx0aW5pdERhdGEoKSB7XG5cdFx0Ly8g5omA5pyJ5YWo5bGA5Y+Y6YePIOm7mOiupOmDveaYr251bGwgXG5cdFx0dGhpcy5fY2FudG91Y2ggPSB0cnVlO1xuXHR9LFxuXG5cdC8vIGF1ZGlvQnRuOiBudWxsLFxuXHQvLyBpbml0QXVkaW8oKSB7XG5cdC8vIFx0Y29uc3QgYXVkaW9Ob2RlID0gY2MuZmluZCgnQ2FudmFzL3Jlcy9hdWRpbycpO1xuXG5cdC8vIFx0Y29uc3QgZ2V0QXVkaW9CeVJlc05hbWUgPSAocmVzTmFtZSkgPT4ge1xuXHQvLyBcdFx0cmV0dXJuIGF1ZGlvTm9kZS5nZXRDaGlsZEJ5TmFtZShyZXNOYW1lKS5nZXRDb21wb25lbnQoY2MuQXVkaW9Tb3VyY2UpO1xuXHQvLyBcdH1cblxuXHQvLyBcdHRoaXMuYXVkaW9CdG4gPSBnZXRBdWRpb0J5UmVzTmFtZSgnYnRuJyk7XG5cblx0Ly8gfSxcblxuXG5cdC8vIGluaXRWaWV3KCkge1xuXG5cdC8vIFx0Ly8gdGhpcy5pbml0QmcoKTtcblx0Ly8gXHQvLyB0aGlzLmluaXRQaWMoKTtcblx0Ly8gXHQvLyB0aGlzLmluaXRCdG4oKTtcblx0Ly8gXHR0aGlzLmluaXRJY29uKCk7XG5cdC8vIH0sXG5cblx0YWRkUmVjdE5vZGVMaXN0ZW5lcihkYXRhKSB7XG5cblxuXHRcdGNvbnN0IGJnID0gY2MuZmluZChgQ2FudmFzL2ZyYW1lLWJvcmRlci9ncm91bmQvYmdgKS5wYXJlbnQ7XG5cblx0XHRjb25zdCByYXRlID0gKGJnLnNjYWxlICogYmcud2lkdGgpIC8gdGhpcy5kYXRhLmJnSXRlbS5yZWN0LndpZHRoO1xuXG5cdFx0Y29uc3QgcmVjdE5vZGUgPSBuZXcgY2MuTm9kZSgpO1xuXHRcdHJlY3ROb2RlLm5hbWUgPSAncmVjdCcgKyBkYXRhLmluZGV4O1xuXHRcdGJnLmFkZENoaWxkKHJlY3ROb2RlLCAyMCk7XG5cblxuXHRcdGNvbnN0IGN0eCA9IHJlY3ROb2RlLmFkZENvbXBvbmVudChjYy5HcmFwaGljcyk7XG5cdFx0Ly8g57qi6Imy55+p5b2iXG5cdFx0Y3R4LmxpbmVXaWR0aCA9IDQ7XG5cdFx0Y3R4LnN0cm9rZUNvbG9yID0gY2MuQ29sb3IuQkxBQ0s7XG5cdFx0Y3R4LmZpbGxDb2xvciA9IGNjLkNvbG9yLldISVRFLnNldEEoMTAwKTtcblxuXHRcdGNvbnN0IHNjYWxlID0gcmF0ZSAvIGJnLnNjYWxlWTtcblxuXHRcdGNvbnNvbGUubG9nKCdzY2FsZX4gOiAnLCBzY2FsZSlcblxuXHRcdHJlY3ROb2RlLndpZHRoID0gZGF0YS5yZWN0LndpZHRoICogc2NhbGU7XG5cdFx0cmVjdE5vZGUuaGVpZ2h0ID0gZGF0YS5yZWN0LmhlaWdodCAqIHNjYWxlO1xuXHRcdHJlY3ROb2RlLnggPSAtYmcud2lkdGggLyAyICsgZGF0YS5yZWN0LnggKiBzY2FsZSArIGJnLng7XG5cdFx0cmVjdE5vZGUueSA9IGJnLmhlaWdodCAvIDIgLSBkYXRhLnJlY3QuaGVpZ2h0ICogc2NhbGUgLSBkYXRhLnJlY3QueSAqIHNjYWxlICsgYmcueTtcblxuXHRcdHJlY3ROb2RlLmFuY2hvclggPSByZWN0Tm9kZS5hbmNob3JZID0gMDtcblxuXHRcdGNvbnNvbGUubG9nKCdkYXRhOiAnLCBkYXRhKTtcblx0XHRjb25zb2xlLmxvZygncmVjdE5vZGU6ICcsIHJlY3ROb2RlKTtcblxuXG5cdFx0Ly8gaWYgKHBhZ2VEYXRhLmJnSXRlbS5pc1Nob3dEZWJ1Z0xpbmUpIHtcblx0XHRcdGN0eC5yZWN0KDAsIDAsIHJlY3ROb2RlLndpZHRoLCByZWN0Tm9kZS5oZWlnaHQpO1xuXHRcdFx0Ly8gY3R4LmZpbGxSZWN0KDAsIDAsIDIwMCwgMjAwKTtcblx0XHQvLyB9XG5cdFx0Y3R4LnN0cm9rZSgpO1xuXHRcdGN0eC5maWxsKCk7XG5cblx0XHRyZWN0Tm9kZS5hZGRDb21wb25lbnQoY2MuQnV0dG9uKTtcblx0XHRyZWN0Tm9kZS5vbihcImNsaWNrXCIsICgpID0+IHtcblx0XHRcdGNvbnNvbGUubG9nKFwiIGluIHJlY3ROb2RlIGNsaWNrXCIpO1xuXG5cblx0XHRcdGNvbnN0IF94ID0gcmVjdE5vZGUueCAvIGJnLndpZHRoO1xuXHRcdFx0Y29uc3QgX3kgPSByZWN0Tm9kZS55IC8gYmcuaGVpZ2h0O1xuXHRcdFx0Y29uc3QgX3cgPSByZWN0Tm9kZS53aWR0aCAvIGJnLndpZHRoO1xuXHRcdFx0Y29uc3QgX2ggPSByZWN0Tm9kZS5oZWlnaHQgLyBiZy5oZWlnaHQ7XG5cblx0XHRcdGNvbnN0IHBvcyA9IHtcblx0XHRcdFx0eDogX3ggKyBfdyAvIDIgKyAwLjUsXG5cdFx0XHRcdHk6IC0oX3kgKyBfaCAvIDIgLSAwLjUpXG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9sYXN0RmluZ2VyUG9zaXRpb24gPSB7XG5cdFx0XHRcdHBvczogcG9zLFxuXHRcdFx0XHRkaXJ0eTogdHJ1ZVxuXHRcdFx0fTtcblxuXHRcdH0pXG5cblx0fSxcblxuXHRpbml0QmcoKSB7XG5cdFx0Y29uc3QgYmdOb2RlID0gY2MuZmluZCgnQ2FudmFzL2JnJyk7XG5cdFx0YmdOb2RlLnNjYWxlID0gdGhpcy5fbWFwU2NhbGVNYXg7XG5cdFx0Y29uc29sZS5sb2coJ3RoaXMuX21hcFNjYWxlTWF4JywgdGhpcy5fbWFwU2NhbGVNYXgpO1xuXHR9LFxuXG5cdFxuXHRcblxuXHQvKmluaXRCdG4oKSB7XG5cblx0XHR0aGlzLmN1clBhZ2UgPSAwO1xuXHRcdGNvbnN0IGJvdHRvbVBhcnQgPSBjYy5maW5kKCdDYW52YXMvYm90dG9tUGFydCcpO1xuXHRcdGJvdHRvbVBhcnQuekluZGV4ID0gNTsgLy8g5o+Q6auY5bGC57qnXG5cblx0XHRib3R0b21QYXJ0LnggPSBib3R0b21QYXJ0LnBhcmVudC53aWR0aCAvIDI7XG5cdFx0Ym90dG9tUGFydC55ID0gLWJvdHRvbVBhcnQucGFyZW50LmhlaWdodCAvIDI7XG5cblx0XHRjb25zdCBsZWZ0QnRuTm9kZSA9IGJvdHRvbVBhcnQuZ2V0Q2hpbGRCeU5hbWUoJ2J0bl9sZWZ0Jyk7XG5cdFx0Ly/oioLngrnkuK3mt7vliqDkuoZidXR0b27nu4Tku7Yg5YiZ5Y+v5Lul5re75YqgY2xpY2vkuovku7bnm5HlkKxcblx0XHRsZWZ0QnRuTm9kZS5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRpZiAoIXRoaXMuX2NhbnRvdWNoKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICh0aGlzLmN1clBhZ2UgPT0gMCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmN1clBhZ2UgPSAwXG5cdFx0XHR0aGlzLmxlZnRNb3ZlKCk7XG5cblx0XHRcdC8vIOa4uOaIj+e7k+adn+aXtumcgOimgeiwg+eUqOi/meS4quaWueazlemAmuefpeezu+e7n+S9nOS4muWujOaIkFxuXHRcdFx0b25Ib21ld29ya0ZpbmlzaCgpO1xuXG5cdFx0XHRjYy5hdWRpb0VuZ2luZS5wbGF5KHRoaXMuYXVkaW9CdG4uY2xpcCwgZmFsc2UsIDAuOClcblx0XHR9KVxuXG5cdFx0Y29uc3QgcmlnaHRCdG5Ob2RlID0gYm90dG9tUGFydC5nZXRDaGlsZEJ5TmFtZSgnYnRuX3JpZ2h0Jyk7XG5cdFx0Ly/oioLngrnkuK3mt7vliqDkuoZidXR0b27nu4Tku7Yg5YiZ5Y+v5Lul5re75YqgY2xpY2vkuovku7bnm5HlkKxcblx0XHRyaWdodEJ0bk5vZGUub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLl9jYW50b3VjaCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5jdXJQYWdlID09IDEpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmN1clBhZ2UgPSAxXG5cdFx0XHR0aGlzLnJpZ2h0TW92ZSgpO1xuXG5cdFx0XHRjYy5hdWRpb0VuZ2luZS5wbGF5KHRoaXMuYXVkaW9CdG4uY2xpcCwgZmFsc2UsIDAuNSlcblx0XHR9KVxuXHR9LCovXG5cblxuXG5cblx0Ly8gdXBkYXRlIChkdCkge30sXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXHRfdGltZW91dElkczogbnVsbCxcblx0X2ludGVydmFsSWRzOiBudWxsLFxuXHQvLyDnlJ/lkb3lkajmnJ9cblx0b25EZXN0cm95KCkge1xuXHRcdGNvbnNvbGUubG9nKCdvcDE1IG9uRGVzdHJveScpO1xuXHRcdHRoaXMuX3RpbWVvdXRJZHMuZm9yRWFjaChpZCA9PiB7XG5cdFx0XHRjbGVhclRpbWVvdXQoaWQpO1xuXHRcdH0pO1xuXHRcdHRoaXMuX2ludGVydmFsSWRzLmZvckVhY2goaWQgPT4ge1xuXHRcdFx0Y2xlYXJJbnRlcnZhbChpZCk7XG5cdFx0fSk7XG5cdFx0dGhpcy5nYW1lTWFjaGluZVNlcnZpY2Uuc3RvcENoaWxkKCk7XG5cdFx0dGhpcy5nYW1lTWFjaGluZVNlcnZpY2Uuc3RvcCgpO1xuXHRcdGlmKHdpbmRvdy5jb3Vyc2V3YXJlICYmIHdpbmRvdy5jb3Vyc2V3YXJlLmNsb3NlT3Ntb0ZpbmdlclJlYWQpIHtcblx0XHRcdGlmICh0aGlzLmlzT3BlbmVkT3Ntb0ZpbmdlclJlYWQpIHtcblx0XHRcdFx0d2luZG93LmNvdXJzZXdhcmUuY2xvc2VPc21vRmluZ2VyUmVhZCgpXG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cblxuXG5cbn0pO1xuIl19
\ No newline at end of file
diff --git a/temp/quick-scripts/src/assets/OP15/scene/OP15.js b/temp/quick-scripts/src/assets/OP15/scene/OP15.js
index ef4a102..a444447 100644
--- a/temp/quick-scripts/src/assets/OP15/scene/OP15.js
+++ b/temp/quick-scripts/src/assets/OP15/scene/OP15.js
@@ -206,8 +206,6 @@ cc.Class({
                 console.log('[answer] thinking and playing'); // check every second
 
                 var id = setInterval(function () {
-                  console.log("aaaaaa");
-
                   if (!_this._lastFingerPosition.dirty) {
                     return;
                   }
@@ -227,7 +225,7 @@ cc.Class({
                   } else {
                     callback('WRONG');
                   }
-                }, 300);
+                }, 100);
 
                 _this._intervalIds.push(id); // Perform cleanup
 
@@ -258,8 +256,17 @@ cc.Class({
                 var an = context.questions[context.questionIndex].node;
                 console.log('in right ' + typeof an);
                 an.active = true;
-                var dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);
-                dragonDisplay.playAnimation('normal', 0);
+
+                if (an.isSpine) {
+                  var skeleton = an.getComponent(sp.Skeleton);
+                  skeleton.setToSetupPose();
+                  setTimeout(function () {
+                    skeleton.setAnimation(0, 'normal', true);
+                  }, 1);
+                } else {
+                  var dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);
+                  dragonDisplay.playAnimation('normal', 0);
+                }
 
                 var ddLogoCat = _this.logoCat.getComponent(dragonBones.ArmatureDisplay);
 
@@ -610,8 +617,6 @@ cc.Class({
     this.isDebug = false;
   },
   checkInRegion: function checkInRegion(r) {
-    console.log('r~~~: ', r);
-
     if (!this._lastFingerPosition && !this._lastFingerPosition.pos) {
       return null;
     }
@@ -623,6 +628,8 @@ cc.Class({
       x: 0,
       y: 0
     };
+    console.log('~p: ', p);
+    console.log('~r: ', r);
     var w = p.x > r.x && p.x < r.x + r.width;
     var h = p.y > r.y && p.y < r.y + r.height;
     return w && h;
@@ -645,100 +652,567 @@ cc.Class({
   },
   getDefaultData: function getDefaultData() {
     return {
-      "begin_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "begin_sep_time": 1,
-      "guide_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "playing_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "right_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "wrong_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "wrong_audio1": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "wrong_audio2": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
-      "end_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
+      "begin_audio": "https://teach.cdn.ireadabc.com/9be46c9adb540ed8a60763f1e657ccb7.mp3",
+      "begin_sep_time": 66,
+      "guide_audio": "https://teach.cdn.ireadabc.com/9523c8ed45faee686363dd157b0d7426.mp3",
+      "playing_audio": "https://teach.cdn.ireadabc.com/d6a953052a6f80549730cb4307c55719.mp3",
+      "right_audio": "https://teach.cdn.ireadabc.com/43791fc418e666df5e9ec1b7bf936409.mp3",
+      "wrong_audio": "https://teach.cdn.ireadabc.com/7dd85f025a132c2eef8daee38d900287.mp3",
+      "wrong_audio1": "https://teach.cdn.ireadabc.com/a76afb06af0799bf538e38f9f80a2261.mp3",
+      "wrong_audio2": "https://teach.cdn.ireadabc.com/daee88b6f2eadd78b60436eedffcae08.mp3",
+      "end_audio": "https://teach.cdn.ireadabc.com/9c1e87b3c184b06e14e44bb058b9804e.mp3",
       "bgItem": {
-        "url": "http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png",
+        "url": "https://teach.cdn.ireadabc.com/16b6dacd8e6c1ce6da16f500a66b366b.jpg",
         "rect": {
-          "x": 736.95,
+          "x": 319.68,
           "y": 0,
-          "width": 599.09,
-          "height": 775
+          "width": 257.64,
+          "height": 342
         }
       },
       "hotZoneItemArr": [{
-        "id": "1659333645573",
+        "id": "1650544807877",
         "index": 0,
-        "audio_url": "http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3",
-        "itemType": "rect",
-        "fontScale": 1.61953125,
+        "itemType": "pic",
+        "fontScale": 0.70078125,
         "imgScale": 1,
         "imgSizeW": 0,
         "imgSizeH": 0,
-        "mapScale": 1.61953125,
+        "mapScale": 0.70078125,
         "dragDot": {
-          "x": 1036.5,
-          "y": 387.5
+          "x": 448.5,
+          "y": 176.65207877461702
         },
         "gIdx": "1",
-        "labelText": "1",
-        "posX": 887.5,
-        "posY": 165.5,
         "skeJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json",
-          "name": "spineboy-pro.json"
+          "url": "https://teach.cdn.ireadabc.com/66c7c0847c33f7f95cb0035fe14c4405.json",
+          "name": "monkey_ske.json"
         },
         "texJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas",
-          "name": "spineboy-pro.atlas"
+          "url": "https://teach.cdn.ireadabc.com/98a8272cd2d97047b090ff10e948b978.json",
+          "name": "monkey_tex.json"
         },
         "texPngData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png",
-          "name": "spineboy-pro.png"
+          "url": "https://teach.cdn.ireadabc.com/c35ced408ad68a52c4ec5375373d3627.png",
+          "name": "monkey_tex.png"
         },
-        "animType": "spine",
         "rect": {
-          "x": 48.05,
-          "y": 65.5,
-          "width": 205,
-          "height": 200
+          "x": 128.83,
+          "y": 171,
+          "width": 0,
+          "height": 0
         }
       }, {
-        "id": "1659334098930",
+        "id": "1650546079000",
         "index": 1,
-        "audio_url": "http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3",
+        "audio_url": "https://teach.cdn.ireadabc.com/f9edc84a669688c5abddd55e2aab015d.mp3",
         "itemType": "rect",
-        "fontScale": 1.61953125,
+        "fontScale": 0.70078125,
         "imgScale": 1,
         "imgSizeW": 0,
         "imgSizeH": 0,
-        "mapScale": 1.61953125,
+        "mapScale": 0.70078125,
         "dragDot": {
-          "x": 1036.5,
-          "y": 387.5
+          "x": 448.5,
+          "y": 170.54984583761566
         },
         "gIdx": "0",
-        "labelText": "1",
-        "posX": 1212.5,
-        "posY": 643.5,
+        "labelText": "21.3",
+        "posX": 692.4127500193598,
+        "posY": 218.14695959185556,
         "skeJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json",
-          "name": "alien-pro.json"
+          "url": "https://teach.cdn.ireadabc.com/e3c67a25dd3bb34fe113e126e6e1cc81.json",
+          "name": "ox_ske.json"
         },
         "texJsonData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas",
-          "name": "alien-pro.atlas"
+          "url": "https://teach.cdn.ireadabc.com/81d487bf31d3a4d0f25f44c184ba9233.json",
+          "name": "ox_tex.json"
         },
         "texPngData": {
-          "url": "http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png",
-          "name": "alien-pro.png"
+          "url": "https://teach.cdn.ireadabc.com/e199392b52a735f6e37a6815ec3bb10e.png",
+          "name": "ox_tex.png"
         },
-        "animType": "spine",
         "rect": {
-          "x": 375.56,
-          "y": 543.5,
-          "width": 200,
-          "height": 200
+          "x": 159.34,
+          "y": 138.66,
+          "width": 38.83,
+          "height": 38.83
+        }
+      }, {
+        "id": "1650546232189",
+        "index": 2,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/0a3ea93c62ff4087859ed587020c53b5.json",
+          "name": "car_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/6000e4fbbb95f545afa5456c64d8c7d1.json",
+          "name": "car_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/75e9972c15d2a67deedf60d448fd4e69.png",
+          "name": "car_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546321127",
+        "index": 3,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/d4c1e1abcf3d8f5415747fd2599b8a8c.json",
+          "name": "Chair_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/1d7254eb7fa3008e8178347bb944cdcb.json",
+          "name": "Chair_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/48e85e8ff384eed72dfe865fc981e18c.png",
+          "name": "Chair_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546335240",
+        "index": 4,
+        "audio_url": "https://teach.cdn.ireadabc.com/6182d46bad09fccb8934217d33557204.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "53",
+        "posX": 452.5,
+        "posY": 129,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/b462d80c21aa75995dd99f0f43ccf1e6.json",
+          "name": "quilt_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/866c9e2987870947fc63bce108ef157a.json",
+          "name": "quilt_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/d952c37f40c3cf07e024edfd4416423e.png",
+          "name": "quilt_tex.png"
+        },
+        "rect": {
+          "x": 71.99,
+          "y": 100.75,
+          "width": 50.83,
+          "height": 36.97
+        }
+      }, {
+        "id": "1650546644333",
+        "index": 5,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/6b8a1a7b0fd23686ea60465279cd4da0.json",
+          "name": "robot_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/31a74ed95fe48adab00702675811c3a8.json",
+          "name": "robot_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/e57052537d89356b0a79d8cb77980219.png",
+          "name": "robot_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546658697",
+        "index": 6,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/bf3616060460439eeb3fd5227370e15a.json",
+          "name": "panda_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/2dafeb25c973c910035ff7ed1a6a6334.json",
+          "name": "panda_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/75d90b05345fa470285ac488cb205cfd.png",
+          "name": "panda_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546672448",
+        "index": 7,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/5feff811b0117dd8e67973072e60d310.json",
+          "name": "queen_1_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/bb5856b92b09c5fe7a1da00bb68134ca.json",
+          "name": "queen_1_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/f4e5a138b086ef3dcfa57432543b66e9.png",
+          "name": "queen_1_tex.png"
+        },
+        "animType": "dragonBone",
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650546687069",
+        "index": 8,
+        "audio_url": "https://teach.cdn.ireadabc.com/301858df7b07e661426a006acb26059c.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "42.5",
+        "posX": 512.3883524629834,
+        "posY": 259.83617125849,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/f3a8efcd1850ee8a6cee89a18e86dc4a.json",
+          "name": "milk_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/73b05f19d419bd3ac17c2b92dab88423.json",
+          "name": "milk_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/e38375da46f85a23202d5cbc812d62e4.png",
+          "name": "milk_tex.png"
+        },
+        "rect": {
+          "x": 37.72,
+          "y": 168.1,
+          "width": 21.17,
+          "height": 40.34
+        }
+      }, {
+        "id": "1650547060490",
+        "index": 9,
+        "audio_url": "https://teach.cdn.ireadabc.com/05e5b29aeffa4ef94bcc5b23167aec90.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "47.7",
+        "posX": 483.22135734006736,
+        "posY": 245.38039407076505,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/99a6e6d9361eca7e51ed34ca2e0fd017.json",
+          "name": "bird_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/6a379ddbe6df1806368c43c8ee82332d.json",
+          "name": "bird_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/cf04c63104d89511902578944061f980.png",
+          "name": "bird_tex.png"
+        },
+        "rect": {
+          "x": 17.91,
+          "y": 140.83,
+          "width": 18.52,
+          "height": 73.95
+        }
+      }, {
+        "id": "1650547373869",
+        "index": 10,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "labelText": "60",
+        "posX": 420.5,
+        "posY": 295,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/7ebc28f3f339b16ca48d20f2a3eb44c1.json",
+          "name": "alligator_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/b04e8206fd217bd22dcdac1008393317.json",
+          "name": "alligator_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/b3990d94612bd3d6e25cf200f85e4334.png",
+          "name": "alligator_tex.png"
+        },
+        "rect": {
+          "x": 16.06,
+          "y": 229.24,
+          "width": 103.52,
+          "height": 86.89
+        }
+      }, {
+        "id": "1650547482398",
+        "index": 11,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/a19f2ed7c297c70c639e54e969d64593.json",
+          "name": "rabbit_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/4b4f8189cf79fadd7e6533ad84db96be.json",
+          "name": "rabbit_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/8f953c861eac94e4e22a8e4ec3eb56b5.png",
+          "name": "rabbit_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650547496232",
+        "index": 12,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/89e0fc6085c294866142803b4ff267ba.json",
+          "name": "King_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/d6cfd2d9cd2cd9aff09ab7f03e287421.json",
+          "name": "King_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/8c02c3561a2eea0423cb1102200e76f9.png",
+          "name": "King_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650547510648",
+        "index": 13,
+        "audio_url": "https://teach.cdn.ireadabc.com/717ee9713b18d32d38ee089c0abc85ea.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "10.2",
+        "posX": 641.6680134951944,
+        "posY": 288.93672702541255,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/3b7113ebdedcae54be6d0b9633875b88.json",
+          "name": "net_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/fc810762f1f2025585e722e43e94137b.json",
+          "name": "net_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/5c90820da4f559280fee4579e8db2dbc.png",
+          "name": "net_tex.png"
+        },
+        "rect": {
+          "x": 123.03,
+          "y": 183.02,
+          "width": 37.9,
+          "height": 52.68
+        }
+      }, {
+        "id": "1650547555018",
+        "index": 14,
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "1",
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/0a5c8df5a23aca7a7540b87340c7608f.json",
+          "name": "ostrich_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/2478573c91d1a83fa038e7f6a9db8a85.json",
+          "name": "ostrich_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/4619ace67e5770e1fd7fc3ff76e7263e.png",
+          "name": "ostrich_tex.png"
+        },
+        "rect": {
+          "x": 36.4,
+          "y": 78.56,
+          "width": 184.87,
+          "height": 184.87
+        }
+      }, {
+        "id": "1650547573305",
+        "index": 15,
+        "audio_url": "https://teach.cdn.ireadabc.com/b7bc161c3a3ee143a53058691abf4fa9.mp3",
+        "itemType": "rect",
+        "fontScale": 0.70078125,
+        "imgScale": 1,
+        "imgSizeW": 0,
+        "imgSizeH": 0,
+        "mapScale": 0.70078125,
+        "dragDot": {
+          "x": 448.5,
+          "y": 170.54984583761566
+        },
+        "gIdx": "0",
+        "labelText": "15.9",
+        "posX": 670.8119839772754,
+        "posY": 137.87940870201697,
+        "skeJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/91e8ca03d1df89e4ec2404421d4c692f.json",
+          "name": "durazno_ske.json"
+        },
+        "texJsonData": {
+          "url": "https://teach.cdn.ireadabc.com/32d259b0194370625f8fe94b1ddc0a85.json",
+          "name": "durazno_tex.json"
+        },
+        "texPngData": {
+          "url": "https://teach.cdn.ireadabc.com/8eef56b20e221a36fce1d672199859ff.png",
+          "name": "durazno_tex.png"
+        },
+        "rect": {
+          "x": 146.92,
+          "y": 83.73,
+          "width": 32.34,
+          "height": 32.34
         }
       }]
-    }; // return defaultData;
+    }; // return  {"begin_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","begin_sep_time":1,"guide_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","playing_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","right_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio1":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio2":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","end_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","bgItem":{"url":"http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png","rect":{"x":736.95,"y":0,"width":599.09,"height":775}},"hotZoneItemArr":[{"id":"1659333645573","index":0,"audio_url":"http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3","itemType":"rect","fontScale":1.61953125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.61953125,"dragDot":{"x":1036.5,"y":387.5},"gIdx":"1","labelText":"1","posX":887.5,"posY":165.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json","name":"spineboy-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas","name":"spineboy-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png","name":"spineboy-pro.png"},"animType":"spine","rect":{"x":48.05,"y":65.5,"width":205,"height":200}},{"id":"1659334098930","index":1,"audio_url":"http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3","itemType":"rect","fontScale":1.61953125,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.61953125,"dragDot":{"x":1036.5,"y":387.5},"gIdx":"0","labelText":"1","posX":1212.5,"posY":643.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json","name":"alien-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas","name":"alien-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png","name":"alien-pro.png"},"animType":"spine","rect":{"x":375.56,"y":543.5,"width":200,"height":200}}]}
+    // return defaultData;
   },
   preloadItem: function preloadItem() {
     this.addPreloadImage();
@@ -986,8 +1460,9 @@ cc.Class({
 
           if (_block.gIdx == '0' || _block.gIdx == '1') {
             (function () {
-              var n = new cc.Node();
-              n.scale = 0.25;
+              var n = new cc.Node(); // n.scale = 0.25;
+
+              n.scale = ground.width / groundBg.width;
               n.parent = ground;
               n.active = false;
 
@@ -1005,8 +1480,7 @@ cc.Class({
                   n.height = height;
                   n.active = true; // db.playAnimation('null', 0);
                   // skeleton.setToSetupPose();
-
-                  skeleton.setAnimation(0, 'enlarge', true);
+                  // skeleton.setAnimation(0, 'enlarge', true);				
 
                   _this4._allAnimationNodes.push(n);
 
@@ -1138,27 +1612,54 @@ cc.Class({
   // 	this.initIcon();
   // },
   addRectNodeListener: function addRectNodeListener(data) {
-    var bg = cc.find("Canvas/frame-border/ground/bg");
+    var _this5 = this;
+
+    var bg = cc.find("Canvas/frame-border/ground/bg").parent;
     var rate = bg.scale * bg.width / this.data.bgItem.rect.width;
     var rectNode = new cc.Node();
     rectNode.name = 'rect' + data.index;
-    bg.addChild(rectNode);
+    bg.addChild(rectNode, 20);
     var ctx = rectNode.addComponent(cc.Graphics); // 红色矩形
 
     ctx.lineWidth = 4;
     ctx.strokeColor = cc.Color.BLACK;
     ctx.fillColor = cc.Color.WHITE.setA(100);
     var scale = rate / bg.scaleY;
+    console.log('scale~ : ', scale);
     rectNode.width = data.rect.width * scale;
     rectNode.height = data.rect.height * scale;
-    rectNode.x = -bg.width / 2 + data.rect.x * scale;
-    rectNode.y = bg.height / 2 - data.rect.height * scale - data.rect.y * scale;
-    rectNode.anchorX = rectNode.anchorY = 0; // if (pageData.bgItem.isShowDebugLine) {
+    rectNode.x = -bg.width / 2 + data.rect.x * scale + bg.x;
+    rectNode.y = bg.height / 2 - data.rect.height * scale - data.rect.y * scale + bg.y;
+    rectNode.anchorX = rectNode.anchorY = 0;
+    console.log('data: ', data);
+    console.log('rectNode: ', rectNode); // if (pageData.bgItem.isShowDebugLine) {
 
-    ctx.rect(0, 0, rectNode.width, rectNode.height); // }
+    ctx.rect(0, 0, rectNode.width, rectNode.height); // ctx.fillRect(0, 0, 200, 200);
+    // }
 
     ctx.stroke();
     ctx.fill();
+    rectNode.addComponent(cc.Button);
+    rectNode.on("click", function () {
+      console.log(" in rectNode click");
+
+      var _x = rectNode.x / bg.width;
+
+      var _y = rectNode.y / bg.height;
+
+      var _w = rectNode.width / bg.width;
+
+      var _h = rectNode.height / bg.height;
+
+      var pos = {
+        x: _x + _w / 2 + 0.5,
+        y: -(_y + _h / 2 - 0.5)
+      };
+      _this5._lastFingerPosition = {
+        pos: pos,
+        dirty: true
+      };
+    });
   },
   initBg: function initBg() {
     var bgNode = cc.find('Canvas/bg');
diff --git a/temp/quick-scripts/src/assets/OP15/scene/OP15.js.map b/temp/quick-scripts/src/assets/OP15/scene/OP15.js.map
index af19a8f..7e4070b 100644
--- a/temp/quick-scripts/src/assets/OP15/scene/OP15.js.map
+++ b/temp/quick-scripts/src/assets/OP15/scene/OP15.js.map
@@ -1 +1 @@
-{"version":3,"sources":["assets/OP15/scene/OP15.js"],"names":["pure","actions","send","raise","sendParent","cc","Class","Component","properties","rightAudio","type","AudioClip","wrongAudio","logoCat","Node","playAni","idx","name","options","times","cb","callback","node","_figurePointRectArray","dragonDisplay","getComponent","dragonBones","ArmatureDisplay","state","playAnimation","onLoad","_timeoutIds","_intervalIds","initSceneData","initSize","window","ccc","_imageResList","_audioResList","_animaResList","_lastFingerPosition","_hintsNodeList","_allAnimationNodes","pos","dirty","_designSize","_frameSize","_mapScaleMin","_mapScaleMax","_cocosScale","screen_size","view","getFrameSize","width","height","design_size","Canvas","instance","designResolution","f","fitHeight","fitWidth","frameSize","getDesignResolutionSize","sx","winSize","sy","Math","min","max","createStateMachine","check","target","cond","ctx","evt","console","log","questionIndex","questionsCount","QuestionState","id","initial","states","hint","invoke","src","event","questionPlayTimes","Promise","resolve","reject","questions","audio_url","onDone","onError","answer","after","context","onReceive","setInterval","region","result","checkInRegion","rect","push","clearInterval","on","RIGHT","WRONG","right","an","active","ddLogoCat","once","EventObject","COMPLETE","wrong","maxQuestionTryTimes","wrongEffect","includes","data","isSpine","skeleton","sp","Skeleton","setToSetupPose","setTimeout","setAnimation","QuestionsArrayStatus","play","next","CHECK","length","begin","courseware","openOsmoFingerRead","isOpenedOsmoFingerRead","begin_audio","guide","guide_audio","playing","entry","assetManager","loadRemote","playing_audio","err","audioClip","audioEngine","playMusic","forEach","block","exit","stopMusic","NEXT","end","closeOsmoFingerRead","end_audio","i","t","k","_armatureKey","addEventListener","begin_sep_time","gameMachine","gameMachineService","onTransition","start","getData","bind","getDefaultData","JSON","parse","stringify","preloadItem","air","osmoFingerReadCallback","resultObj","finger_pos_in_page","p","x","y","debugPointer","isDebug","r","w","h","func","middleLayer","find","middleLayerComponent","addPreloadImage","addPreloadAudio","addPreloadAnima","preload","url","bgItem","hotZoneItemArr","q","gIdx","texPngData","pic_url","prepareAudioClip","key","wrong_audio","right_audio","wrong_audio1","wrong_audio2","boxDebugger","POINTER_NODE","parent","addComponent","Graphics","grap","clear","ground","baseW","baseH","px","py","pn","fillColor","color","circle","fill","stroke","debugGraphics","canvas","bgW","bgH","scaleX","scaleY","added","area","dn","lblNode","lbl","Label","string","skeJsonData","substring","g","b","rx","ry","rw","rh","fillRect","preloadArr","concat","loadAny","item","groundBg","baseRect","sf","gs","Sprite","spriteFrame","dbCount","finishDbCount","s1","imgSizeW","imgSizeH","spr","scale","n","animType","tex","atlas","texJsonData","ske","then","loadEnd","db","rectInfo","labelText","isNaN","debug","setDisplayStats","hideAirClassLoading","initData","initBg","_cantouch","addRectNodeListener","bg","rate","rectNode","index","addChild","lineWidth","strokeColor","Color","BLACK","WHITE","setA","anchorX","anchorY","bgNode","onDestroy","clearTimeout","stopChild","stop"],"mappings":"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","sourceRoot":"/","sourcesContent":["import { onHomeworkFinish, RandomInt, playAudioByUrl, loadDragonBones, getSpriteFrimeByUrl, loadSpine } from \"../script/util\";\nimport { defaultData } from \"../script/defaultData\";\nimport { assign, createMachine, interpret, actions, forwardTo, matchesState  } from \"../script/xstate\";\nconst { pure , send, raise, sendParent  } = actions;\n\n\ncc.Class({\n\n\textends: cc.Component,\n\n\tproperties: {\n\t\t/*ant: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tapple: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tbird: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tcar: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tcat: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tcow: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tduck: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tegg: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tfarmer: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tfish: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tgirl: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\then: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\thouse: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},*/\n\t\trightAudio: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.AudioClip,\n\t\t},\n\t\twrongAudio: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.AudioClip,\n\t\t},\n\t\tlogoCat: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node\n\t\t}\n\n\t},\n\n\tplayAni(idx, name, options) {\n\t\tconst times = (options && options.times) || 1;\n\t\tconst cb = (options && options.callback) || null;\n\t\t// const cat = cc.find(`Canvas/frame-border/ground/${node}`);\n\t\tconst node = this._figurePointRectArray[idx].node\n\t\tvar dragonDisplay = node.getComponent(dragonBones.ArmatureDisplay);\n\n\t\tconst state = dragonDisplay.playAnimation(name, times);\n\t\t// dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {\n\t\t// \t//TODO 这里写触发事件\n\t\t// \t//event.name为事件名称\n\t\t// \tconsole.log(event.name)\n\t\t// }, this);\n\t\t// animationDisplay.addEventListener(dragonBones.EventObject.COMPLETE, completeCallback);\n\t\treturn state;\n\t},\n\t// 生命周期 onLoad\n\tonLoad() {\n\t\tthis._timeoutIds = [];\n\t\tthis._intervalIds = [];\n\t\tthis.initSceneData();\n\t\tthis.initSize();\n\t\twindow.ccc = this;\n\t},\n\n\t_imageResList: null,\n\t_audioResList: null,\n\t_animaResList: null,\n\n\t_lastFingerPosition: null,\n\n\t_hintsNodeList : null,\n\t_figurePointRectArray: null,\n\n\t_allAnimationNodes: null,\n\n\tinitSceneData() {\n\t\tthis._imageResList = [];\n\t\tthis._audioResList = [];\n\t\tthis._animaResList = [];\n\n\t\tthis._allAnimationNodes = [];\n\t\tthis._hintsNodeList = [];\n\t\tthis._lastFingerPosition= {\n\t\t\tpos: null,\n\t\t\tdirty: false\n\t\t};\n\t\tthis._figurePointRectArray = [];\n\t},\n\n\t_designSize: null,  // 设计分辨率\n\t_frameSize: null,  // 屏幕分辨率\n\t_mapScaleMin: null,  // 场景中常用缩放(取大值)\n\t_mapScaleMax: null,  // 场景中常用缩放(取小值)\n\t_cocosScale: null,  // cocos 自缩放 (较少用到)\n\t\n\tinitSize() {\n\t\t// 注意cc.winSize只有在适配后(修改fitHeight/fitWidth后)才能获取到正确的值,因此使用cc.getFrameSize()来获取初始的屏幕大小\n\t\tlet screen_size = cc.view.getFrameSize().width / cc.view.getFrameSize().height\n\t\tlet design_size = cc.Canvas.instance.designResolution.width / cc.Canvas.instance.designResolution.height\n\t\tlet f = screen_size >= design_size\n\t\tcc.Canvas.instance.fitHeight = f\n\t\tcc.Canvas.instance.fitWidth = !f\n\n\t\tconst frameSize = cc.view.getFrameSize();\n\t\tthis._frameSize = frameSize;\n\n\t\tthis._designSize = cc.view.getDesignResolutionSize();\n\n\t\tlet sx = cc.winSize.width / frameSize.width;\n\t\tlet sy = cc.winSize.height / frameSize.height;\n\t\tthis._cocosScale = Math.min(sx, sy);\n\n\t\tsx = frameSize.width / this._designSize.width;\n\t\tsy = frameSize.height / this._designSize.height;\n\t\tthis._mapScaleMin = Math.min(sx, sy) * this._cocosScale;\n\t\tthis._mapScaleMax = Math.max(sx, sy) * this._cocosScale;\n\t},\n\tcreateStateMachine(){\n\t\tconst check =  [\n\t\t\t\t\t\t\t{ target: '#game.end', cond: (ctx, evt) => {\n\t\t\t\t\t\t\t\tconsole.log('[answer NEXT] check if end', ctx.questionIndex >= ctx.questionsCount - 1);\n\t\t\t\t\t\t\t\treturn ctx.questionIndex >= ctx.questionsCount -1\n\n\t\t\t\t\t\t\t} },\n        \t\t\t\t\t{ target: 'hint' } // reenter 'hint' state\n\t\t\t\t\t\t]\n\t\tconst QuestionState = {\n\t\t\tid: 'question',\n\t\t\tinitial: 'hint',\n\t\t\tstates: {\n\t\t\t\thint: {\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (ctx, event) => {\n\t\t\t\t\t\t\tconsole.log(`[hint] play question ${ctx.questionIndex}: ${ctx.questionPlayTimes } audio`);\n\t\t\t\t\t\t\tctx.questionPlayTimes += 1;\n\t\t\t\t\t\t\treturn new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tplayAudioByUrl(ctx.questions[ctx.questionIndex].audio_url, () => {\n\t\t\t\t\t\t\t\t\tconsole.log('hint finish');\n\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone: 'answer',\n\t\t\t\t\t\tonError: 'answer'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tanswer: {\n\t\t\t\t\tafter: {\n\t\t\t\t\t\t8000: [\n        \t\t\t\t\t{ \n\t\t\t\t\t\t\t\ttarget: 'wrong',\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t} // reenter 'hint' state\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\t\n\t\t\t\t\t\tsrc: (context, event) => (callback, onReceive) => {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconsole.log('[answer] thinking and playing');\n\t\t\t\t\t\t\t// check every second\n\t\t\t\t\t\t\tconst id = setInterval(() => {\n\t\t\t\t\t\t\t\tconsole.log(\"aaaaaa\");\n\t\t\t\t\t\t\t\tif (!this._lastFingerPosition.dirty) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst region = context.questions[context.questionIndex];\n\t\t\t\t\t\t\t\tconst result = this.checkInRegion(region.rect);\n\t\t\t\t\t\t\t\tif (result === null) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconsole.log('[Genise JS] checkInRegion' + result)\n\t\t\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\t\t\tcallback('RIGHT')\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcallback('WRONG')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, 300);\n\t\t\t\t\t\t\tthis._intervalIds.push(id);\n\t\t\t\t\t\n\t\t\t\t\t\t\t// Perform cleanup\n\t\t\t\t\t\t\treturn () => clearInterval(id);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\ton: {\n\t\t\t\t\t\tRIGHT: {\n\t\t\t\t\t\t\ttarget: 'right',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tWRONG: {\n\t\t\t\t\t\t\ttarget: 'wrong',\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\tright: {\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (context, event) => {\n\t\t\t\t\t\t\tthis._lastFingerPosition.pos = null;\n\t\t\t\t\t\t\tthis._lastFingerPosition.dirty = false;\n\t\t\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\tconsole.log('answer right');\n\t\t\t\t\t\t\t\t// this.playAni(context.questionIndex, 'normal')\n\t\t\t\t\t\t\t\tconst an = context.questions[context.questionIndex].node;\n\t\t\t\t\t\t\t\tconsole.log('in right ' + (typeof an))\n\t\t\t\t\t\t\t\tan.active = true;\n\t\t\t\t\t\t\t\tconst dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\t\tdragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t\t\tconst ddLogoCat = this.logoCat.getComponent(dragonBones.ArmatureDisplay)\n\t\t\t\t\t\t\t\tddLogoCat.playAnimation('right', 1)\n\t\t\t\t\t\t\t\tddLogoCat.once(dragonBones.EventObject.COMPLETE, function() {\n\t\t\t\t\t\t\t\t\tthis.logoCat.getComponent(dragonBones.ArmatureDisplay).playAnimation('normal', 0)\n\t\t\t\t\t\t\t\t}, this)\n\n\t\t\t\t\t\t\t\tplayAudioByUrl(this.rightAudio, () => {\n\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone: {\n\t\t\t\t\t\t\ttarget: '#QuestionsArray.next',\n\t\t\t\t\t\t\tactions: raise('CHECK')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: {\n\t\t\t\t\t\t\ttarget: '#QuestionsArray.next',\n\t\t\t\t\t\t\tactions: raise('CHECK')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\twrong:{\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (context, event) => {\n\t\t\t\t\t\t\tthis._lastFingerPosition.pos = null;\n\t\t\t\t\t\t\tthis._lastFingerPosition.dirty = false;\n\t\t\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\tconsole.log('answer wrong', context.questionIndex, context.questionPlayTimes , context.maxQuestionTryTimes);\n\t\t\t\t\t\t\t\tconst ddLogoCat = this.logoCat.getComponent(dragonBones.ArmatureDisplay)\n\t\t\t\t\t\t\t\tddLogoCat.playAnimation('wrong', 1)\n\t\t\t\t\t\t\t\tddLogoCat.once(dragonBones.EventObject.COMPLETE, function() {\n\t\t\t\t\t\t\t\t\tthis.logoCat.getComponent(dragonBones.ArmatureDisplay).playAnimation('normal', 0)\n\t\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\t\tlet wrongEffect = this.wrongAudio;\n\t\t\t\t\t\t\t\t// 第一和第二题的提示音\n\t\t\t\t\t\t\t\tif ([0, 1].includes(context.questionIndex)) {\n\t\t\t\t\t\t\t\t\twrongEffect = this.data[`wrong_audio${context.questionPlayTimes}`]\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// 非第一和第二题,并且做第二遍的提示音\n\t\t\t\t\t\t\t\t\tif (context.questionPlayTimes == 2) {\n\t\t\t\t\t\t\t\t\t\twrongEffect = this.data[`wrong_audio${context.questionPlayTimes}`]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\t\tif (context.questionPlayTimes >= context.maxQuestionTryTimes) {\n\t\t\t\t\t\t\t\t\tconst an = context.questions[context.questionIndex].node;\n\t\t\t\t\t\t\t\t\tan.active = true;\n\n\t\t\t\t\t\t\t\t\tif (an.isSpine) {\n\n\t\t\t\t\t\t\t\t\t\tconst skeleton = an.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\t\tskeleton.setAnimation(0, 'normal', true);\n\t\t\t\t\t\t\t\t\t\t}, 1);\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\t\t\t\tdragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t\t\t\t\tconsole.log('show animation', an.active);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tplayAudioByUrl(wrongEffect, () => {\n\t\t\t\t\t\t\t\t\tif (context.questionPlayTimes >= context.maxQuestionTryTimes) {\n\t\t\t\t\t\t\t\t\t\t// const an = context.questions[context.questionIndex].node;\n\t\t\t\t\t\t\t\t\t\t// an.active = true;\n\t\t\t\t\t\t\t\t\t\t// const dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\t\t\t\t// dragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t\t\t\t\t// console.log('show animation', an.active);\n\t\t\t\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone: {\n\t\t\t\t\t\t\ttarget: 'hint',\n\t\t\t\t\t\t\t// actions: raise('CHECK')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: {\n\t\t\t\t\t\t\ttarget: '#QuestionsArray.next',\n\t\t\t\t\t\t\tactions: raise('CHECK')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t\tconst QuestionsArrayStatus = {\n\t\t\tid: 'QuestionsArray',\n\t\t\tinitial: 'play',\n\t\t\tstates: {\n\t\t\t\tplay: {\n\t\t\t\t\t...QuestionState\n\t\t\t\t},\n\t\t\t\tnext: {\n\t\t\t\t\ton: {\n\t\t\t\t\t\tCHECK: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttarget: '#game.end',\n\t\t\t\t\t\t\t\tcond: (ctx, evt) => {\n\t\t\t\t\t\t\t\t\tctx.questionIndex += 1;\n\t\t\t\t\t\t\t\t\tctx.questionPlayTimes = 0\n\t\t\t\t\t\t\t\t\tconsole.log('#game.end',  ctx.questionIndex >= ctx.questionsCount )\n\t\t\t\t\t\t\t\t\treturn ctx.questionIndex >= ctx.questionsCount\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{target: 'play'}\n\t\t\t\t\t\t]\n\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t\n\t\tconst state = {\n\t\t\tid: 'game',\n\t\t\tinitial: 'begin',\n\t\t\tcontext: {\n\t\t\t\tquestionIndex: 0,\n\t\t\t\tquestionPlayTimes: 0,\n\t\t\t\tmaxQuestionTryTimes: 2,\n\t\t\t\tquestionsCount: this._figurePointRectArray.length,\n\t\t\t\tquestions: this._figurePointRectArray,\n\t\t\t},\n\t\t\tstates: {\n\t\t\t\tbegin: {\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (ctx) => {\n\t\t\t\t\t\t\tconsole.log('game begin 1');\n\t\t\t\t\t\t\tif(window.courseware && window.courseware.openOsmoFingerRead) {\n\t\t\t\t\t\t\t\tthis.isOpenedOsmoFingerRead = true;\n\t\t\t\t\t\t\t\twindow.courseware.openOsmoFingerRead({\n\t\t\t\t\t\t\t\t\t\"page_id\": 27,\n\t\t\t\t\t\t\t\t\t\"book_id\": \"opw1\"\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar dragonDisplay = this.logoCat.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\tconst state = dragonDisplay.playAnimation('begin', 0);\n\t\t\t\t\t\t\treturn new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t\tplayAudioByUrl(this.data.begin_audio, () => {\n\t\t\t\t\t\t\t\t\tconsole.log('game begin audio finish');\n\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone:  'guide',\n\t\t\t\t\t\tonError: 'guide'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\tguide:{\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (ctx) => {\n\t\t\t\t\t\t\treturn new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t\tplayAudioByUrl(this.data.guide_audio, () => {\n\t\t\t\t\t\t\t\t\tconsole.log('game guide audio finish');\n\t\t\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone:  'playing',\n\t\t\t\t\t\tonError: 'playing'\n\t\t\t\t\t},\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\tplaying: {\n\t\t\t\t\tentry: (ctx) => {\n\t\t\t\t\t\tconsole.log('entry play stage');\n\t\t\t\t\t\tvar dragonDisplay = this.logoCat.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\tconst state = dragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\tcc.assetManager.loadRemote(this.data.playing_audio, (err, audioClip) => {\n\t\t\t\t\t\t\tcc.audioEngine.playMusic(audioClip, true, 0.8);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tctx.questions.forEach((block) => {\n\t\t\t\t\t\t\tblock.node.active = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\texit: () => {\n\t\t\t\t\t\tconsole.log('exit play stage');\n\t\t\t\t\t\tcc.audioEngine.stopMusic();\n\t\t\t\t\t},\n\t\t\t\t\ton: {\n\t\t\t\t\t\tNEXT: 'end'\n\t\t\t\t\t},\n\t\t\t\t\t// ...QuestionsStates\n\t\t\t\t\t...QuestionsArrayStatus\n\t\t\t\t},\n\t\t\t\tend: {\n\t\t\t\t\t\tentry: (ctx, event) => {\n\t\t\t\t\t\t\tconsole.log('game end');\n\t\t\t\t\t\t\tvar dragonDisplay = this.logoCat.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\tconst state = dragonDisplay.playAnimation('finish', 0);\n\t\t\t\t\t\t\tif(window.courseware && window.courseware.closeOsmoFingerRead) {\n\t\t\t\t\t\t\t\tthis.isOpenedOsmoFingerRead = false;\n\t\t\t\t\t\t\t\twindow.courseware.closeOsmoFingerRead()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tplayAudioByUrl(this.data.end_audio, () => {\n\t\t\t\t\t\t\t\tconsole.log('game finish');\n\t\t\t\t\t\t\t\tonHomeworkFinish();\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t// return new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t// \tsetTimeout(() => {\n\t\t\t\t\t\t\t// \t\tconsole.log('hint finish');\n\t\t\t\t\t\t\t// \t\tresolve()\n\t\t\t\t\t\t\t// \t}, 2000)\n\t\t\t\t\t\t\t// })\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t}\n\t\t};\n\t\tconst after = {};\n\t\tfor(let i = 0 ;i  < this._hintsNodeList.length; i++) {\n\t\t\tconst t = this._hintsNodeList[i].node;\n\t\t\tconst k = this._hintsNodeList[i].after;\n\t\t\tafter[k]= {\n\t\t\t\tactions: () => {\n\n\t\t\t\t\tif (t.isSpine) {\n\n\t\t\t\t\t\tconst skeleton = t.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\n\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tskeleton.setAnimation(0, 'enlarge', false);\n\t\t\t\t\t\t}, 1);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// skeleton.animation = skeleton.animationNames[0];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\tdragonDisplay.playAnimation('enlarge', 1);\n\t\t\t\t\t\tconsole.log(dragonDisplay._armatureKey, 'enlarge')\n\t\t\t\t\t\tdragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {\n\t\t\t\t\t\t\t// TODO 这里写触发事件\n\t\t\t\t\t\t\t// event.name为事件名称\n\t\t\t\t\t\t\t// event.armature.animation.play('normal', 0);\n\t\t\t\t\t\t\t// console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t}\n\n\n\n\t\t\t\t\t// const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t// dragonDisplay.playAnimation('enlarge', 1);\n\t\t\t\t\t// console.log(dragonDisplay._armatureKey, 'enlarge')\n\t\t\t\t\t// dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {\n\t\t\t\t\t// \t//TODO 这里写触发事件\n\t\t\t\t\t// \t//event.name为事件名称\n\t\t\t\t\t// \tevent.armature.animation.play('normal', 0);\n\t\t\t\t\t// \tconsole.log(event.animationState.name, dragonDisplay._armatureKey, 'end')\n\t\t\t\t\t// }, this);\n\t\t\t\t} \n\t\t\t}\n\t\t}\n\t\tif (this.data.begin_sep_time) {\n\t\t\tconst t = +this.data.begin_sep_time * 1000;\n\t\t\tafter[t] = {\n\t\t\t\tactions: () => {\n\t\t\t\t\tconsole.log('game begin 2');\n\n\t\t\t\t\tfor(let i = 0 ;i  < this._allAnimationNodes.length; i++) {\n\t\t\t\t\t\tconst t = this._allAnimationNodes[i];\n\t\t\t\t\t\tif (t.isSpine) {\n\n\t\t\t\t\t\t\tconst skeleton = t.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\tconsole.log('skeleton: ', skeleton);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tskeleton.setAnimation(0, 'normal', true);\n\t\t\t\t\t\t\t}, 1);\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\tconsole.log('skeleton 22: ', skeleton);\n\n\t\t\t\t\t\t\t// skeleton.animation = skeleton.animationNames[0];\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconst dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\tdragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstate.states.begin.after = after;\n\n\n\n\t\tconst gameMachine = createMachine(state);\n\t\twindow.gameMachine = gameMachine;\n\t\tthis.gameMachineService = interpret(gameMachine).onTransition((state) => {\n\t\t// console.log(1, state.value, state.context);\n\t\t});\n\t\tthis.gameMachineService.start();\n\t\tif (window.gameMachineService) {\n\t\t\twindow.gameMachineService = gameMachineService;\n\t\t}\n\n\n\t},\n\n\t\n\n\n\n\t// 生命周期 start\n\tstart() {\n\t\tlet getData = this.getData.bind(this);\n\t\tif (window && window.courseware) {\n\t\t\tgetData = window.courseware.getData;\n\t\t}\n\n\t\tgetData((data) => {\n\t\t\t// console.log('data:', data);\n\t\t\tthis.data = data || this.getDefaultData();\n\t\t\tthis.data = JSON.parse(JSON.stringify(this.data))\n\t\t\t\n\t\t\tthis.preloadItem()\n\t\t});\n\t\twindow.air = window.air || {}\n\t\tif (window.air) {\n\t\t\twindow.air.osmoFingerReadCallback = (result) => {\n\t\t\t\tif (!this.gameMachineService) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// const st = this.gameMachineService.state.value.constructor.name == 'Object' \n\t\t\t\t// && this.gameMachineService.state.value['playing']\n\t\t\t\t// && this.gameMachineService.state.value['playing'].constructor.name == 'Object'\n\t\t\t\t// && this.gameMachineService.state.value['playing']['play']\n\t\t\t\t// && this.gameMachineService.state.value['playing']['play'] == 'answer'\n\t\t\t\t// if (st) {\n\t\t\t\t// }\n\t\t\t\tconst resultObj = JSON.parse(result);\n\t\t\t\tconsole.log('[Genise JS] '+ JSON.stringify(resultObj.finger_pos_in_page))\n\t\t\t\tconst p = resultObj.finger_pos_in_page;\n\t\t\t\tif (p.x == -1 || p.y == -1) {\n\t\t\t\t\tthis._lastFingerPosition.pos = null;\n\t\t\t\t\tthis._lastFingerPosition.dirty = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._lastFingerPosition = {\n\t\t\t\t\tpos:{\n\t\t\t\t\t\tx: p.x,\n\t\t\t\t\t\ty: p.y\n\t\t\t\t\t},\n\t\t\t\t\tdirty: true\n\t\t\t\t}\n\t\t\t\tthis.debugPointer(p.x, p.y)\n\t\t\t}\n\t\t}\n\t\tthis.isDebug = false;\n\t\t\n\t},\n\tcheckInRegion(r) {\n\t\tconsole.log('r~~~: ', r);\n\t\tif (!this._lastFingerPosition && !this._lastFingerPosition.pos) {\n\t\t\treturn null;\n\t\t}\n\t\tconst p = this._lastFingerPosition ? this._lastFingerPosition.pos || {x:0, y:0} : {x:0, y:0};\n\t\tconst w = p.x > r.x && p.x < (r.x + r.width);\n\t\tconst h = p.y > r.y && p.y < (r.y + r.height);\n\t\treturn w && h;\n\n\t},\n\n\tgetData(func) {\n\t\tif (window && window.courseware) {\n\t\t\twindow.courseware.getData(func, 'scene');\n\t\t\treturn;\n\t\t}\n\n\t\tconst middleLayer = cc.find('middleLayer');\n\t\tif (middleLayer) {\n\t\t\tconst middleLayerComponent = middleLayer.getComponent('middleLayer');\n\t\t\tmiddleLayerComponent.getData(func);\n\t\t\treturn;\n\t\t}\n\n\t\tfunc(this.getDefaultData());\n\t},\n\n\tgetDefaultData() {\n\t\treturn  {\"begin_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"begin_sep_time\":1,\"guide_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"playing_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"right_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"wrong_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"wrong_audio1\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"wrong_audio2\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"end_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"bgItem\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png\",\"rect\":{\"x\":736.95,\"y\":0,\"width\":599.09,\"height\":775}},\"hotZoneItemArr\":[{\"id\":\"1659333645573\",\"index\":0,\"audio_url\":\"http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3\",\"itemType\":\"rect\",\"fontScale\":1.61953125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":1.61953125,\"dragDot\":{\"x\":1036.5,\"y\":387.5},\"gIdx\":\"1\",\"labelText\":\"1\",\"posX\":887.5,\"posY\":165.5,\"skeJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json\",\"name\":\"spineboy-pro.json\"},\"texJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas\",\"name\":\"spineboy-pro.atlas\"},\"texPngData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png\",\"name\":\"spineboy-pro.png\"},\"animType\":\"spine\",\"rect\":{\"x\":48.05,\"y\":65.5,\"width\":205,\"height\":200}},{\"id\":\"1659334098930\",\"index\":1,\"audio_url\":\"http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3\",\"itemType\":\"rect\",\"fontScale\":1.61953125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":1.61953125,\"dragDot\":{\"x\":1036.5,\"y\":387.5},\"gIdx\":\"0\",\"labelText\":\"1\",\"posX\":1212.5,\"posY\":643.5,\"skeJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json\",\"name\":\"alien-pro.json\"},\"texJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas\",\"name\":\"alien-pro.atlas\"},\"texPngData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png\",\"name\":\"alien-pro.png\"},\"animType\":\"spine\",\"rect\":{\"x\":375.56,\"y\":543.5,\"width\":200,\"height\":200}}]}\n\t\t// return defaultData;\n\t},\n\n\tpreloadItem() {\n\t\tthis.addPreloadImage();\n\t\tthis.addPreloadAudio();\n\t\tthis.addPreloadAnima();\n\t\tthis.preload();\n\t},\n\n\n\taddPreloadImage() {\n\n\t\tthis._imageResList.push({ url: this.data.bgItem.url});\n\n\t\tfor (const q of this.data.hotZoneItemArr) {\n\t\t\tif (q.gIdx =='0') {\n\t\t\t\tthis._imageResList.push({ url: q.texPngData.url});\n\t\t\t}\n\n\t\t\tif (q.gIdx =='1') {\n\t\t\t\tthis._imageResList.push({ url: q.texPngData.url });\n\t\t\t}\n\t\t\tif (q.gIdx =='2') {\n\t\t\t\tthis._imageResList.push({ url: q.pic_url});\n\t\t\t}\n\t\t}\n\t},\n\tprepareAudioClip(url, key) {\n\t\tif (url) {\n\t\t\tcc.assetManager.loadRemote(url, (err, audioClip) => {\n\t\t\t\tif (audioClip) {\n\t\t\t\t\tthis[key] = audioClip;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\taddPreloadAudio() {\n\n\t\tthis._audioResList.push({ url: this.data.begin_audio });\n\t\t// this.prepareAudioClip(this.data.begin_audio1, 'begin_audio1')\n\t\t// this._audioResList.push({ url: this.data.begin_audio2 });\n\t\t// this.prepareAudioClip(this.data.begin_audio2, 'begin_audio2')\n\t\tthis._audioResList.push({ url: this.data.guide_audio });\n\t\tthis._audioResList.push({ url: this.data.playing_audio });\n\t\tif (this.data.wrong_audio) {\n\t\t\tthis._audioResList.push({ url: this.data.wrong_audio });\n\t\t\tthis.wrongAudio = this.data.wrong_audio\n\t\t}\n\t\tif (this.data.right_audio) {\n\t\t\tthis._audioResList.push({ url: this.data.right_audio });\n\t\t\tthis.rightAudio = this.data.right_audio\n\t\t}\n\t\tthis._audioResList.push({ url: this.data.wrong_audio1 });\n\t\tthis._audioResList.push({ url: this.data.wrong_audio2 });\n\t\tthis._audioResList.push({ url: this.data.end_audio });\n\n\n\t\tfor (const q of this.data.hotZoneItemArr) {\n\t\t\tif (q.gIdx =='0') {\n\t\t\t\tthis._audioResList.push({ url: q.audio_url });\n\t\t\t}\n\t\t}\n\t},\n\tdebugPointer() {\n\t\tconst boxDebugger = cc.find('Canvas/box-debugger');\n\t\tif (!this.isDebug) {\n\t\t\tboxDebugger.active = false;\n\t\t\treturn;\n\t\t}\n\t\tif (!this.POINTER_NODE) {\n\t\t\tthis.POINTER_NODE = new cc.Node();\n\t\t\tthis.POINTER_NODE.parent = boxDebugger;\n\t\t\tthis.POINTER_NODE.name = 'POINTER_NODE'\n\t\t\tthis.POINTER_NODE.addComponent(cc.Graphics);\n\t\t}\n\t\tconst grap = this.POINTER_NODE.getComponent(cc.Graphics);\n\t\tgrap.clear();\n\t\tconst ground = cc.find('Canvas/frame-border/ground');\n\t\tconst {width: baseW, height: baseH} = ground;\n\t\tconst {x: px, y: py} = this._lastFingerPosition.pos;\n\t\tlet x = baseW * px - baseW / 2;\n\t\tlet y = baseH - (baseH * py) - baseH / 2 - 16;\n\t\tconst pn = new cc.Node();\n\t\t\n\t\tgrap.fillColor=cc.color(255, 0, 0);\n\t\tgrap.circle(x, y, 32);\n\t\tgrap.fill();\n\t\tgrap.stroke();\n\t},\n\tdebugGraphics() {\n\t\tconst boxDebugger = cc.find('Canvas/box-debugger');\n\t\tif (!this.isDebug) {\n\t\t\tboxDebugger.active = false;\n\t\t\treturn;\n\t\t}\n\t\tboxDebugger.active = true;\n\t\tconsole.log('show debug graphics');\n\t\tconst ground = cc.find('Canvas/frame-border/ground');\n\t\tconst canvas = cc.find('Canvas');\n\t\tconst {width: baseW, height: baseH} = ground;\n\t\tconst {width: bgW, height: bgH} = this.data.bgItem.rect\n\t\tconst scaleX = bgW / baseW;\n\t\tconst scaleY = bgH / baseH;\n\t\tlet added  =false\n\t\tthis.data.hotZoneItemArr.forEach(area => {\n\t\t\t\n\t\t\tif (added) {\n\t\t\t\t// return\n\t\t\t}\n\t\t\tif (area.gIdx != '0') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tadded = true;\n\t\t\tconst dn = new cc.Node();\n\t\t\tconst lblNode = new cc.Node();\n\t\t\tlblNode.parent = dn\n\t\t\tconst lbl = lblNode.addComponent(cc.Label);\n\t\t\tlblNode.color = cc.color(0,0,0)\n\t\t\tlbl.string = area.skeJsonData.name.substring(0, area.skeJsonData.name.length - 9)\n\t\t\tdn.name = lbl.string;\n\t\t\tdn.parent = boxDebugger;\n\t\t\tdn.width = baseW;\n\t\t\tdn.height = baseH;\n\t\t\t\n\t\t\tconst grap = dn.addComponent(cc.Graphics);\n\t\t\tconst r = RandomInt(1,255)\n\t\t\tconst g = RandomInt(1,255)\n\t\t\tconst b = RandomInt(1,255)\n\t\t\tgrap.fillColor=cc.color(r, g, b, 127);\n\t\t\tconst {x: rx, y: ry, width: rw, height: rh} =  area.rect;\n\t\t\tlet w = (rw / bgW) * baseW;\n\t\t\tlet h = (rh / bgH) * baseH;\n\t\t\tlet x = (rx / bgW) * baseW - baseW / 2;\n\t\t\tlet y = baseH - ((ry / bgH) * baseH) - h - baseH / 2;\n\t\t\t// w *= scaleX\n\t\t\t// h *= scaleY\n\t\t\t// x *= scaleX\n\t\t\t// y *= scaleY\n            // const p = boxDebugger.convertToNodeSpaceAR(cc.v2(x,y));\n\t\t\t// x = p.x;\n\t\t\t// y = p.y;\n\t\t\tlblNode.x = x;\n\t\t\tlblNode.y = y + h;\n\t\t\t// dn.scaleX = scaleX;\n\t\t\t// dn.scaleY = scaleY;\n\t\t\t// dn.scale = area.mapScale; // minScale; // this._mapScaleMax * area.mapScale; // ;\n\t\t\tconsole.log('[debug]', area.skeJsonData.name, x, y, w, h);\n\t\t\tgrap.fillRect(x, y, w, h);\n\t\t\tgrap.stroke();\n\t\t\t\n\t\t});\n\n\t},\n\taddPreloadAnima() {\n\n\t},\n\n\tpreload() {\n\n\t\tconst preloadArr = this._imageResList.concat(this._audioResList).concat(this._animaResList);\n\t\t// console.log(preloadArr);\n\t\tcc.assetManager.loadAny(preloadArr, null, (f, t, item) => {\n\t\t\t// console.log(f, t, item)\n\t\t}, (err, data) => {\n\t\t\t// console.log(err, data);\n\t\t\tconst ground = cc.find(`Canvas/frame-border/ground`);\n\t\t\tconst groundBg = cc.find(`Canvas/frame-border/ground/bg`);\n\t\t\tgroundBg.active = false;\n\t\t\tconst baseRect = this.data.bgItem.rect;\n\t\t\tgetSpriteFrimeByUrl(this.data.bgItem.url, (sf) => {\n\t\t\t\tconst gs = groundBg.getComponent(cc.Sprite);\n\t\t\t\tgs.spriteFrame = sf;\n\t\t\t\tgroundBg.active = true;\n\n\t\t\t\tlet dbCount = 0;\n\t\t\t\tlet finishDbCount = 0\n\t\t\t\tfor(const block of this.data.hotZoneItemArr) {\n\t\t\t\t\tif (block.gIdx == '0' || block.gIdx == '1') {\n\t\t\t\t\t\tdbCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const block of this.data.hotZoneItemArr) {\n\n\t\t\t\t\t\n\t\t\t\t\tif (block.gIdx == '2') {\n\t\t\t\t\t\tconst s1 = ((ground.width  / block.imgSizeW) + (ground.height  / block.imgSizeH)) / 2\n\t\t\t\t\t\tconst node = new cc.Node();\n\t\t\t\t\t\tnode.parent = ground;\n\t\t\t\t\t\tconst spr = node.addComponent(cc.Sprite);\n\t\t\t\t\t\tgetSpriteFrimeByUrl(block.pic_url, (sf) => {\n\t\t\t\t\t\tspr.spriteFrame = sf;\n\t\t\t\t\t\tnode.scale = s1;\n\t\t\t\t\t\t})\n\n\t\t\t\t\t}\n\t\t\t\t\tif (block.gIdx == '0' || block.gIdx == '1') {\n\n\t\t\t\t\t\tconst n = new cc.Node();\n\t\t\t\t\t\tn.scale = 0.25;\n\t\t\t\t\t\tn.parent = ground;\n\t\t\t\t\t\tn.active = false;\n\n\t\t\t\t\t\tif (block.animType == 'spine') {\n\t\t\t\n\t\t\t\t\t\t\tconst skeleton = n.addComponent(sp.Skeleton);\n\t\t\t\t\t\t\tn.isSpine = true;\n\n\t\t\t\t\t\t\tloadSpine(skeleton, block.texPngData.name, {\n\t\t\t\t\t\t\t\ttex: block.texPngData.url, \n\t\t\t\t\t\t\t\tatlas: block.texJsonData.url,\n\t\t\t\t\t\t\t\tske: block.skeJsonData.url,\n\t\t\t\t\t\t\t}).then(({width, height}) => {\n\t\t\t\t\t\t\t\tn.width = width;\n\t\t\t\t\t\t\t\tn.height = height;\t\n\t\t\t\t\t\t\t\tn.active = true;\n\t\t\t\t\t\t\t\t// db.playAnimation('null', 0);\n\t\t\t\t\t\t\t\t// skeleton.setToSetupPose();\n\t\t\t\t\t\t\t\tskeleton.setAnimation(0, 'enlarge', true);\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tthis._allAnimationNodes.push(n);\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}).catch(() => {\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\n\t\t\t\t\t\t\tconst db = n.addComponent(dragonBones.ArmatureDisplay);\n\n\t\t\t\t\t\t\tloadDragonBones(db, {\n\t\t\t\t\t\t\t\ttex: block.texPngData.url, \n\t\t\t\t\t\t\t\tatlas: block.texJsonData.url,\n\t\t\t\t\t\t\t\tske: block.skeJsonData.url,\n\t\t\t\t\t\t\t}).then(({width, height}) => {\n\t\t\t\t\t\t\t\tn.width = width;\n\t\t\t\t\t\t\t\tn.height = height;\t\n\t\t\t\t\t\t\t\tn.active = true;\n\t\t\t\t\t\t\t\tdb.playAnimation('null', 0);\n\t\t\t\t\t\t\t\tthis._allAnimationNodes.push(n);\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}).catch(() => {\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\tif (block.gIdx == '0') {\n\t\t\t\t\t\t\tconst rectInfo = {\n\t\t\t\t\t\t\t\tnode: n,\n\t\t\t\t\t\t\t\taudio_url: block.audio_url ,\n\t\t\t\t\t\t\t\trect: {\n\t\t\t\t\t\t\t\t\tx: block.rect.x / baseRect.width,\n\t\t\t\t\t\t\t\t\ty: block.rect.y / baseRect.height,\n\t\t\t\t\t\t\t\t\twidth: block.rect.width / baseRect.width,\n\t\t\t\t\t\t\t\t\theight: block.rect.height / baseRect.height,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tthis._figurePointRectArray.push(rectInfo);\n\n\t\t\t\t\t\t\t// this.addRectNodeListener(block);\n\t\t\n\t\t\t\t\t\t\tif (block.labelText) {\n\t\t\t\t\t\t\t\tconst k = +block.labelText * 1000;\n\t\t\t\t\t\t\t\tif(!isNaN(k)) {\n\t\t\t\t\t\t\t\t\tthis._hintsNodeList.push({\n\t\t\t\t\t\t\t\t\t\tnode: n,\n\t\t\t\t\t\t\t\t\t\tafter: k\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t// console.log(this.data);\n\t\t\tconsole.log('resource perload finish');\n\n// <<<<<<< HEAD\n// =======\n// \t\t\tif (window && window[\"air\"]) {\n// \t\t\t\t// cc.find('Canvas').opacity = 0;\n// \t\t\t\twindow.air.onCourseInScreen = (next) => {\n// \t\t\t\t\t// cc.find('Canvas').opacity = 255;\n// \t\t\t\t\tthis.loadEnd();\n// \t\t\t\t\tnext();\n// \t\t\t\t}\n// \t\t\t\twindow.air.hideAirClassLoading();\n// \t\t\t} else {\n// \t\t\t\tthis.loadEnd();\n// \t\t\t}\n// >>>>>>> 2d461e1910571bcfc6ad4dc93c2cedafc20923ea\n\n\t\t\tcc.debug.setDisplayStats(false);\n\t\t});\n\t},\n\n\n\tloadEnd() {\n\t\tif (window && window[\"air\"] && window[\"air\"].hideAirClassLoading) {\n\t\t\twindow[\"air\"].hideAirClassLoading();\n\t\t}\n\t\tthis.initData();\n\t\t// this.initAudio();\n\t\t// this.initView();\n\t\tthis.initBg();\n\t\t// this.initListener();\n\t\tthis.debugGraphics();\n\t\tthis.createStateMachine();\n\t},\n\n\t_cantouch: null,\n\tinitData() {\n\t\t// 所有全局变量 默认都是null \n\t\tthis._cantouch = true;\n\t},\n\n\t// audioBtn: null,\n\t// initAudio() {\n\t// \tconst audioNode = cc.find('Canvas/res/audio');\n\n\t// \tconst getAudioByResName = (resName) => {\n\t// \t\treturn audioNode.getChildByName(resName).getComponent(cc.AudioSource);\n\t// \t}\n\n\t// \tthis.audioBtn = getAudioByResName('btn');\n\n\t// },\n\n\n\t// initView() {\n\n\t// \t// this.initBg();\n\t// \t// this.initPic();\n\t// \t// this.initBtn();\n\t// \tthis.initIcon();\n\t// },\n\n\taddRectNodeListener(data) {\n\n\n\t\tconst bg = cc.find(`Canvas/frame-border/ground/bg`);\n\n\t\tconst rate = (bg.scale * bg.width) / this.data.bgItem.rect.width;\n\n\t\tconst rectNode = new cc.Node();\n\t\trectNode.name = 'rect' + data.index;\n\t\tbg.addChild(rectNode);\n\n\n\t\tconst ctx = rectNode.addComponent(cc.Graphics);\n\t\t// 红色矩形\n\t\tctx.lineWidth = 4;\n\t\tctx.strokeColor = cc.Color.BLACK;\n\t\tctx.fillColor = cc.Color.WHITE.setA(100);\n\n\t\tconst scale = rate / bg.scaleY;\n\n\t\trectNode.width = data.rect.width * scale;\n\t\trectNode.height = data.rect.height * scale;\n\t\trectNode.x = -bg.width / 2 + data.rect.x * scale;\n\t\trectNode.y = bg.height / 2 - data.rect.height * scale - data.rect.y * scale;\n\n\t\trectNode.anchorX = rectNode.anchorY = 0;\n\n\n\t\t// if (pageData.bgItem.isShowDebugLine) {\n\t\t\tctx.rect(0, 0, rectNode.width, rectNode.height);\n\t\t// }\n\t\tctx.stroke();\n\t\tctx.fill();\n\n\t},\n\n\tinitBg() {\n\t\tconst bgNode = cc.find('Canvas/bg');\n\t\tbgNode.scale = this._mapScaleMax;\n\t\tconsole.log('this._mapScaleMax', this._mapScaleMax);\n\t},\n\n\t\n\t\n\n\t/*initBtn() {\n\n\t\tthis.curPage = 0;\n\t\tconst bottomPart = cc.find('Canvas/bottomPart');\n\t\tbottomPart.zIndex = 5; // 提高层级\n\n\t\tbottomPart.x = bottomPart.parent.width / 2;\n\t\tbottomPart.y = -bottomPart.parent.height / 2;\n\n\t\tconst leftBtnNode = bottomPart.getChildByName('btn_left');\n\t\t//节点中添加了button组件 则可以添加click事件监听\n\t\tleftBtnNode.on('click', () => {\n\t\t\tif (!this._cantouch) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.curPage == 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.curPage = 0\n\t\t\tthis.leftMove();\n\n\t\t\t// 游戏结束时需要调用这个方法通知系统作业完成\n\t\t\tonHomeworkFinish();\n\n\t\t\tcc.audioEngine.play(this.audioBtn.clip, false, 0.8)\n\t\t})\n\n\t\tconst rightBtnNode = bottomPart.getChildByName('btn_right');\n\t\t//节点中添加了button组件 则可以添加click事件监听\n\t\trightBtnNode.on('click', () => {\n\t\t\tif (!this._cantouch) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.curPage == 1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.curPage = 1\n\t\t\tthis.rightMove();\n\n\t\t\tcc.audioEngine.play(this.audioBtn.clip, false, 0.5)\n\t\t})\n\t},*/\n\n\n\n\n\t// update (dt) {},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t_timeoutIds: null,\n\t_intervalIds: null,\n\t// 生命周期\n\tonDestroy() {\n\t\tconsole.log('op15 onDestroy');\n\t\tthis._timeoutIds.forEach(id => {\n\t\t\tclearTimeout(id);\n\t\t});\n\t\tthis._intervalIds.forEach(id => {\n\t\t\tclearInterval(id);\n\t\t});\n\t\tthis.gameMachineService.stopChild();\n\t\tthis.gameMachineService.stop();\n\t\tif(window.courseware && window.courseware.closeOsmoFingerRead) {\n\t\t\tif (this.isOpenedOsmoFingerRead) {\n\t\t\t\twindow.courseware.closeOsmoFingerRead()\n\t\t\t}\n\t\t}\n\t},\n\n\n\n\n\n});\n"]}
\ No newline at end of file
+{"version":3,"sources":["assets/OP15/scene/OP15.js"],"names":["pure","actions","send","raise","sendParent","cc","Class","Component","properties","rightAudio","type","AudioClip","wrongAudio","logoCat","Node","playAni","idx","name","options","times","cb","callback","node","_figurePointRectArray","dragonDisplay","getComponent","dragonBones","ArmatureDisplay","state","playAnimation","onLoad","_timeoutIds","_intervalIds","initSceneData","initSize","window","ccc","_imageResList","_audioResList","_animaResList","_lastFingerPosition","_hintsNodeList","_allAnimationNodes","pos","dirty","_designSize","_frameSize","_mapScaleMin","_mapScaleMax","_cocosScale","screen_size","view","getFrameSize","width","height","design_size","Canvas","instance","designResolution","f","fitHeight","fitWidth","frameSize","getDesignResolutionSize","sx","winSize","sy","Math","min","max","createStateMachine","check","target","cond","ctx","evt","console","log","questionIndex","questionsCount","QuestionState","id","initial","states","hint","invoke","src","event","questionPlayTimes","Promise","resolve","reject","questions","audio_url","onDone","onError","answer","after","context","onReceive","setInterval","region","result","checkInRegion","rect","push","clearInterval","on","RIGHT","WRONG","right","an","active","isSpine","skeleton","sp","Skeleton","setToSetupPose","setTimeout","setAnimation","ddLogoCat","once","EventObject","COMPLETE","wrong","maxQuestionTryTimes","wrongEffect","includes","data","QuestionsArrayStatus","play","next","CHECK","length","begin","courseware","openOsmoFingerRead","isOpenedOsmoFingerRead","begin_audio","guide","guide_audio","playing","entry","assetManager","loadRemote","playing_audio","err","audioClip","audioEngine","playMusic","forEach","block","exit","stopMusic","NEXT","end","closeOsmoFingerRead","end_audio","i","t","k","_armatureKey","addEventListener","begin_sep_time","gameMachine","gameMachineService","onTransition","start","getData","bind","getDefaultData","JSON","parse","stringify","preloadItem","air","osmoFingerReadCallback","resultObj","finger_pos_in_page","p","x","y","debugPointer","isDebug","r","w","h","func","middleLayer","find","middleLayerComponent","addPreloadImage","addPreloadAudio","addPreloadAnima","preload","url","bgItem","hotZoneItemArr","q","gIdx","texPngData","pic_url","prepareAudioClip","key","wrong_audio","right_audio","wrong_audio1","wrong_audio2","boxDebugger","POINTER_NODE","parent","addComponent","Graphics","grap","clear","ground","baseW","baseH","px","py","pn","fillColor","color","circle","fill","stroke","debugGraphics","canvas","bgW","bgH","scaleX","scaleY","added","area","dn","lblNode","lbl","Label","string","skeJsonData","substring","g","b","rx","ry","rw","rh","fillRect","preloadArr","concat","loadAny","item","groundBg","baseRect","sf","gs","Sprite","spriteFrame","dbCount","finishDbCount","s1","imgSizeW","imgSizeH","spr","scale","n","animType","tex","atlas","texJsonData","ske","then","loadEnd","db","rectInfo","labelText","isNaN","debug","setDisplayStats","hideAirClassLoading","initData","initBg","_cantouch","addRectNodeListener","bg","rate","rectNode","index","addChild","lineWidth","strokeColor","Color","BLACK","WHITE","setA","anchorX","anchorY","Button","_x","_y","_w","_h","bgNode","onDestroy","clearTimeout","stopChild","stop"],"mappings":"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","sourceRoot":"/","sourcesContent":["import { onHomeworkFinish, RandomInt, playAudioByUrl, loadDragonBones, getSpriteFrimeByUrl, loadSpine } from \"../script/util\";\nimport { defaultData } from \"../script/defaultData\";\nimport { assign, createMachine, interpret, actions, forwardTo, matchesState  } from \"../script/xstate\";\nconst { pure , send, raise, sendParent  } = actions;\n\n\ncc.Class({\n\n\textends: cc.Component,\n\n\tproperties: {\n\t\t/*ant: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tapple: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tbird: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tcar: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tcat: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tcow: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tduck: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tegg: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tfarmer: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tfish: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\tgirl: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\then: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},\n\t\thouse: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node,\n\t\t},*/\n\t\trightAudio: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.AudioClip,\n\t\t},\n\t\twrongAudio: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.AudioClip,\n\t\t},\n\t\tlogoCat: {\n\t\t\tdefault: null,\n\t\t\ttype: cc.Node\n\t\t}\n\n\t},\n\n\tplayAni(idx, name, options) {\n\t\tconst times = (options && options.times) || 1;\n\t\tconst cb = (options && options.callback) || null;\n\t\t// const cat = cc.find(`Canvas/frame-border/ground/${node}`);\n\t\tconst node = this._figurePointRectArray[idx].node\n\t\tvar dragonDisplay = node.getComponent(dragonBones.ArmatureDisplay);\n\n\t\tconst state = dragonDisplay.playAnimation(name, times);\n\t\t// dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {\n\t\t// \t//TODO 这里写触发事件\n\t\t// \t//event.name为事件名称\n\t\t// \tconsole.log(event.name)\n\t\t// }, this);\n\t\t// animationDisplay.addEventListener(dragonBones.EventObject.COMPLETE, completeCallback);\n\t\treturn state;\n\t},\n\t// 生命周期 onLoad\n\tonLoad() {\n\t\tthis._timeoutIds = [];\n\t\tthis._intervalIds = [];\n\t\tthis.initSceneData();\n\t\tthis.initSize();\n\t\twindow.ccc = this;\n\t},\n\n\t_imageResList: null,\n\t_audioResList: null,\n\t_animaResList: null,\n\n\t_lastFingerPosition: null,\n\n\t_hintsNodeList : null,\n\t_figurePointRectArray: null,\n\n\t_allAnimationNodes: null,\n\n\tinitSceneData() {\n\t\tthis._imageResList = [];\n\t\tthis._audioResList = [];\n\t\tthis._animaResList = [];\n\n\t\tthis._allAnimationNodes = [];\n\t\tthis._hintsNodeList = [];\n\t\tthis._lastFingerPosition= {\n\t\t\tpos: null,\n\t\t\tdirty: false\n\t\t};\n\t\tthis._figurePointRectArray = [];\n\t},\n\n\t_designSize: null,  // 设计分辨率\n\t_frameSize: null,  // 屏幕分辨率\n\t_mapScaleMin: null,  // 场景中常用缩放(取大值)\n\t_mapScaleMax: null,  // 场景中常用缩放(取小值)\n\t_cocosScale: null,  // cocos 自缩放 (较少用到)\n\t\n\tinitSize() {\n\t\t// 注意cc.winSize只有在适配后(修改fitHeight/fitWidth后)才能获取到正确的值,因此使用cc.getFrameSize()来获取初始的屏幕大小\n\t\tlet screen_size = cc.view.getFrameSize().width / cc.view.getFrameSize().height\n\t\tlet design_size = cc.Canvas.instance.designResolution.width / cc.Canvas.instance.designResolution.height\n\t\tlet f = screen_size >= design_size\n\t\tcc.Canvas.instance.fitHeight = f\n\t\tcc.Canvas.instance.fitWidth = !f\n\n\t\tconst frameSize = cc.view.getFrameSize();\n\t\tthis._frameSize = frameSize;\n\n\t\tthis._designSize = cc.view.getDesignResolutionSize();\n\n\t\tlet sx = cc.winSize.width / frameSize.width;\n\t\tlet sy = cc.winSize.height / frameSize.height;\n\t\tthis._cocosScale = Math.min(sx, sy);\n\n\t\tsx = frameSize.width / this._designSize.width;\n\t\tsy = frameSize.height / this._designSize.height;\n\t\tthis._mapScaleMin = Math.min(sx, sy) * this._cocosScale;\n\t\tthis._mapScaleMax = Math.max(sx, sy) * this._cocosScale;\n\t},\n\tcreateStateMachine(){\n\t\tconst check =  [\n\t\t\t\t\t\t\t{ target: '#game.end', cond: (ctx, evt) => {\n\t\t\t\t\t\t\t\tconsole.log('[answer NEXT] check if end', ctx.questionIndex >= ctx.questionsCount - 1);\n\t\t\t\t\t\t\t\treturn ctx.questionIndex >= ctx.questionsCount -1\n\n\t\t\t\t\t\t\t} },\n        \t\t\t\t\t{ target: 'hint' } // reenter 'hint' state\n\t\t\t\t\t\t]\n\t\tconst QuestionState = {\n\t\t\tid: 'question',\n\t\t\tinitial: 'hint',\n\t\t\tstates: {\n\t\t\t\thint: {\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (ctx, event) => {\n\t\t\t\t\t\t\tconsole.log(`[hint] play question ${ctx.questionIndex}: ${ctx.questionPlayTimes } audio`);\n\t\t\t\t\t\t\tctx.questionPlayTimes += 1;\n\t\t\t\t\t\t\treturn new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tplayAudioByUrl(ctx.questions[ctx.questionIndex].audio_url, () => {\n\t\t\t\t\t\t\t\t\tconsole.log('hint finish');\n\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone: 'answer',\n\t\t\t\t\t\tonError: 'answer'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tanswer: {\n\t\t\t\t\tafter: {\n\t\t\t\t\t\t8000: [\n        \t\t\t\t\t{ \n\t\t\t\t\t\t\t\ttarget: 'wrong',\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t} // reenter 'hint' state\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\t\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\t\n\t\t\t\t\t\tsrc: (context, event) => (callback, onReceive) => {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconsole.log('[answer] thinking and playing');\n\t\t\t\t\t\t\t// check every second\n\t\t\t\t\t\t\tconst id = setInterval(() => {\n\t\t\t\t\t\t\t\tif (!this._lastFingerPosition.dirty) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst region = context.questions[context.questionIndex];\n\t\t\t\t\t\t\t\tconst result = this.checkInRegion(region.rect);\n\t\t\t\t\t\t\t\tif (result === null) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconsole.log('[Genise JS] checkInRegion' + result)\n\t\t\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\t\t\tcallback('RIGHT')\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcallback('WRONG')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, 100);\n\t\t\t\t\t\t\tthis._intervalIds.push(id);\n\t\t\t\t\t\n\t\t\t\t\t\t\t// Perform cleanup\n\t\t\t\t\t\t\treturn () => clearInterval(id);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\ton: {\n\t\t\t\t\t\tRIGHT: {\n\t\t\t\t\t\t\ttarget: 'right',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tWRONG: {\n\t\t\t\t\t\t\ttarget: 'wrong',\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\tright: {\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (context, event) => {\n\t\t\t\t\t\t\tthis._lastFingerPosition.pos = null;\n\t\t\t\t\t\t\tthis._lastFingerPosition.dirty = false;\n\t\t\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\tconsole.log('answer right');\n\t\t\t\t\t\t\t\t// this.playAni(context.questionIndex, 'normal')\n\t\t\t\t\t\t\t\tconst an = context.questions[context.questionIndex].node;\n\t\t\t\t\t\t\t\tconsole.log('in right ' + (typeof an))\n\t\t\t\t\t\t\t\tan.active = true;\n\n\t\t\t\t\t\t\t\tif (an.isSpine) {\n\n\t\t\t\t\t\t\t\t\tconst skeleton = an.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\tskeleton.setAnimation(0, 'normal', true);\n\t\t\t\t\t\t\t\t\t}, 1);\n\t\t\t\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\t\t\tdragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst ddLogoCat = this.logoCat.getComponent(dragonBones.ArmatureDisplay)\n\t\t\t\t\t\t\t\tddLogoCat.playAnimation('right', 1)\n\t\t\t\t\t\t\t\tddLogoCat.once(dragonBones.EventObject.COMPLETE, function() {\n\t\t\t\t\t\t\t\t\tthis.logoCat.getComponent(dragonBones.ArmatureDisplay).playAnimation('normal', 0)\n\t\t\t\t\t\t\t\t}, this)\n\n\t\t\t\t\t\t\t\tplayAudioByUrl(this.rightAudio, () => {\n\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone: {\n\t\t\t\t\t\t\ttarget: '#QuestionsArray.next',\n\t\t\t\t\t\t\tactions: raise('CHECK')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: {\n\t\t\t\t\t\t\ttarget: '#QuestionsArray.next',\n\t\t\t\t\t\t\tactions: raise('CHECK')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\twrong:{\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (context, event) => {\n\t\t\t\t\t\t\tthis._lastFingerPosition.pos = null;\n\t\t\t\t\t\t\tthis._lastFingerPosition.dirty = false;\n\t\t\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\tconsole.log('answer wrong', context.questionIndex, context.questionPlayTimes , context.maxQuestionTryTimes);\n\t\t\t\t\t\t\t\tconst ddLogoCat = this.logoCat.getComponent(dragonBones.ArmatureDisplay)\n\t\t\t\t\t\t\t\tddLogoCat.playAnimation('wrong', 1)\n\t\t\t\t\t\t\t\tddLogoCat.once(dragonBones.EventObject.COMPLETE, function() {\n\t\t\t\t\t\t\t\t\tthis.logoCat.getComponent(dragonBones.ArmatureDisplay).playAnimation('normal', 0)\n\t\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\t\tlet wrongEffect = this.wrongAudio;\n\t\t\t\t\t\t\t\t// 第一和第二题的提示音\n\t\t\t\t\t\t\t\tif ([0, 1].includes(context.questionIndex)) {\n\t\t\t\t\t\t\t\t\twrongEffect = this.data[`wrong_audio${context.questionPlayTimes}`]\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// 非第一和第二题,并且做第二遍的提示音\n\t\t\t\t\t\t\t\t\tif (context.questionPlayTimes == 2) {\n\t\t\t\t\t\t\t\t\t\twrongEffect = this.data[`wrong_audio${context.questionPlayTimes}`]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\t\tif (context.questionPlayTimes >= context.maxQuestionTryTimes) {\n\t\t\t\t\t\t\t\t\tconst an = context.questions[context.questionIndex].node;\n\t\t\t\t\t\t\t\t\tan.active = true;\n\n\t\t\t\t\t\t\t\t\tif (an.isSpine) {\n\n\t\t\t\t\t\t\t\t\t\tconst skeleton = an.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\t\tskeleton.setAnimation(0, 'normal', true);\n\t\t\t\t\t\t\t\t\t\t}, 1);\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\t\t\t\tdragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t\t\t\t\tconsole.log('show animation', an.active);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tplayAudioByUrl(wrongEffect, () => {\n\t\t\t\t\t\t\t\t\tif (context.questionPlayTimes >= context.maxQuestionTryTimes) {\n\t\t\t\t\t\t\t\t\t\t// const an = context.questions[context.questionIndex].node;\n\t\t\t\t\t\t\t\t\t\t// an.active = true;\n\t\t\t\t\t\t\t\t\t\t// const dragonDisplay = an.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\t\t\t\t// dragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t\t\t\t\t// console.log('show animation', an.active);\n\t\t\t\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone: {\n\t\t\t\t\t\t\ttarget: 'hint',\n\t\t\t\t\t\t\t// actions: raise('CHECK')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: {\n\t\t\t\t\t\t\ttarget: '#QuestionsArray.next',\n\t\t\t\t\t\t\tactions: raise('CHECK')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t\tconst QuestionsArrayStatus = {\n\t\t\tid: 'QuestionsArray',\n\t\t\tinitial: 'play',\n\t\t\tstates: {\n\t\t\t\tplay: {\n\t\t\t\t\t...QuestionState\n\t\t\t\t},\n\t\t\t\tnext: {\n\t\t\t\t\ton: {\n\t\t\t\t\t\tCHECK: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttarget: '#game.end',\n\t\t\t\t\t\t\t\tcond: (ctx, evt) => {\n\t\t\t\t\t\t\t\t\tctx.questionIndex += 1;\n\t\t\t\t\t\t\t\t\tctx.questionPlayTimes = 0\n\t\t\t\t\t\t\t\t\tconsole.log('#game.end',  ctx.questionIndex >= ctx.questionsCount )\n\t\t\t\t\t\t\t\t\treturn ctx.questionIndex >= ctx.questionsCount\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{target: 'play'}\n\t\t\t\t\t\t]\n\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t\n\t\tconst state = {\n\t\t\tid: 'game',\n\t\t\tinitial: 'begin',\n\t\t\tcontext: {\n\t\t\t\tquestionIndex: 0,\n\t\t\t\tquestionPlayTimes: 0,\n\t\t\t\tmaxQuestionTryTimes: 2,\n\t\t\t\tquestionsCount: this._figurePointRectArray.length,\n\t\t\t\tquestions: this._figurePointRectArray,\n\t\t\t},\n\t\t\tstates: {\n\t\t\t\tbegin: {\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (ctx) => {\n\t\t\t\t\t\t\tconsole.log('game begin 1');\n\t\t\t\t\t\t\tif(window.courseware && window.courseware.openOsmoFingerRead) {\n\t\t\t\t\t\t\t\tthis.isOpenedOsmoFingerRead = true;\n\t\t\t\t\t\t\t\twindow.courseware.openOsmoFingerRead({\n\t\t\t\t\t\t\t\t\t\"page_id\": 27,\n\t\t\t\t\t\t\t\t\t\"book_id\": \"opw1\"\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar dragonDisplay = this.logoCat.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\tconst state = dragonDisplay.playAnimation('begin', 0);\n\t\t\t\t\t\t\treturn new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t\tplayAudioByUrl(this.data.begin_audio, () => {\n\t\t\t\t\t\t\t\t\tconsole.log('game begin audio finish');\n\t\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone:  'guide',\n\t\t\t\t\t\tonError: 'guide'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\tguide:{\n\t\t\t\t\tinvoke: {\n\t\t\t\t\t\tsrc: (ctx) => {\n\t\t\t\t\t\t\treturn new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t\tplayAudioByUrl(this.data.guide_audio, () => {\n\t\t\t\t\t\t\t\t\tconsole.log('game guide audio finish');\n\t\t\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDone:  'playing',\n\t\t\t\t\t\tonError: 'playing'\n\t\t\t\t\t},\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\tplaying: {\n\t\t\t\t\tentry: (ctx) => {\n\t\t\t\t\t\tconsole.log('entry play stage');\n\t\t\t\t\t\tvar dragonDisplay = this.logoCat.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\tconst state = dragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\tcc.assetManager.loadRemote(this.data.playing_audio, (err, audioClip) => {\n\t\t\t\t\t\t\tcc.audioEngine.playMusic(audioClip, true, 0.8);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tctx.questions.forEach((block) => {\n\t\t\t\t\t\t\tblock.node.active = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\texit: () => {\n\t\t\t\t\t\tconsole.log('exit play stage');\n\t\t\t\t\t\tcc.audioEngine.stopMusic();\n\t\t\t\t\t},\n\t\t\t\t\ton: {\n\t\t\t\t\t\tNEXT: 'end'\n\t\t\t\t\t},\n\t\t\t\t\t// ...QuestionsStates\n\t\t\t\t\t...QuestionsArrayStatus\n\t\t\t\t},\n\t\t\t\tend: {\n\t\t\t\t\t\tentry: (ctx, event) => {\n\t\t\t\t\t\t\tconsole.log('game end');\n\t\t\t\t\t\t\tvar dragonDisplay = this.logoCat.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\tconst state = dragonDisplay.playAnimation('finish', 0);\n\t\t\t\t\t\t\tif(window.courseware && window.courseware.closeOsmoFingerRead) {\n\t\t\t\t\t\t\t\tthis.isOpenedOsmoFingerRead = false;\n\t\t\t\t\t\t\t\twindow.courseware.closeOsmoFingerRead()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tplayAudioByUrl(this.data.end_audio, () => {\n\t\t\t\t\t\t\t\tconsole.log('game finish');\n\t\t\t\t\t\t\t\tonHomeworkFinish();\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t// return new Promise((resolve,reject) => {\n\t\t\t\t\t\t\t// \tsetTimeout(() => {\n\t\t\t\t\t\t\t// \t\tconsole.log('hint finish');\n\t\t\t\t\t\t\t// \t\tresolve()\n\t\t\t\t\t\t\t// \t}, 2000)\n\t\t\t\t\t\t\t// })\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t}\n\t\t};\n\t\tconst after = {};\n\t\tfor(let i = 0 ;i  < this._hintsNodeList.length; i++) {\n\t\t\tconst t = this._hintsNodeList[i].node;\n\t\t\tconst k = this._hintsNodeList[i].after;\n\t\t\tafter[k]= {\n\t\t\t\tactions: () => {\n\n\t\t\t\t\tif (t.isSpine) {\n\n\t\t\t\t\t\tconst skeleton = t.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\n\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tskeleton.setAnimation(0, 'enlarge', false);\n\t\t\t\t\t\t}, 1);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// skeleton.animation = skeleton.animationNames[0];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\tdragonDisplay.playAnimation('enlarge', 1);\n\t\t\t\t\t\tconsole.log(dragonDisplay._armatureKey, 'enlarge')\n\t\t\t\t\t\tdragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {\n\t\t\t\t\t\t\t// TODO 这里写触发事件\n\t\t\t\t\t\t\t// event.name为事件名称\n\t\t\t\t\t\t\t// event.armature.animation.play('normal', 0);\n\t\t\t\t\t\t\t// console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t}\n\n\n\n\t\t\t\t\t// const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t// dragonDisplay.playAnimation('enlarge', 1);\n\t\t\t\t\t// console.log(dragonDisplay._armatureKey, 'enlarge')\n\t\t\t\t\t// dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {\n\t\t\t\t\t// \t//TODO 这里写触发事件\n\t\t\t\t\t// \t//event.name为事件名称\n\t\t\t\t\t// \tevent.armature.animation.play('normal', 0);\n\t\t\t\t\t// \tconsole.log(event.animationState.name, dragonDisplay._armatureKey, 'end')\n\t\t\t\t\t// }, this);\n\t\t\t\t} \n\t\t\t}\n\t\t}\n\t\tif (this.data.begin_sep_time) {\n\t\t\tconst t = +this.data.begin_sep_time * 1000;\n\t\t\tafter[t] = {\n\t\t\t\tactions: () => {\n\t\t\t\t\tconsole.log('game begin 2');\n\n\t\t\t\t\tfor(let i = 0 ;i  < this._allAnimationNodes.length; i++) {\n\t\t\t\t\t\tconst t = this._allAnimationNodes[i];\n\t\t\t\t\t\tif (t.isSpine) {\n\n\t\t\t\t\t\t\tconst skeleton = t.getComponent(sp.Skeleton);\n\t\t\t\t\t\t\tconsole.log('skeleton: ', skeleton);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tskeleton.setToSetupPose();\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tskeleton.setAnimation(0, 'normal', true);\n\t\t\t\t\t\t\t}, 1);\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\tconsole.log('skeleton 22: ', skeleton);\n\n\t\t\t\t\t\t\t// skeleton.animation = skeleton.animationNames[0];\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconst dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);\n\t\t\t\t\t\t\tdragonDisplay.playAnimation('normal', 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tstate.states.begin.after = after;\n\n\n\n\t\tconst gameMachine = createMachine(state);\n\t\twindow.gameMachine = gameMachine;\n\t\tthis.gameMachineService = interpret(gameMachine).onTransition((state) => {\n\t\t// console.log(1, state.value, state.context);\n\t\t});\n\t\tthis.gameMachineService.start();\n\t\tif (window.gameMachineService) {\n\t\t\twindow.gameMachineService = gameMachineService;\n\t\t}\n\n\n\t},\n\n\t\n\n\n\n\t// 生命周期 start\n\tstart() {\n\t\tlet getData = this.getData.bind(this);\n\t\tif (window && window.courseware) {\n\t\t\tgetData = window.courseware.getData;\n\t\t}\n\n\t\tgetData((data) => {\n\t\t\t// console.log('data:', data);\n\t\t\tthis.data = data || this.getDefaultData();\n\t\t\tthis.data = JSON.parse(JSON.stringify(this.data))\n\t\t\t\n\t\t\tthis.preloadItem()\n\t\t});\n\t\twindow.air = window.air || {}\n\t\tif (window.air) {\n\t\t\twindow.air.osmoFingerReadCallback = (result) => {\n\t\t\t\tif (!this.gameMachineService) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// const st = this.gameMachineService.state.value.constructor.name == 'Object' \n\t\t\t\t// && this.gameMachineService.state.value['playing']\n\t\t\t\t// && this.gameMachineService.state.value['playing'].constructor.name == 'Object'\n\t\t\t\t// && this.gameMachineService.state.value['playing']['play']\n\t\t\t\t// && this.gameMachineService.state.value['playing']['play'] == 'answer'\n\t\t\t\t// if (st) {\n\t\t\t\t// }\n\t\t\t\tconst resultObj = JSON.parse(result);\n\t\t\t\tconsole.log('[Genise JS] '+ JSON.stringify(resultObj.finger_pos_in_page))\n\t\t\t\tconst p = resultObj.finger_pos_in_page;\n\t\t\t\tif (p.x == -1 || p.y == -1) {\n\t\t\t\t\tthis._lastFingerPosition.pos = null;\n\t\t\t\t\tthis._lastFingerPosition.dirty = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._lastFingerPosition = {\n\t\t\t\t\tpos:{\n\t\t\t\t\t\tx: p.x,\n\t\t\t\t\t\ty: p.y\n\t\t\t\t\t},\n\t\t\t\t\tdirty: true\n\t\t\t\t}\n\t\t\t\tthis.debugPointer(p.x, p.y)\n\t\t\t}\n\t\t}\n\t\tthis.isDebug = false;\n\t\t\n\t},\n\tcheckInRegion(r) {\n\t\tif (!this._lastFingerPosition && !this._lastFingerPosition.pos) {\n\t\t\treturn null;\n\t\t}\n\t\tconst p = this._lastFingerPosition ? this._lastFingerPosition.pos || {x:0, y:0} : {x:0, y:0};\n\n\t\tconsole.log('~p: ', p);\n\t\tconsole.log('~r: ', r);\n\n\t\tconst w = p.x > r.x && p.x < (r.x + r.width);\n\t\tconst h = p.y > r.y && p.y < (r.y + r.height);\n\t\treturn w && h;\n\n\t},\n\n\tgetData(func) {\n\t\tif (window && window.courseware) {\n\t\t\twindow.courseware.getData(func, 'scene');\n\t\t\treturn;\n\t\t}\n\n\t\tconst middleLayer = cc.find('middleLayer');\n\t\tif (middleLayer) {\n\t\t\tconst middleLayerComponent = middleLayer.getComponent('middleLayer');\n\t\t\tmiddleLayerComponent.getData(func);\n\t\t\treturn;\n\t\t}\n\n\t\tfunc(this.getDefaultData());\n\t},\n\n\tgetDefaultData() {\n\t\treturn  {\"begin_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"begin_sep_time\":1,\"guide_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"playing_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"right_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"wrong_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"wrong_audio1\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"wrong_audio2\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"end_audio\":\"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3\",\"bgItem\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png\",\"rect\":{\"x\":736.95,\"y\":0,\"width\":599.09,\"height\":775}},\"hotZoneItemArr\":[{\"id\":\"1659333645573\",\"index\":0,\"audio_url\":\"http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3\",\"itemType\":\"rect\",\"fontScale\":1.61953125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":1.61953125,\"dragDot\":{\"x\":1036.5,\"y\":387.5},\"gIdx\":\"1\",\"labelText\":\"1\",\"posX\":887.5,\"posY\":165.5,\"skeJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/133a1f60719ed26247e35dc022d82862.json\",\"name\":\"spineboy-pro.json\"},\"texJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas\",\"name\":\"spineboy-pro.atlas\"},\"texPngData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png\",\"name\":\"spineboy-pro.png\"},\"animType\":\"spine\",\"rect\":{\"x\":48.05,\"y\":65.5,\"width\":205,\"height\":200}},{\"id\":\"1659334098930\",\"index\":1,\"audio_url\":\"http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3\",\"itemType\":\"rect\",\"fontScale\":1.61953125,\"imgScale\":1,\"imgSizeW\":0,\"imgSizeH\":0,\"mapScale\":1.61953125,\"dragDot\":{\"x\":1036.5,\"y\":387.5},\"gIdx\":\"0\",\"labelText\":\"1\",\"posX\":1212.5,\"posY\":643.5,\"skeJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/679fed26daa464819d553de6331b3552.json\",\"name\":\"alien-pro.json\"},\"texJsonData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/65d8214c6b5c5d0496e17adb0408276a.atlas\",\"name\":\"alien-pro.atlas\"},\"texPngData\":{\"url\":\"http://staging-teach.cdn.ireadabc.com/a319b372899239325b90bb4ec07b4970.png\",\"name\":\"alien-pro.png\"},\"animType\":\"spine\",\"rect\":{\"x\":375.56,\"y\":543.5,\"width\":200,\"height\":200}}]}\n\t\t// return defaultData;\n\t},\n\n\tpreloadItem() {\n\t\tthis.addPreloadImage();\n\t\tthis.addPreloadAudio();\n\t\tthis.addPreloadAnima();\n\t\tthis.preload();\n\t},\n\n\n\taddPreloadImage() {\n\n\t\tthis._imageResList.push({ url: this.data.bgItem.url});\n\n\t\tfor (const q of this.data.hotZoneItemArr) {\n\t\t\tif (q.gIdx =='0') {\n\t\t\t\tthis._imageResList.push({ url: q.texPngData.url});\n\t\t\t}\n\n\t\t\tif (q.gIdx =='1') {\n\t\t\t\tthis._imageResList.push({ url: q.texPngData.url });\n\t\t\t}\n\t\t\tif (q.gIdx =='2') {\n\t\t\t\tthis._imageResList.push({ url: q.pic_url});\n\t\t\t}\n\t\t}\n\t},\n\tprepareAudioClip(url, key) {\n\t\tif (url) {\n\t\t\tcc.assetManager.loadRemote(url, (err, audioClip) => {\n\t\t\t\tif (audioClip) {\n\t\t\t\t\tthis[key] = audioClip;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\taddPreloadAudio() {\n\n\t\tthis._audioResList.push({ url: this.data.begin_audio });\n\t\t// this.prepareAudioClip(this.data.begin_audio1, 'begin_audio1')\n\t\t// this._audioResList.push({ url: this.data.begin_audio2 });\n\t\t// this.prepareAudioClip(this.data.begin_audio2, 'begin_audio2')\n\t\tthis._audioResList.push({ url: this.data.guide_audio });\n\t\tthis._audioResList.push({ url: this.data.playing_audio });\n\t\tif (this.data.wrong_audio) {\n\t\t\tthis._audioResList.push({ url: this.data.wrong_audio });\n\t\t\tthis.wrongAudio = this.data.wrong_audio\n\t\t}\n\t\tif (this.data.right_audio) {\n\t\t\tthis._audioResList.push({ url: this.data.right_audio });\n\t\t\tthis.rightAudio = this.data.right_audio\n\t\t}\n\t\tthis._audioResList.push({ url: this.data.wrong_audio1 });\n\t\tthis._audioResList.push({ url: this.data.wrong_audio2 });\n\t\tthis._audioResList.push({ url: this.data.end_audio });\n\n\n\t\tfor (const q of this.data.hotZoneItemArr) {\n\t\t\tif (q.gIdx =='0') {\n\t\t\t\tthis._audioResList.push({ url: q.audio_url });\n\t\t\t}\n\t\t}\n\t},\n\tdebugPointer() {\n\t\tconst boxDebugger = cc.find('Canvas/box-debugger');\n\t\tif (!this.isDebug) {\n\t\t\tboxDebugger.active = false;\n\t\t\treturn;\n\t\t}\n\t\tif (!this.POINTER_NODE) {\n\t\t\tthis.POINTER_NODE = new cc.Node();\n\t\t\tthis.POINTER_NODE.parent = boxDebugger;\n\t\t\tthis.POINTER_NODE.name = 'POINTER_NODE'\n\t\t\tthis.POINTER_NODE.addComponent(cc.Graphics);\n\t\t}\n\t\tconst grap = this.POINTER_NODE.getComponent(cc.Graphics);\n\t\tgrap.clear();\n\t\tconst ground = cc.find('Canvas/frame-border/ground');\n\t\tconst {width: baseW, height: baseH} = ground;\n\t\tconst {x: px, y: py} = this._lastFingerPosition.pos;\n\t\tlet x = baseW * px - baseW / 2;\n\t\tlet y = baseH - (baseH * py) - baseH / 2 - 16;\n\t\tconst pn = new cc.Node();\n\t\t\n\t\tgrap.fillColor=cc.color(255, 0, 0);\n\t\tgrap.circle(x, y, 32);\n\t\tgrap.fill();\n\t\tgrap.stroke();\n\t},\n\tdebugGraphics() {\n\t\tconst boxDebugger = cc.find('Canvas/box-debugger');\n\t\tif (!this.isDebug) {\n\t\t\tboxDebugger.active = false;\n\t\t\treturn;\n\t\t}\n\t\tboxDebugger.active = true;\n\t\tconsole.log('show debug graphics');\n\t\tconst ground = cc.find('Canvas/frame-border/ground');\n\t\tconst canvas = cc.find('Canvas');\n\t\tconst {width: baseW, height: baseH} = ground;\n\t\tconst {width: bgW, height: bgH} = this.data.bgItem.rect\n\t\tconst scaleX = bgW / baseW;\n\t\tconst scaleY = bgH / baseH;\n\t\tlet added  =false\n\t\tthis.data.hotZoneItemArr.forEach(area => {\n\t\t\t\n\t\t\tif (added) {\n\t\t\t\t// return\n\t\t\t}\n\t\t\tif (area.gIdx != '0') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tadded = true;\n\t\t\tconst dn = new cc.Node();\n\t\t\tconst lblNode = new cc.Node();\n\t\t\tlblNode.parent = dn\n\t\t\tconst lbl = lblNode.addComponent(cc.Label);\n\t\t\tlblNode.color = cc.color(0,0,0)\n\t\t\tlbl.string = area.skeJsonData.name.substring(0, area.skeJsonData.name.length - 9)\n\t\t\tdn.name = lbl.string;\n\t\t\tdn.parent = boxDebugger;\n\t\t\tdn.width = baseW;\n\t\t\tdn.height = baseH;\n\t\t\t\n\t\t\tconst grap = dn.addComponent(cc.Graphics);\n\t\t\tconst r = RandomInt(1,255)\n\t\t\tconst g = RandomInt(1,255)\n\t\t\tconst b = RandomInt(1,255)\n\t\t\tgrap.fillColor=cc.color(r, g, b, 127);\n\t\t\tconst {x: rx, y: ry, width: rw, height: rh} =  area.rect;\n\t\t\tlet w = (rw / bgW) * baseW;\n\t\t\tlet h = (rh / bgH) * baseH;\n\t\t\tlet x = (rx / bgW) * baseW - baseW / 2;\n\t\t\tlet y = baseH - ((ry / bgH) * baseH) - h - baseH / 2;\n\t\t\t// w *= scaleX\n\t\t\t// h *= scaleY\n\t\t\t// x *= scaleX\n\t\t\t// y *= scaleY\n            // const p = boxDebugger.convertToNodeSpaceAR(cc.v2(x,y));\n\t\t\t// x = p.x;\n\t\t\t// y = p.y;\n\t\t\tlblNode.x = x;\n\t\t\tlblNode.y = y + h;\n\t\t\t// dn.scaleX = scaleX;\n\t\t\t// dn.scaleY = scaleY;\n\t\t\t// dn.scale = area.mapScale; // minScale; // this._mapScaleMax * area.mapScale; // ;\n\t\t\tconsole.log('[debug]', area.skeJsonData.name, x, y, w, h);\n\t\t\tgrap.fillRect(x, y, w, h);\n\t\t\tgrap.stroke();\n\t\t\t\n\t\t});\n\n\t},\n\taddPreloadAnima() {\n\n\t},\n\n\tpreload() {\n\n\t\tconst preloadArr = this._imageResList.concat(this._audioResList).concat(this._animaResList);\n\t\t// console.log(preloadArr);\n\t\tcc.assetManager.loadAny(preloadArr, null, (f, t, item) => {\n\t\t\t// console.log(f, t, item)\n\t\t}, (err, data) => {\n\t\t\t// console.log(err, data);\n\t\t\tconst ground = cc.find(`Canvas/frame-border/ground`);\n\t\t\tconst groundBg = cc.find(`Canvas/frame-border/ground/bg`);\n\t\t\tgroundBg.active = false;\n\t\t\tconst baseRect = this.data.bgItem.rect;\n\t\t\tgetSpriteFrimeByUrl(this.data.bgItem.url, (sf) => {\n\t\t\t\tconst gs = groundBg.getComponent(cc.Sprite);\n\t\t\t\tgs.spriteFrame = sf;\n\t\t\t\tgroundBg.active = true;\n\n\t\t\t\tlet dbCount = 0;\n\t\t\t\tlet finishDbCount = 0\n\t\t\t\tfor(const block of this.data.hotZoneItemArr) {\n\t\t\t\t\tif (block.gIdx == '0' || block.gIdx == '1') {\n\t\t\t\t\t\tdbCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const block of this.data.hotZoneItemArr) {\n\n\t\t\t\t\t\n\t\t\t\t\tif (block.gIdx == '2') {\n\t\t\t\t\t\tconst s1 = ((ground.width  / block.imgSizeW) + (ground.height  / block.imgSizeH)) / 2\n\t\t\t\t\t\tconst node = new cc.Node();\n\t\t\t\t\t\tnode.parent = ground;\n\t\t\t\t\t\tconst spr = node.addComponent(cc.Sprite);\n\t\t\t\t\t\tgetSpriteFrimeByUrl(block.pic_url, (sf) => {\n\t\t\t\t\t\tspr.spriteFrame = sf;\n\t\t\t\t\t\tnode.scale = s1;\n\t\t\t\t\t\t})\n\n\t\t\t\t\t}\n\t\t\t\t\tif (block.gIdx == '0' || block.gIdx == '1') {\n\n\t\t\t\t\t\tconst n = new cc.Node();\n\t\t\t\t\t\t// n.scale = 0.25;\n\t\t\t\t\t\tn.scale = ground.width / groundBg.width;\n\n\t\t\t\t\t\tn.parent = ground;\n\t\t\t\t\t\tn.active = false;\n\n\t\t\t\t\t\tif (block.animType == 'spine') {\n\t\t\t\n\t\t\t\t\t\t\tconst skeleton = n.addComponent(sp.Skeleton);\n\t\t\t\t\t\t\tn.isSpine = true;\n\n\t\t\t\t\t\t\tloadSpine(skeleton, block.texPngData.name, {\n\t\t\t\t\t\t\t\ttex: block.texPngData.url, \n\t\t\t\t\t\t\t\tatlas: block.texJsonData.url,\n\t\t\t\t\t\t\t\tske: block.skeJsonData.url,\n\t\t\t\t\t\t\t}).then(({width, height}) => {\n\t\t\t\t\t\t\t\tn.width = width;\n\t\t\t\t\t\t\t\tn.height = height;\t\n\t\t\t\t\t\t\t\tn.active = true;\n\t\t\t\t\t\t\t\t// db.playAnimation('null', 0);\n\t\t\t\t\t\t\t\t// skeleton.setToSetupPose();\n\t\t\t\t\t\t\t\t// skeleton.setAnimation(0, 'enlarge', true);\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tthis._allAnimationNodes.push(n);\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}).catch(() => {\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\n\t\t\t\t\t\t\tconst db = n.addComponent(dragonBones.ArmatureDisplay);\n\n\t\t\t\t\t\t\tloadDragonBones(db, {\n\t\t\t\t\t\t\t\ttex: block.texPngData.url, \n\t\t\t\t\t\t\t\tatlas: block.texJsonData.url,\n\t\t\t\t\t\t\t\tske: block.skeJsonData.url,\n\t\t\t\t\t\t\t}).then(({width, height}) => {\n\t\t\t\t\t\t\t\tn.width = width;\n\t\t\t\t\t\t\t\tn.height = height;\t\n\t\t\t\t\t\t\t\tn.active = true;\n\t\t\t\t\t\t\t\tdb.playAnimation('null', 0);\n\t\t\t\t\t\t\t\tthis._allAnimationNodes.push(n);\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}).catch(() => {\n\t\t\t\t\t\t\t\tfinishDbCount++;\n\t\t\t\t\t\t\t\tconsole.log(finishDbCount, dbCount)\n\t\t\t\t\t\t\t\tif (finishDbCount == dbCount) {\n\t\t\t\t\t\t\t\t\tthis.loadEnd();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\tif (block.gIdx == '0') {\n\t\t\t\t\t\t\tconst rectInfo = {\n\t\t\t\t\t\t\t\tnode: n,\n\t\t\t\t\t\t\t\taudio_url: block.audio_url ,\n\t\t\t\t\t\t\t\trect: {\n\t\t\t\t\t\t\t\t\tx: block.rect.x / baseRect.width,\n\t\t\t\t\t\t\t\t\ty: block.rect.y / baseRect.height,\n\t\t\t\t\t\t\t\t\twidth: block.rect.width / baseRect.width,\n\t\t\t\t\t\t\t\t\theight: block.rect.height / baseRect.height,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tthis._figurePointRectArray.push(rectInfo);\n\n\t\t\t\t\t\t\t// this.addRectNodeListener(block);\n\t\t\n\t\t\t\t\t\t\tif (block.labelText) {\n\t\t\t\t\t\t\t\tconst k = +block.labelText * 1000;\n\t\t\t\t\t\t\t\tif(!isNaN(k)) {\n\t\t\t\t\t\t\t\t\tthis._hintsNodeList.push({\n\t\t\t\t\t\t\t\t\t\tnode: n,\n\t\t\t\t\t\t\t\t\t\tafter: k\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t// console.log(this.data);\n\t\t\tconsole.log('resource perload finish');\n\n// <<<<<<< HEAD\n// =======\n// \t\t\tif (window && window[\"air\"]) {\n// \t\t\t\t// cc.find('Canvas').opacity = 0;\n// \t\t\t\twindow.air.onCourseInScreen = (next) => {\n// \t\t\t\t\t// cc.find('Canvas').opacity = 255;\n// \t\t\t\t\tthis.loadEnd();\n// \t\t\t\t\tnext();\n// \t\t\t\t}\n// \t\t\t\twindow.air.hideAirClassLoading();\n// \t\t\t} else {\n// \t\t\t\tthis.loadEnd();\n// \t\t\t}\n// >>>>>>> 2d461e1910571bcfc6ad4dc93c2cedafc20923ea\n\n\t\t\tcc.debug.setDisplayStats(false);\n\t\t});\n\t},\n\n\n\tloadEnd() {\n\t\tif (window && window[\"air\"] && window[\"air\"].hideAirClassLoading) {\n\t\t\twindow[\"air\"].hideAirClassLoading();\n\t\t}\n\t\tthis.initData();\n\t\t// this.initAudio();\n\t\t// this.initView();\n\t\tthis.initBg();\n\t\t// this.initListener();\n\t\tthis.debugGraphics();\n\t\tthis.createStateMachine();\n\t},\n\n\t_cantouch: null,\n\tinitData() {\n\t\t// 所有全局变量 默认都是null \n\t\tthis._cantouch = true;\n\t},\n\n\t// audioBtn: null,\n\t// initAudio() {\n\t// \tconst audioNode = cc.find('Canvas/res/audio');\n\n\t// \tconst getAudioByResName = (resName) => {\n\t// \t\treturn audioNode.getChildByName(resName).getComponent(cc.AudioSource);\n\t// \t}\n\n\t// \tthis.audioBtn = getAudioByResName('btn');\n\n\t// },\n\n\n\t// initView() {\n\n\t// \t// this.initBg();\n\t// \t// this.initPic();\n\t// \t// this.initBtn();\n\t// \tthis.initIcon();\n\t// },\n\n\taddRectNodeListener(data) {\n\n\n\t\tconst bg = cc.find(`Canvas/frame-border/ground/bg`).parent;\n\n\t\tconst rate = (bg.scale * bg.width) / this.data.bgItem.rect.width;\n\n\t\tconst rectNode = new cc.Node();\n\t\trectNode.name = 'rect' + data.index;\n\t\tbg.addChild(rectNode, 20);\n\n\n\t\tconst ctx = rectNode.addComponent(cc.Graphics);\n\t\t// 红色矩形\n\t\tctx.lineWidth = 4;\n\t\tctx.strokeColor = cc.Color.BLACK;\n\t\tctx.fillColor = cc.Color.WHITE.setA(100);\n\n\t\tconst scale = rate / bg.scaleY;\n\n\t\tconsole.log('scale~ : ', scale)\n\n\t\trectNode.width = data.rect.width * scale;\n\t\trectNode.height = data.rect.height * scale;\n\t\trectNode.x = -bg.width / 2 + data.rect.x * scale + bg.x;\n\t\trectNode.y = bg.height / 2 - data.rect.height * scale - data.rect.y * scale + bg.y;\n\n\t\trectNode.anchorX = rectNode.anchorY = 0;\n\n\t\tconsole.log('data: ', data);\n\t\tconsole.log('rectNode: ', rectNode);\n\n\n\t\t// if (pageData.bgItem.isShowDebugLine) {\n\t\t\tctx.rect(0, 0, rectNode.width, rectNode.height);\n\t\t\t// ctx.fillRect(0, 0, 200, 200);\n\t\t// }\n\t\tctx.stroke();\n\t\tctx.fill();\n\n\t\trectNode.addComponent(cc.Button);\n\t\trectNode.on(\"click\", () => {\n\t\t\tconsole.log(\" in rectNode click\");\n\n\n\t\t\tconst _x = rectNode.x / bg.width;\n\t\t\tconst _y = rectNode.y / bg.height;\n\t\t\tconst _w = rectNode.width / bg.width;\n\t\t\tconst _h = rectNode.height / bg.height;\n\n\t\t\tconst pos = {\n\t\t\t\tx: _x + _w / 2 + 0.5,\n\t\t\t\ty: -(_y + _h / 2 - 0.5)\n\t\t\t}\n\t\t\tthis._lastFingerPosition = {\n\t\t\t\tpos: pos,\n\t\t\t\tdirty: true\n\t\t\t};\n\n\t\t})\n\n\t},\n\n\tinitBg() {\n\t\tconst bgNode = cc.find('Canvas/bg');\n\t\tbgNode.scale = this._mapScaleMax;\n\t\tconsole.log('this._mapScaleMax', this._mapScaleMax);\n\t},\n\n\t\n\t\n\n\t/*initBtn() {\n\n\t\tthis.curPage = 0;\n\t\tconst bottomPart = cc.find('Canvas/bottomPart');\n\t\tbottomPart.zIndex = 5; // 提高层级\n\n\t\tbottomPart.x = bottomPart.parent.width / 2;\n\t\tbottomPart.y = -bottomPart.parent.height / 2;\n\n\t\tconst leftBtnNode = bottomPart.getChildByName('btn_left');\n\t\t//节点中添加了button组件 则可以添加click事件监听\n\t\tleftBtnNode.on('click', () => {\n\t\t\tif (!this._cantouch) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.curPage == 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.curPage = 0\n\t\t\tthis.leftMove();\n\n\t\t\t// 游戏结束时需要调用这个方法通知系统作业完成\n\t\t\tonHomeworkFinish();\n\n\t\t\tcc.audioEngine.play(this.audioBtn.clip, false, 0.8)\n\t\t})\n\n\t\tconst rightBtnNode = bottomPart.getChildByName('btn_right');\n\t\t//节点中添加了button组件 则可以添加click事件监听\n\t\trightBtnNode.on('click', () => {\n\t\t\tif (!this._cantouch) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.curPage == 1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.curPage = 1\n\t\t\tthis.rightMove();\n\n\t\t\tcc.audioEngine.play(this.audioBtn.clip, false, 0.5)\n\t\t})\n\t},*/\n\n\n\n\n\t// update (dt) {},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t_timeoutIds: null,\n\t_intervalIds: null,\n\t// 生命周期\n\tonDestroy() {\n\t\tconsole.log('op15 onDestroy');\n\t\tthis._timeoutIds.forEach(id => {\n\t\t\tclearTimeout(id);\n\t\t});\n\t\tthis._intervalIds.forEach(id => {\n\t\t\tclearInterval(id);\n\t\t});\n\t\tthis.gameMachineService.stopChild();\n\t\tthis.gameMachineService.stop();\n\t\tif(window.courseware && window.courseware.closeOsmoFingerRead) {\n\t\t\tif (this.isOpenedOsmoFingerRead) {\n\t\t\t\twindow.courseware.closeOsmoFingerRead()\n\t\t\t}\n\t\t}\n\t},\n\n\n\n\n\n});\n"]}
\ No newline at end of file
diff --git a/temp/startup.json b/temp/startup.json
index 109cd37..03ab624 100644
--- a/temp/startup.json
+++ b/temp/startup.json
@@ -1 +1 @@
-{"pid":6216}
+{"pid":2139}
-- 
2.21.0