Content-Type: multipart/related; start=; boundary=----------fIzuf6Oyt4t75FHoI40g63 Content-Location: http://ege.edu.ru/ru/main/scaling/ Subject: =?utf-8?Q?=D0=A1=D0=BE=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2=D0=B8=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B2=D0=B8=D1=87=D0=BD=D1=8B=D1=85=20=D0=B8=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=D1=8B=D1=85=20=D0=B1=D0=B0=D0=BB=D0=BB=D0=BE=D0=B2=20/=20=D0=9E=D1=84=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D0=BE=D0=BD=D0=BD=D1=8B=D0=B9=20=D0=BF=D0=BE=D1=80=D1=82=D0=B0=D0=BB=20=D0=B5=D0=B4=D0=B8=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B3=D0=BE=D1=81=D1=83=D0=B4=D0=B0=D1=80=D1=81=D1=82=D0=B2=D0=B5=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=8D=D0=BA=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D0=B0=20(=D0=95=D0=93=D0=AD=202017)?= MIME-Version: 1.0 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=default.htm Content-Type: text/html; charset=utf-8; name=default.htm Content-ID: Content-Location: http://ege.edu.ru/ru/main/scaling/ Content-Transfer-Encoding: Base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJh bnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3Nl LmR0ZCI+Cgo8aHRtbD4KPGhlYWQ+Cgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50 LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CiAgICA8 bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iIj4KICAgIDxtZXRhIG5hbWU9 ImRlc2NyaXB0aW9uIiBjb250ZW50PSIiPgoJPHRpdGxlPtCh0L7QvtGC0LLQtdGC 0YHRgtCy0LjQtSDQv9C10YDQstC40YfQvdGL0YUg0Lgg0YLQtdGB0YLQvtCy0YvR hSDQsdCw0LvQu9C+0LIgLyDQntGE0LjRhtC40LDQu9GM0L3Ri9C5INC40L3RhNC+ 0YDQvNCw0YbQuNC+0L3QvdGL0Lkg0L/QvtGA0YLQsNC7INC10LTQuNC90L7Qs9C+ INCz0L7RgdGD0LTQsNGA0YHRgtCy0LXQvdC90L7Qs9C+INGN0LrQt9Cw0LzQtdC9 0LAgKNCV0JPQrSAyMDE3KTwvdGl0bGU+CjxsaW5rIHJlbD0iaWNvbiIgaHJlZj0i L2NvbW1vbi9pbWcvZWdlX25ldy9mYXZpY29uX2VnZS5naWYiIHR5cGU9ImljbyI+ CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii9j b21tb24vY3NzL3N0eWxlX2VnZV9uZXcuY3NzIiBtZWRpYT0iYWxsIj4KPGxpbmsg cmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL2NvbW1vbi9j c3Mvc3R5bGVfZWdlXzIwMTUuY3NzIiBtZWRpYT0iYWxsIj4KPHNjcmlwdCB0eXBl PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2NvbW1vbi9qcy9tb290b29scy5qcyI+ PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9j b21tb24vanMvanF1ZXJ5LmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0 L2phdmFzY3JpcHQiIHNyYz0iL2NvbW1vbi9qcy9qcXVlcnkuY29va2llLmpzIj48 L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2Nv bW1vbi9qcy9lZ2VfbmV3LmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0 L2phdmFzY3JpcHQiIHNyYz0iL2NvbW1vbi9qcy9lZ2Vfc2Vjb25kLmpzIj48L3Nj cmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2NvbW1v bi9qcy9jdXN0b20tZm9ybS1lbGVtZW50cy5qcyI+PC9zY3JpcHQ+CjxsaW5rIG1l ZGlhPSJzY3JlZW4iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2NvbW1vbi9jc3Mv Y29sb3Jib3guY3NzIj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy Yz0iL2NvbW1vbi9qcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0Pgo8c2Ny aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY29tbW9uL2pzL2p3cGxh eWVyL2p3cGxheWVyLmpzIj48L3NjcmlwdD4KCgo8L2hlYWQ+Cjxib2R5IGlkPSJz ZWNvbmQiIGNsYXNzPSJFR0UiPgo8ZGl2IGlkPSJjb250ZW50Ij4KCTxkaXYgY2xh c3M9Im1haW5fdG9wIj4KCQk8YSBjbGFzcz0icmVnaW9ucyBleGFtcGxlNiIgIGhy ZWY9Ii9ydS9rYXJ0YV9ydXNzaWEvIj7QktCw0Ygg0YDQtdCz0LjQvtC9PC9hPgo8 c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CmpRdWVyeShkb2N1bWVudCku cmVhZHkoZnVuY3Rpb24oKXsKICAgIGpRdWVyeSgnLmRpdl9uZXdfc2NyMicpLmNz cygnZGlzcGxheScsICdibG9jaycpOwoJalF1ZXJ5KCcuZGl2X25ld19zY3IxJyku Y3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKCgkvLyBpZighZ2V0X2Nvb2tpZSgncmVn aW9uX2lkJykpewoJLy8gCWxvY2F0aW9uLmhyZWYgPSAiLi8/cmVnaW9uX2NvZGU9 NzciOwoJLy8gfQp9KTsKCmZ1bmN0aW9uIGdldF9jb29raWUgKCBjb29raWVfbmFt ZSApewogIHZhciByZXN1bHRzID0gZG9jdW1lbnQuY29va2llLm1hdGNoICggJyhe fDspID8nICsgY29va2llX25hbWUgKyAnPShbXjtdKikoO3wkKScgKTsKIAogIGlm ICggcmVzdWx0cyApCiAgICByZXR1cm4gKCB1bmVzY2FwZSAoIHJlc3VsdHNbMl0g KSApOwogIGVsc2UKICAgIHJldHVybiBudWxsOwp9Cjwvc2NyaXB0PgogIDxzcGFu IGlkPSJyYmNjb250ZW50c19lZV9ibG9jay4xNjgyLkNPTlRFTlRfVEVYVC44MC45 NDkiPjwvc3Bhbj4KCjxkaXYgY2xhc3M9InRvcF9yaWdodF9uYXYiPg0KDQo8ZGl2 IGNsYXNzPSJ0cF9yaWdfbmF2MSI+DQogICAgPGEgaHJlZj0iL3J1L21vYmlsZS8i PtCc0L7QsdC40LvRjNC90LDRjyDQstC10YDRgdC40Y88L2E+DQo8L2Rpdj4NCg0K PC9kaXY+DQoNCg0KDQoNCg0KPGRpdiBjbGFzcz0idG9wX3JpZ2h0X3NvYyI+DQog ICAgIDwhLS08YSBjbGFzcz0ic29jX3NlMCIgIGhyZWY9Imh0dHA6Ly9ibG9nLWVn ZS5saXZlam91cm5hbC5jb20vIiB0YXJnZXQ9Il9ibGFuayI+PC9hPi0tPg0KICAg ICAgPGEgY2xhc3M9InNvY19zZTEiICBocmVmPSJodHRwOi8vdHdpdHRlci5jb20v IyEvb3Nva29ydSIgdGFyZ2V0PSJfYmxhbmsiPjwvYT4NCiAgICA8YSBjbGFzcz0i c29jX3NlMiIgaHJlZj0iaHR0cDovL3d3dy5mYWNlYm9vay5jb20vcGFnZXMv0J7Q odCe0JrQni3QldCT0K0t0JPQmNCQLzEyMjE0MjUyNzkxMTYzOSIgdGFyZ2V0PSJf YmxhbmsiPjwvYT4NCiAgICA8YSBjbGFzcz0ic29jX3NlMyIgaHJlZj0iaHR0cDov L3ZrLmNvbS9vc29rb3J1IiB0YXJnZXQ9Il9ibGFuayI+PC9hPg0KICAgIDxhIGNs YXNzPSJzb2Nfc2U0IiBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS91c2Vy L1Jvc09ick5hZHpvciIgdGFyZ2V0PSJfYmxhbmsiPjwvYT4NCjwvZGl2Pg0KDQoK ICA8ZGl2IGNsYXNzPSJ0b3BfcmlnaHRfM19pY28iPjxzcGFuPjwvc3Bhbj48L2Rp dj4KPGRpdiBjbGFzcz0idG9wX3JpZ2h0XzMiPgo8Zm9ybSBhY3Rpb249Ii9ydS9z ZWFyY2gvIiBpZD0ic2VhcmNoX2Zvcm0iPgoKICAgICAgICAgIDxpbnB1dCB0eXBl PSJUZXh0IiBjbGFzcz0iaW5wMSIgdGl0bGU9ItCf0L7QuNGB0LoiIG5hbWU9InEi IHZhbHVlPSLQn9C+0LjRgdC6IiBvbmZvY3VzPSJqYXZhc2NyaXB0OnRoaXMudmFs dWU9JyciPgogICAgICAgICAgPGlucHV0IGFsdD0i0J3QsNC50YLQuCIgY2xhc3M9 ImlucDIiIHR5cGU9ImltYWdlIiBzcmM9Ii9jb21tb24vaW1nL2ltZ18yMDEzL3Nl YXJjaF9iZzEuanBnIiB2YWx1ZT0i0J/QvtC40YHQuiI+CiAgICAgCgogIDwvZm9y bT4KPC9kaXY+Cgk8L2Rpdj4KCTxzcGFuIGlkPSJyYmNjb250ZW50c19lZV9ibG9j ay4xNjg4LkNPTlRFTlRfVEVYVC42Ljk1NSI+PC9zcGFuPgoKPGRpdiBjbGFzcz0i ZWdlX3NpdGVfaGVhZGVyIj4NCgk8ZGl2IGNsYXNzPSJoZWFkZXJfc2xvZ2FuIj4N CgkJPGRpdj7QntGE0LjRhtC40LDQu9GM0L3Ri9C5PGJyPtC40L3RhNC+0YDQvNCw 0YbQuNC+0L3QvdGL0Lkg0L/QvtGA0YLQsNC7PC9kaXY+DQogICAgICAgICAgICAg ICAgPGRpdiBjbGFzcz0naGVhZGVyX3Nsb2dhbjInPtC10LTQuNC90L7Qs9C+INCz 0L7RgdGD0LTQsNGA0YHRgtCy0LXQvdC90L7Qs9C+PGJyPtGN0LrQt9Cw0LzQtdC9 0LA8L2Rpdj4NCgk8L2Rpdj4NCgk8YSBocmVmPSIvcnUvc3BlY2lhbC9tYWluLyI+ PGRpdiBjbGFzcz0iaGVhZGVyX3NwZWNfbGluayI+PC9kaXY+PC9hPg0KCTxhIGhy ZWY9Imh0dHA6Ly9lZ2UuZWR1LnJ1LyI+PGRpdiBjbGFzcz0iaGVhZGVyX2xvZ29f bWFpbiI+PGltZyBzcmM9Ii9jb21tb24vdXBsb2FkL2ltZy8yMDE4LnBuZyI+PC9k aXY+PC9hPg0KPC9kaXY+CQ0KDQoNCg0KDQoNCjwhLS08ZGl2IGNsYXNzPSJoZWFk ZXJfbG9nb19tYWluIj48YSBocmVmPSIvcnUvIj48aW1nIHNyYz0iL2NvbW1vbi9p bWcvaW1nXzIwMTUvdnlib3I0LnBuZyI+PC9hPjwvZGl2Pg0KPC9kaXY+LS0+DQo8 IS0tDQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KLmxvZ29fbmV3ew0KYmFja2dy b3VuZDogbm9uZTsNCn0NCi5sb2dvX25ldyAubG9nb19pY297DQpiYWNrZ3JvdW5k OiB1cmwoIi9jb21tb24vdXBsb2FkL2ltZy9sb2dvLmdpZiIpIG5vLXJlcGVhdCB0 b3AgbGVmdDsNCn0NCiNwcmludCAubG9nb19uZXcgew0KYmFja2dyb3VuZDogdXJs KCIvY29tbW9uL3VwbG9hZC9pbWcvbG9nb19wcmludC5naWYiKSBuby1yZXBlYXQg MHB4IDQ1cHg7DQp9DQoubG9nb19uZXcgLnZlcnNfc3BlY2lhbCB7DQpiYWNrZ3Jv dW5kOiB1cmwoIi9jb21tb24vdXBsb2FkL3BpY3MvaWNvX3NwZWNpYWwuZ2lmIikg bm8tcmVwZWF0IGxlZnQgdG9wOw0KZm9udC1zaXplOiAxM3B4Ow0KcGFkZGluZy1s ZWZ0OiAzMHB4Ow0Kd2lkdGg6IDEzNXB4Ow0KfQ0KLmxvZ29fbmV3IC5uZXdfc2xv Z2Fuew0KcG9zaXRpb246IGFic29sdXRlOw0KcmlnaHQ6IDIxMHB4Ow0KdG9wOiA0 NnB4Ow0KdGV4dC1hbGlnbjogcmlnaHQ7DQpmb250LWZhbWlseTogY2FsaWJyaTsN Cn0NCi5sb2dvX25ldyAubmV3X3Nsb2dhbiAudGV4dHsNCmZvbnQtc2l6ZTogMTZw eDsNCnRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7DQpmb250LXdlaWdodDogYm9s ZDsNCmNvbG9yOiAjZTYyNjMxOw0KfQ0KLmxvZ29fbmV3IC5uZXdfc2xvZ2FuIC50 ZXh0IC5wcmVmew0KY29sb3I6ICM5ZDlkOWM7DQp9DQoubG9nb19uZXcgLm5ld19z bG9nYW4gLnllYXJ7DQpjb2xvcjogIzExNzNiOTsNCmZvbnQtc2l6ZTogNTJweDsN CnRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7DQpmb250LXdlaWdodDogYm9sZDsN CmxpbmUtaGVpZ2h0OiAxZW07DQp9DQoubG9nb19uZXcgLmxvZ29fdGV4dHsNCmZv bnQtZmFtaWx5OiAnT3Blbi1TYW5zLUNvbmRlbnNlZC1MaWdodCc7DQp9DQo8L3N0 eWxlPg0KPGRpdiBjbGFzcz0ibG9nb19uZXciPg0KPGRpdiBjbGFzcz0ibG9nb19p Y28iIG9uY2xpY2s9ImxvY2F0aW9uLmhyZWY9Jy8nIj48L2Rpdj4NCjxkaXYgY2xh c3M9ImxvZ29fdGV4dCIgb25jbGljaz0ibG9jYXRpb24uaHJlZj0nLyciPg0KPGRp diBjbGFzcz0ibG9nb190ZXh0MSI+0J7RhNC40YbQuNCw0LvRjNC90YvQuSDQuNC9 0YTQvtGA0LzQsNGG0LjQvtC90L3Ri9C5INC/0L7RgNGC0LDQuzwvZGl2Pg0KPGRp diBjbGFzcz0ibG9nb190ZXh0MiI+0JXQtNC40L3QvtCz0L4g0LPQvtGB0YPQtNCw 0YDRgdGC0LLQtdC90L3QvtCz0L4g0Y3QutC30LDQvNC10L3QsDwvZGl2Pg0KPC9k aXY+DQo8ZGl2IGNsYXNzPSJuZXdfc2xvZ2FuIj4NCjxkaXYgY2xhc3M9InRleHQi PjxzcGFuIGNsYXNzPSJwcmVmIj4jPC9zcGFuPtC10LPRjV/QstGL0LHQvtGAX9Cx 0YPQtNGD0YnQtdCz0L48L2Rpdj4NCjxkaXYgY2xhc3M9InllYXIiPjIwMTU8L2Rp dj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0idmVyc19zcGVjaWFsIj48YSBocmVmPSIv cnUvc3BlY2lhbC9tYWluLyI+0LLQtdGA0YHQuNGPINC00LvRjyDRgdC70LDQsdC+ 0LLQuNC00Y/RidC40YU8L2E+PC9kaXY+DQo8L2Rpdj4NCi0tPgogIDxkaXYgY2xh c3M9Im1lbnVfdG9wIj4KCTxkaXYgY2xhc3M9Im1lbnVfdG9wX2FsbCI+CgkJPHRh YmxlIGNsYXNzPSJtZW51X3RvcF90YmwgY291bnRfIj4KCQkJPHRyPgoJCQkJCQkJ CQkJPHRkPgoJCQkJCTxkaXYgY2xhc3M9Im1lbnVfbSBtZW51X21fMSI+CgkJCQkJ CTxhIGhyZWY9Ii9ydS9tYWluLyIgY2xhc3M9Im1lbnUxIHNlbCI+0J7QsdGJ0LDR jyDQuNC90YTQvtGA0LzQsNGG0LjRjyDQviDQldCT0K0gPGRpdiBjbGFzcz0ic3Rf dHJldWciPjwvZGl2PjwvYT4KCgkJCQkJCTxkaXYgY2xhc3M9Im1lbnVfdmlldyI+ CgkJCQkJCQkJCgkJCQkJCQkJCQkJCQkJCQk8dGFibGUgY2xhc3M9Im1lbnVfdmll d190YmwiPgoJCQkJCQkJCTx0cj4KCQkJCQkJCQkJPHRkIGNsYXNzPSJ0ZDEiPgoJ CQkJCQkJCQkKCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJtZW51NSI+CgkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJPGEgaHJlZj0iL3J1L21haW4vbWFpbl9pdGVtLyIgPtCe 0YHQvdC+0LLQvdGL0LUg0YHQstC10LTQtdC90LjRjyDQviDQldCT0K08L2E+CgkJ CQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQkJCQoJCQkJCQkJCQkJCTxk aXYgY2xhc3M9Im1lbnU1Ij4KCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8YSBocmVm PSIvcnUvbWFpbi9zY2hlZHVsZS8iID7QoNCw0YHQv9C40YHQsNC90LjQtSDQk9CY 0JAgMjAxODwvYT4KCQkJCQkJCQkJCQk8L2Rpdj4KCgkJCQkJCQkJCQkJCgkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKCQkJCQkJCQkJ CgkJCQkJCQkJCQkJPGRpdiBjbGFzcz0ibWVudTUiPgoJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCTxhIGhyZWY9Ii9ydS9tYWluL2JyaWVmLWdsb3NzYXJ5LyIgPtCh0LvQ vtCy0LDRgNGMINCV0JPQrTwvYT4KCQkJCQkJCQkJCQk8L2Rpdj4KCgkJCQkJCQkJ CQkJCgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkK CQkJCQkJCQkJCgkJCQkJCQkJCQkJPGRpdiBjbGFzcz0ibWVudTUiPgoJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCTxhIGhyZWY9Ii9ydS9tYWluL2xlZ2FsLWRvY3VtZW50 cy8iID7QlNC+0LrRg9C80LXQvdGC0Ys8L2E+CgkJCQkJCQkJCQkJPC9kaXY+CgoJ CQkJCQkJCQkJCQoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCgkJCQkJCQkJCQoJCQkJCQkJCQkJCTxkaXYgY2xhc3M9Im1lbnU1Ij4K CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8YSBocmVmPSIvcnUvbWFpbi9zaWMvIiA+ 0KHQmNCmINCg0L7RgdC+0LHRgNC90LDQtNC30L7RgNCwPC9hPgoJCQkJCQkJCQkJ CTwvZGl2PgoKCQkJCQkJCQkJCQkKCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQoJCQkJCQkJCQkKCQkJCQkJCQkJCQk8ZGl2IGNsYXNz PSJtZW51NSI+CgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJPGEgaHJlZj0iL3J1L21h aW4vcmVsZWFzZS8iID5TTU9UUklFR0UuUlU8L2E+CgkJCQkJCQkJCQkJPC9kaXY+ CgoJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCTwvdGQ+PHRkIGNsYXNzPSJ0ZDIiPgkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQkJCQoJCQkJCQkJ CQkJCTxkaXYgY2xhc3M9Im1lbnU1Ij4KCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8 YSBocmVmPSIvcnUvbWFpbi9pbmZvcm1hdGlvbl9tYXRlcmlhbHMvIiA+0JjQvdGE 0L7RgNC80LDRhtC40L7QvdC90YvQtSDQvNCw0YLQtdGA0LjQsNC70Ys8L2E+CgkJ CQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQkJCQoJCQkJCQkJCQkJCTxk aXYgY2xhc3M9Im1lbnU1Ij4KCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8YSBocmVm PSIvcnUvbWFpbi9zY2FsaW5nLyIgIGNsYXNzPSJzZWxfMnVyIj7QodC+0L7RgtCy 0LXRgtGB0YLQstC40LUg0L/QtdGA0LLQuNGH0L3Ri9GFINC4INGC0LXRgdGC0L7Q stGL0YUg0LHQsNC70LvQvtCyPC9hPgoJCQkJCQkJCQkJCTwvZGl2PgoKCQkJCQkJ CQkJCQkKCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQoJCQkJCQkJCQkJCQkJCQkJCQk8L3RkPgoJCQkJCQkJCQkKCQkJCQkJCQk8L3Ry PgoJCQkJCQkJCTwvdGFibGU+CgkJCQkJCQkJCQkJCQkJCQkKCQkJCQkJPC9kaXY+ CgoJCQkJCTwvZGl2PgoJCQkJPC90ZD4KCQkJCQkJCQkJCQkJCTx0ZD4KCQkJCQk8 ZGl2IGNsYXNzPSJtZW51X20gbWVudV9tXzIiPgoJCQkJCQk8YSBocmVmPSIvcnUv Y2xhc3Nlcy0xMS8iIGNsYXNzPSJtZW51MSI+0KPRh9Cw0YHRgtC90LjQutCw0Lwg 0JXQk9CtPC9hPgoKCQkJCQkJPGRpdiBjbGFzcz0ibWVudV92aWV3Ij4KCQkJCQkJ CQkKCQkJCQkJCQkJCQkJCQkJCTx0YWJsZSBjbGFzcz0ibWVudV92aWV3X3RibCI+ CgkJCQkJCQkJPHRyPgoJCQkJCQkJCQk8dGQgY2xhc3M9InRkMSI+CgkJCQkJCQkJ CQoJCQkJCQkJCQkJCTxkaXYgY2xhc3M9Im1lbnU1Ij4KCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQk8YSBocmVmPSIvcnUvY2xhc3Nlcy0xMS9yZXMvIiA+0J/RgNC+0LLQ tdGA0LjRgtGMINGA0LXQt9GD0LvRjNGC0LDRgtGLINCV0JPQrTwvYT4KCQkJCQkJ CQkJCQk8L2Rpdj4KCgkJCQkJCQkJCQkJCgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkKCQkJCQkJCQkJCgkJCQkJCQkJCQkJPGRpdiBj bGFzcz0ibWVudTUiPgoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCTxhIGhyZWY9Ii9y dS9jbGFzc2VzLTExL3NvY2hpbmVuaWUvIiA+0JjRgtC+0LPQvtCy0L7QtSDRgdC+ 0YfQuNC90LXQvdC40LUgKNC40LfQu9C+0LbQtdC90LjQtSk8L2E+CgkJCQkJCQkJ CQkJPC9kaXY+CgoJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQkJCQoJCQkJCQkJCQkJCTxkaXYgY2xh c3M9Im1lbnU1Ij4KCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8YSBocmVmPSIvcnUv Y2xhc3Nlcy0xMS9wcmVwYXJhdGlvbi8iID7Qn9C+0LTQs9C+0YLQvtCy0LrQsCDQ uiDQldCT0K08L2E+CgkJCQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJCQkJCQoJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQkJ CQoJCQkJCQkJCQkJCTxkaXYgY2xhc3M9Im1lbnU1Ij4KCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQk8YSBocmVmPSIvcnUvY2xhc3Nlcy0xMS9lbnRlcmluZy8iID7Qn9C+ 0YHRgtGD0L/Qu9C10L3QuNC1INCyINCy0YPQt9GLPC9hPgoJCQkJCQkJCQkJCTwv ZGl2PgoKCQkJCQkJCQkJCQkKCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQoJCQkJCQkJCQkKCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJt ZW51NSI+CgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJPGEgaHJlZj0iL3J1L2NsYXNz ZXMtMTEvb2x5bXBpY3MvIiA+0J7Qu9C40LzQv9C40LDQtNGLINC4INCV0JPQrTwv YT4KCQkJCQkJCQkJCQk8L2Rpdj4KCgkJCQkJCQkJCQkJCgkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKCQkJCQkJCQkJCgkJCQkJCQkJ CQkJPGRpdiBjbGFzcz0ibWVudTUiPgoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCTxh IGhyZWY9Ii9ydS9jbGFzc2VzLTExL3BhcnRpY2lwYW50LyIgPtCj0YfQsNGB0YLQ vdC40LrQuCDRgSDQntCS0JcsINC00LXRgtC4LdC40L3QstCw0LvQuNC00Ysg0Lgg 0LjQvdCy0LDQu9C40LTRizwvYT4KCQkJCQkJCQkJCQk8L2Rpdj4KCgkJCQkJCQkJ CQkJCgkJCQkJCQkJCQkJPC90ZD48dGQgY2xhc3M9InRkMiI+CQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkKCQkJCQkJCQkJCgkJCQkJCQkJCQkJPGRpdiBj bGFzcz0ibWVudTUiPgoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCTxhIGhyZWY9Ii9y dS9jbGFzc2VzLTExL2FwcGVsLyIgPtCQ0L/QtdC70LvRj9GG0LjRjzwvYT4KCQkJ CQkJCQkJCQk8L2Rpdj4KCgkJCQkJCQkJCQkJCgkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkKCQkJCQkJCQkJCgkJCQkJCQkJCQkJPGRp diBjbGFzcz0ibWVudTUiPgoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCTxhIGhyZWY9 Ii9ydS9jbGFzc2VzLTExL3BzeWNoLyIgPtCh0L7QstC10YLRiyDRg9GH0LDRgdGC 0L3QuNC60LDQvCDQldCT0K08L2E+CgkJCQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJ CQkJCQoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CgkJCQkJCQkJCQoJCQkJCQkJCQkJCTxkaXYgY2xhc3M9Im1lbnU1Ij4KCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQk8YSBocmVmPSIvcnUvY2xhc3Nlcy0xMS9RX2FuZF9B LyIgPtCS0L7Qv9GA0L7RgS3QvtGC0LLQtdGCPC9hPgoJCQkJCQkJCQkJCTwvZGl2 PgoKCQkJCQkJCQkJCQkKCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQoJCQkJCQkJCQkKCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJtZW51 NSI+CgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJPGEgaHJlZj0iL3J1L2NsYXNzZXMt MTEvYW5rZXRzLyIgPtCQ0L3QutC10YLQuNGA0L7QstCw0L3QuNC1PC9hPgoJCQkJ CQkJCQkJCTwvZGl2PgoKCQkJCQkJCQkJCQkKCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCQkJCQkJCQk8L3RkPgoJ CQkJCQkJCQkKCQkJCQkJCQk8L3RyPgoJCQkJCQkJCTwvdGFibGU+CgkJCQkJCQkJ CQkJCQkJCQkKCQkJCQkJPC9kaXY+CgoJCQkJCTwvZGl2PgoJCQkJPC90ZD4KCQkJ CQkJCQkJCQkJCTx0ZD4KCQkJCQk8ZGl2IGNsYXNzPSJtZW51X20gbWVudV9tXzMi PgoJCQkJCQk8YSBocmVmPSIvcnUvdG9fb3JnYW5pemVycy8iIGNsYXNzPSJtZW51 MSI+0J7RgNCz0LDQvdC40LfQsNGC0L7RgNCw0Lwg0JXQk9CtPC9hPgoKCQkJCQkJ PGRpdiBjbGFzcz0ibWVudV92aWV3Ij4KCQkJCQkJCQkKCQkJCQkJCQkJCQkJCQkJ CTx0YWJsZSBjbGFzcz0ibWVudV92aWV3X3RibCI+CgkJCQkJCQkJPHRyPgoJCQkJ CQkJCQk8dGQgY2xhc3M9InRkMSI+CgkJCQkJCQkJCQoJCQkJCQkJCQkJCTxkaXYg Y2xhc3M9Im1lbnU1Ij4KCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8YSBocmVmPSIv cnUvdG9fb3JnYW5pemVycy9lZHVjYXRpb25hbF9vcmdhbml6YXRpb25zLyIgPtCe 0LHRgNCw0LfQvtCy0LDRgtC10LvRjNC90YvQvCDQvtGA0LPQsNC90LjQt9Cw0YbQ uNGP0Lw8L2E+CgkJCQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJCQkJCQoJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQkJCQoJ CQkJCQkJCQkJCTxkaXYgY2xhc3M9Im1lbnU1Ij4KCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQk8YSBocmVmPSIvcnUvdG9fb3JnYW5pemVycy9vZmZpY2lhbHMvIiA+0KPR h9C10LHQvdGL0LUg0LzQsNGC0LXRgNC40LDQu9GLPC9hPgoJCQkJCQkJCQkJCTwv ZGl2PgoKCQkJCQkJCQkJCQkKCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQoJCQkJCQkJCQkKCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJt ZW51NSI+CgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJPGEgaHJlZj0iL3J1L3RvX29y Z2FuaXplcnMvZmluYWwvIiA+0JjRgtC+0LPQvtCy0L7QtSDRgdC+0YfQuNC90LXQ vdC40LUgKNC40LfQu9C+0LbQtdC90LjQtSk8L2E+CgkJCQkJCQkJCQkJPC9kaXY+ CgoJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCgkJCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CgkJCQkJCQkJCQoJCQkJ CQkJCTwvdHI+CgkJCQkJCQkJPC90YWJsZT4KCQkJCQkJCQkJCQkJCQkJCQoJCQkJ CQk8L2Rpdj4KCgkJCQkJPC9kaXY+CgkJCQk8L3RkPgoJCQkJCQkJCQkJCQkJPHRk PgoJCQkJCTxkaXYgY2xhc3M9Im1lbnVfbSBtZW51X21fNCI+CgkJCQkJCTxhIGhy ZWY9Ii9ydS9uZXdzLyIgY2xhc3M9Im1lbnUxIj7QndC+0LLQvtGB0YLQuDwvYT4K CgkJCQkJCTxkaXYgY2xhc3M9Im1lbnVfdmlldyI+CgkJCQkJCQkJCgkJCQkJCQkJ CQkJCQkJCQk8dGFibGUgY2xhc3M9Im1lbnVfdmlld190YmwiPgoJCQkJCQkJCTx0 cj4KCQkJCQkJCQkJPHRkIGNsYXNzPSJ0ZDEiPgoJCQkJCQkJCQkKCQkJCQkJCQkJ CQk8ZGl2IGNsYXNzPSJtZW51NSI+CgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJPGEg aHJlZj0iL3J1L25ld3MvTmV3cy8iID7QpNC10LTQtdGA0LDQu9GM0L3Ri9C1INC9 0L7QstC+0YHRgtC4PC9hPgoJCQkJCQkJCQkJCTwvZGl2PgoKCQkJCQkJCQkJCQkK CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQoJCQkJ CQkJCQkKCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJtZW51NSI+CgkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJPGEgaHJlZj0iL3J1L25ld3MvcmVnaW9uYWxfbmV3cy8iID7Q oNC10LPQuNC+0L3QsNC70YzQvdGL0LUg0L3QvtCy0L7RgdGC0Lg8L2E+CgkJCQkJ CQkJCQkJPC9kaXY+CgoJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CgkJ CQkJCQkJCQoJCQkJCQkJCTwvdHI+CgkJCQkJCQkJPC90YWJsZT4KCQkJCQkJCQkJ CQkJCQkJCQoJCQkJCQk8L2Rpdj4KCgkJCQkJPC9kaXY+CgkJCQk8L3RkPgoJCQkJ CQkJCQkJCQkJPHRkPgoJCQkJCTxkaXYgY2xhc3M9Im1lbnVfbSBtZW51X21fNSI+ CgkJCQkJCTxhIGhyZWY9Ii9ydS9jb250YWN0cy8iIGNsYXNzPSJtZW51MSI+0JrQ vtC90YLQsNC60YLRizwvYT4KCgkJCQkJCTxkaXYgY2xhc3M9Im1lbnVfdmlldyI+ CgkJCQkJCQkJCgkJCQkJCQkJCQkJCQkJCQk8dGFibGUgY2xhc3M9Im1lbnVfdmll d190YmwiPgoJCQkJCQkJCTx0cj4KCQkJCQkJCQkJPHRkIGNsYXNzPSJ0ZDEiPgoJ CQkJCQkJCQkKCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJtZW51NSI+CgkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJPGEgaHJlZj0iL3J1L2NvbnRhY3RzL2NvbnRhY3RfaW5m b3JtYXRpb24vIiA+0JrQvtC90YLQsNC60YLQvdCw0Y8g0LjQvdGE0L7RgNC80LDR htC40Y88L2E+CgkJCQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJCQkJCQoJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQkJCQoJ CQkJCQkJCQkJCTxkaXYgY2xhc3M9Im1lbnU1Ij4KCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQk8YSBocmVmPSIvcnUvY29udGFjdHMvbWVkaWEvIiA+0JTQu9GPINCh0JzQ mCA8L2E+CgkJCQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJCQkJCQoJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQkJCQoJCQkJ CQkJCQkJCTxkaXYgY2xhc3M9Im1lbnU1Ij4KCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQk8YSBocmVmPSIvcnUvY29udGFjdHMvcGhvbmUvIiA+0KLQtdC70LXRhNC+0L0g 0LTQvtCy0LXRgNC40Y8g0JXQk9CtPC9hPgoJCQkJCQkJCQkJCTwvZGl2PgoKCQkJ CQkJCQkJCQkKCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQoJCQkJCQkJCQkJCQkJCQkJCQk8L3RkPgoJCQkJCQkJCQkKCQkJCQkJCQk8 L3RyPgoJCQkJCQkJCTwvdGFibGU+CgkJCQkJCQkJCQkJCQkJCQkKCQkJCQkJPC9k aXY+CgoJCQkJCTwvZGl2PgoJCQkJPC90ZD4KCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJPC90cj4KCQk8L3RhYmxlPgoJ PC9kaXY+CjwvZGl2PiAgPGRpdiBjbGFzcz0ic3RhdHVzX21lbnUiPgoJCQk8YSBo cmVmPSIvIj7Qk9C70LDQstC90LDRjzwvYT4JCQk8YSAgaHJlZj0iL3J1L21haW4v Ij7QntCx0YnQsNGPINC40L3RhNC+0YDQvNCw0YbQuNGPINC+INCV0JPQrSA8L2E+ IAkJCTxzcGFuPtCh0L7QvtGC0LLQtdGC0YHRgtCy0LjQtSDQv9C10YDQstC40YfQ vdGL0YUg0Lgg0YLQtdGB0YLQvtCy0YvRhSDQsdCw0LvQu9C+0LI8L3NwYW4+CTwv ZGl2PiAgPHRhYmxlIGNsYXNzPSJzZWNvbmRfY29udF90YmwiPgogICAgPHRyPgog ICAgICA8dGQgY2xhc3M9InNlY29uZF9jb250X3RibF8xIj48ZGl2IGNsYXNzPSJt ZW51X2xlZnQiPgo8ZGl2IGNsYXNzPSJ2eWJyX3JhemRlbCI+PGEgaHJlZj0iL3J1 L21haW4vIj7QntCx0YnQsNGPINC40L3RhNC+0YDQvNCw0YbQuNGPINC+INCV0JPQ rSA8L2E+PC9kaXY+CgoJCgkJCQoJCQkJPHVsPgoJCQkJCgkJCQkJPGxpPgoJCQkJ CQkJCQkJPGEgaHJlZj0iL3J1L21haW4vbWFpbl9pdGVtLyI+0J7RgdC90L7QstC9 0YvQtSDRgdCy0LXQtNC10L3QuNGPINC+INCV0JPQrTwvYT4KCgkJCQkJCQkKCQkJ CQkJCQkJCQkJCQkKCgkJCQkKCQkJCQoJCQkJCTxsaT4KCQkJCQkJCQkJCTxhIGhy ZWY9Ii9ydS9tYWluL3NjaGVkdWxlLyI+0KDQsNGB0L/QuNGB0LDQvdC40LUg0JPQ mNCQIDIwMTg8L2E+CgoJCQkJCQkJCgkJCQkJCQkJCQkJCQkJCgoJCQkJCgkJCQkK CQkJCQk8bGk+CgkJCQkJCQkJCQk8YSBocmVmPSIvcnUvbWFpbi9icmllZi1nbG9z c2FyeS8iPtCh0LvQvtCy0LDRgNGMINCV0JPQrTwvYT4KCgkJCQkJCQkKCQkJCQkJ CQkJCQkJCQkKCgkJCQkKCQkJCQoJCQkJCTxsaT4KCQkJCQkJCQkJCTxhIGhyZWY9 Ii9ydS9tYWluL2xlZ2FsLWRvY3VtZW50cy8iPtCU0L7QutGD0LzQtdC90YLRizwv YT4KCgkJCQkJCQkKCQkJCQkJCQkJCQkJCQkKCgkJCQkKCQkJCQoJCQkJCTxsaT4K CQkJCQkJCQkJCTxhIGhyZWY9Ii9ydS9tYWluL3NpYy8iPtCh0JjQpiDQoNC+0YHQ vtCx0YDQvdCw0LTQt9C+0YDQsDwvYT4KCgkJCQkJCQkKCQkJCQkJCQkJCQkJCQkK CgkJCQkKCQkJCQoJCQkJCTxsaT4KCQkJCQkJCQkJCTxhIGhyZWY9Ii9ydS9tYWlu L3JlbGVhc2UvIj5TTU9UUklFR0UuUlU8L2E+CgoJCQkJCQkJCgkJCQkJCQkJCQkJ CQkJCgoJCQkJCgkJCQkKCQkJCQk8bGk+CgkJCQkJCQkJCQk8YSBocmVmPSIvcnUv bWFpbi9pbmZvcm1hdGlvbl9tYXRlcmlhbHMvIj7QmNC90YTQvtGA0LzQsNGG0LjQ vtC90L3Ri9C1INC80LDRgtC10YDQuNCw0LvRizwvYT4KCgkJCQkJCQkKCQkJCQkJ CQkJCQkJCQkKCgkJCQkKCQkJCQoJCQkJCTxsaSBjbGFzcz0iYWN0aXYiPgoJCQkJ CQkJCQkJPGEgY2xhc3M9InNlbF8yX3VyIiBocmVmPSIvcnUvbWFpbi9zY2FsaW5n LyI+0KHQvtC+0YLQstC10YLRgdGC0LLQuNC1INC/0LXRgNCy0LjRh9C90YvRhSDQ uCDRgtC10YHRgtC+0LLRi9GFINCx0LDQu9C70L7QsjwvYT4KCgkJCQkJCQkKCQkJ CQkJCQkJCQkJCQkKCgkJCQkKCQkJCQkJCQk8L3VsPgoJCQkJCQkKCgkKCjwvZGl2 Pgo8L3RkPgogICAgICA8dGQgY2xhc3M9InNlY29uZF9jb250X3RibF8yIj48ZGl2 IGNsYXNzPSJjb250ZW50Ij4gICAgICAgICAgIDxIMSBjbGFzcz0iaGVhZF90dGwi PtCh0L7QvtGC0LLQtdGC0YHRgtCy0LjQtSDQv9C10YDQstC40YfQvdGL0YUg0Lgg 0YLQtdGB0YLQvtCy0YvRhSDQsdCw0LvQu9C+0LI8L0gxPgogICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgPHNwYW4gaWQ9InJiY2NvbnRlbnRzX2VlX2Jsb2Nr LjEyMDYuQ09OVEVOVF9URVhULjQuNTcyIj48L3NwYW4+Cgo8cD48YSBocmVmPSJo dHRwOi8vd3d3LmVnZS5lZHUucnUvcnUvbWFpbi9sZWdhbC1kb2N1bWVudHMvcm9z b2JybmFkem9yL2luc3RydWN0aW9ucy9pbmRleC5waHA/aWRfND0yMzUzMyI+0JzQ tdGC0L7QtNC40LrQsCDQvtC/0YDQtdC00LXQu9C10L3QuNGPINC80LjQvdC40LzQ sNC70YzQvdC+0LPQviDQutC+0LvQuNGH0LXRgdGC0LLQsCDQsdCw0LvQu9C+0LIg 0LXQtNC40L3QvtCz0L4g0LPQvtGB0YPQtNCw0YDRgdGC0LLQtdC90L3QvtCz0L4g 0Y3QutC30LDQvNC10L3QsCwg0L/QvtC00YLQstC10YDQttC00LDRjtGJ0LXQs9C+ INC+0YHQstC+0LXQvdC40LUg0L7QsdGA0LDQt9C+0LLQsNGC0LXQu9GM0L3QvtC5 INC/0YDQvtCz0YDQsNC80LzRiyDRgdGA0LXQtNC90LXQs9C+INC+0LHRidC10LPQ viDQvtCx0YDQsNC30L7QstCw0L3QuNGPLCDQuCDQvNC40L3QuNC80LDQu9GM0L3Q vtCz0L4g0LrQvtC70LjRh9C10YHRgtCy0LAg0LHQsNC70LvQvtCyINC10LTQuNC9 0L7Qs9C+INCz0L7RgdGD0LTQsNGA0YHRgtCy0LXQvdC90L7Qs9C+INGN0LrQt9Cw 0LzQtdC90LAsINC90LXQvtCx0YXQvtC00LjQvNC+0LPQviDQtNC70Y8g0L/QvtGB 0YLRg9C/0LvQtdC90LjRjyDQsiDQvtCx0YDQsNC30L7QstCw0YLQtdC70YzQvdGL 0LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDQstGL0YHRiNC10LPQviDQvtCx0YDQ sNC30L7QstCw0L3QuNGPINC90LAg0L7QsdGD0YfQtdC90LjQtSDQv9C+INC/0YDQ vtCz0YDQsNC80LzQsNC8INCx0LDQutCw0LvQsNCy0YDQuNCw0YLQsCDQuCDQv9GA 0L7Qs9GA0LDQvNC80LDQvCDRgdC/0LXRhtC40LDQu9C40YLQtdGC0LA8L2E+PC9w Pg0KDQo8cD48YSBocmVmPSIvY29tbW9uL3VwbG9hZC9kb2NzLzkyMC0xMF9SYXNw b3J5YXpoZW5pZV9vX3ZuZXNlbmlpX2l6bWVuZW5peS5wZGYiPtCeINCy0L3QtdGB 0LXQvdC40Lgg0LjQt9C80LXQvdC10L3QuNC5INCyINC/0YDQuNC70L7QttC10L3Q uNC1IDIg0Log0LzQtdGC0L7QtNC40LrQtSDQvtC/0YDQtdC00LXQu9C10L3QuNGP INC80LjQvdC40LzQsNC70YzQvdC+0LPQviDQutC+0LvQuNGH0LXRgdGC0LLQsCDQ sdCw0LvQu9C+0LIg0LXQtNC40L3QvtCz0L4g0LPQvtGB0YPQtNCw0YDRgdGC0LLQ tdC90L3QvtCz0L4g0Y3QutC30LDQvNC10L3QsCwg0L/QvtC00YLQstC10YDQttC0 0LDRjtGJ0LXQs9C+INC+0YHQstC+0LXQvdC40LUg0L7QsdGA0LDQt9C+0LLQsNGC 0LXQu9GM0L3QvtC5INC/0YDQvtCz0YDQsNC80LzRiyDRgdGA0LXQtNC90LXQs9C+ INC+0LHRidC10LPQviDQvtCx0YDQsNC30L7QstCw0L3QuNGPLCDQuCDQvNC40L3Q uNC80LDQu9GM0L3QvtCz0L4g0LrQvtC70LjRh9C10YHRgtCy0LAg0LHQsNC70LvQ vtCyINC10LTQuNC90L7Qs9C+INCz0L7RgdGD0LTQsNGA0YHRgtCy0LXQvdC90L7Q s9C+INGN0LrQt9Cw0LzQtdC90LAsINC90LXQvtCx0YXQvtC00LjQvNC+0LPQviDQ tNC70Y8g0L/QvtGB0YLRg9C/0LvQtdC90LjRjyDQsiDQvtCx0YDQsNC30L7QstCw 0YLQtdC70YzQvdGL0LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDQstGL0YHRiNC1 0LPQviDQvtCx0YDQsNC30L7QstCw0L3QuNGPINC90LAg0L7QsdGD0YfQtdC90LjQ tSDQv9C+INC/0YDQvtCz0YDQsNC80LzQsNC8INCx0LDQutCw0LvQsNCy0YDQuNCw 0YLQsCDQuCDQv9GA0L7Qs9GA0LDQvNC80LDQvCDRgdC/0LXRhtC40LDQu9C40YLQ tdGC0LAsINGD0YLQstC10YDQttC00LXQvdC90L7QuSDRgNCw0YHQv9C+0YDRj9C2 0LXQvdC40LXQvCDQpNC10LTQtdGA0LDQu9GM0L3QvtC5INGB0LvRg9C20LHRiyDQ v9C+INC90LDQtNC30L7RgNGDINCyINGB0YTQtdGA0LUg0L7QsdGA0LDQt9C+0LLQ sNC90LjRjyDQuCDQvdCw0YPQutC4INC+0YIgMzAuMTIuMjAxNiDihJYgMzQyMi0x MDwvYT48L3A+DQoNCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij48Yj7Q odC+0L7RgtCy0LXRgtGB0YLQstC40LUg0LzQtdC20LTRgyDQvNC40L3QuNC80LDQ u9GM0L3Ri9C80Lgg0L/QtdGA0LLQuNGH0L3Ri9C80Lgg0LHQsNC70LvQsNC80Lgg 0Lgg0LzQuNC90LjQvNCw0LvRjNC90YvQvNC4INGC0LXRgdGC0L7QstGL0LzQuCDQ sdCw0LvQu9Cw0LzQuCDQv9C+INGB0YLQvtCx0LDQu9C70YzQvdC+0Lkg0YHQuNGB 0YLQtdC80LUg0L7RhtC10L3QuNCy0LDQvdC40Y8sINC/0L7QtNGC0LLQtdGA0LbQ tNCw0Y7RidC40LzQuCDQvtGB0LLQvtC10L3QuNC1INC+0LHRgNCw0LfQvtCy0LDR gtC10LvRjNC90L7QuSDQv9GA0L7Qs9GA0LDQvNC80Ysg0YHRgNC10LTQvdC10LPQ viDQvtCx0YnQtdCz0L4g0L7QsdGA0LDQt9C+0LLQsNC90LjRjyDQv9C+INC+0LHR j9C30LDRgtC10LvRjNC90YvQvCDRg9GH0LXQsdC90YvQvCDQv9GA0LXQtNC80LXR gtCw0Lw8L2I+PC9wPg0KPGRpdiBjbGFzcz0idGFibGVfYmxvY2siPg0KPHRhYmxl IGNsYXNzPSJ0YWJsZSIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPg0KIDx0 Ym9keT48dHI+DQogICAgPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij7Q n9GA0LXQtNC80LXRgjwvdGg+DQogICAgPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBj ZW50ZXI7Ij7QnNC40L3QuNC80LDQu9GM0L3Ri9C5INC/0LXRgNCy0LjRh9C90YvQ uSDQsdCw0LvQuyA8L3RoPg0KICAgIDx0aCBzdHlsZT0idGV4dC1hbGlnbjogY2Vu dGVyOyI+0JzQuNC90LjQvNCw0LvRjNC90YvQuSDRgtC10YHRgtC+0LLRi9C5INCx 0LDQu9C7ICA8L3RoPg0KICAgICA8L3RyPg0KIDx0cj4NCiAgICA8dGQgc3R5bGU9 InRleHQtYWxpZ246IGNlbnRlcjsiPtCg0YPRgdGB0LrQuNC5INGP0LfRi9C6PC90 ZD4NCiAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPjEwPC90ZD4N CiAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPjI0PC90ZD4NCiAg ICA8L3RyPg0KPHRyPg0KICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVy OyI+0JzQsNGC0LXQvNCw0YLQuNC60LAg0L/RgNC+0YTQuNC70YzQvdC+0LPQviDR g9GA0L7QstC90Y88L3RkPg0KICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjogY2Vu dGVyOyI+NjwvdGQ+DQogICAgPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7 Ij4yNzwvdGQ+DQogICAgIDwvdHI+DQo8L3Rib2R5PjwvdGFibGU+DQo8L2Rpdj4N Cg0KPHAgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPjxiPtCh0L7QvtGC0LLQ tdGC0YHRgtCy0LjQtSDQvNC10LbQtNGDINC80LjQvdC40LzQsNC70YzQvdGL0LzQ uCDQv9C10YDQstC40YfQvdGL0LzQuCDQsdCw0LvQu9Cw0LzQuCANCtC4INC80LjQ vdC40LzQsNC70YzQvdGL0LzQuCDRgtC10YHRgtC+0LLRi9C80Lgg0LHQsNC70LvQ sNC80Lgg0L/QviDRg9GH0LXQsdC90YvQvCDQv9GA0LXQtNC80LXRgtCw0Lwg0L/Q viDRgdGC0L7QsdCw0LvQu9GM0L3QvtC5INGB0LjRgdGC0LXQvNC1INC+0YbQtdC9 0LjQstCw0L3QuNGPLCDQv9C+0LTRgtCy0LXRgNC20LTQsNGO0YnQuNC80Lgg0L7R gdCy0L7QtdC90LjQtSDQvtCx0YDQsNC30L7QstCw0YLQtdC70YzQvdC+0Lkg0L/R gNC+0LPRgNCw0LzQvNGLINGB0YDQtdC00L3QtdCz0L4g0L7QsdGJ0LXQs9C+INC+ 0LHRgNCw0LfQvtCy0LDQvdC40Y8g0L/QviDQstGB0LXQvCDQvtCx0YnQtdC+0LHR gNCw0LfQvtCy0LDRgtC10LvRjNC90YvQvCDQv9GA0LXQtNC80LXRgtCw0LwsIA0K 0Lgg0L3QtdC+0LHRhdC+0LTQuNC80L7QtSDQtNC70Y8g0L/QvtGB0YLRg9C/0LvQ tdC90LjRjyDQsiDQvtCx0YDQsNC30L7QstCw0YLQtdC70YzQvdGL0LUg0L7RgNCz 0LDQvdC40LfQsNGG0LjQuCDQstGL0YHRiNC10LPQviDQvtCx0YDQsNC30L7QstCw 0L3QuNGPINC90LAg0L7QsdGD0YfQtdC90LjQtSDQv9C+INC/0YDQvtCz0YDQsNC8 0LzQsNC8INCx0LDQutCw0LvQsNCy0YDQuNCw0YLQsCDQuCDQv9GA0L7Qs9GA0LDQ vNC80LDQvCDRgdC/0LXRhtC40LDQu9C40YLQtdGC0LANCjwvYj48L3A+DQo8ZGl2 IGNsYXNzPSJ0YWJsZV9ibG9jayI+DQo8dGFibGUgY2xhc3M9InRhYmxlIiBzdHls ZT0idGV4dC1hbGlnbjogY2VudGVyOyI+DQogPHRib2R5Pjx0cj4NCiAgICA8dGgg c3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPtCf0YDQtdC00LzQtdGCPC90aD4N CiAgICA8dGggc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPtCc0LjQvdC40LzQ sNC70YzQvdGL0Lkg0L/QtdGA0LLQuNGH0L3Ri9C5INCx0LDQu9C7IDwvdGg+DQog ICAgPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij7QnNC40L3QuNC80LDQ u9GM0L3Ri9C5INGC0LXRgdGC0L7QstGL0Lkg0LHQsNC70LsgIDwvdGg+DQogICAg ICA8L3RyPg0KIDx0cj4NCiAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRl cjsiPtCg0YPRgdGB0LrQuNC5INGP0LfRi9C6PC90ZD4NCiAgICA8dGQgc3R5bGU9 InRleHQtYWxpZ246IGNlbnRlcjsiPjE2PC90ZD4NCiAgICA8dGQgc3R5bGU9InRl eHQtYWxpZ246IGNlbnRlcjsiPjM2PC90ZD4NCiAgICAgPC90cj4NCjx0cj4NCiAg ICA8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPtCc0LDRgtC10LzQsNGC 0LjQutCwINC/0YDQvtGE0LjQu9GM0L3QvtCz0L4g0YPRgNC+0LLQvdGPPC90ZD4N CiAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPjY8L3RkPg0KICAg IDx0ZCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+Mjc8L3RkPg0KICAgICA8 L3RyPg0KPHRyPg0KICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+ 0J7QsdGJ0LXRgdGC0LLQvtC30L3QsNC90LjQtTwvdGQ+DQogICAgPHRkIHN0eWxl PSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4xOSA8L3RkPg0KICAgIDx0ZCBzdHlsZT0i dGV4dC1hbGlnbjogY2VudGVyOyI+NDI8L3RkPg0KICAgICAgPC90cj4NCjx0cj4N CiAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPtCY0YHRgtC+0YDQ uNGPPC90ZD4NCiAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPjk8 L3RkPg0KICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+MzI8L3Rk Pg0KICAgICAgPC90cj4NCjx0cj4NCiAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246 IGNlbnRlcjsiPtCk0LjQt9C40LrQsDwvdGQ+DQogICAgPHRkIHN0eWxlPSJ0ZXh0 LWFsaWduOiBjZW50ZXI7Ij45PC90ZD4NCiAgICA8dGQgc3R5bGU9InRleHQtYWxp Z246IGNlbnRlcjsiPjM2PC90ZD4NCiAgICA8L3RyPg0KPHRyPg0KICAgIDx0ZCBz dHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+0KXQuNC80LjRjzwvdGQ+DQogICAg PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4xMzwvdGQ+DQogICAgPHRk IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4zNjwvdGQ+DQogICAgICA8L3Ry Pg0KPHRyPg0KICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+0JHQ uNC+0LvQvtCz0LjRjzwvdGQ+DQogICAgPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBj ZW50ZXI7Ij4xNjwvdGQ+DQogICAgPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50 ZXI7Ij4zNjwvdGQ+DQogIDwvdHI+DQo8dHI+DQogICAgPHRkIHN0eWxlPSJ0ZXh0 LWFsaWduOiBjZW50ZXI7Ij7Qk9C10L7Qs9GA0LDRhNC40Y88L3RkPg0KICAgIDx0 ZCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+MTE8L3RkPg0KICAgIDx0ZCBz dHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+Mzc8L3RkPg0KICAgICAgPC90cj4N Cjx0cj4NCiAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPtCY0L3R hNC+0YDQvNCw0YLQuNC60LAg0Lgg0JjQmtCiPC90ZD4NCiAgICA8dGQgc3R5bGU9 InRleHQtYWxpZ246IGNlbnRlcjsiPjY8L3RkPg0KICAgIDx0ZCBzdHlsZT0idGV4 dC1hbGlnbjogY2VudGVyOyI+NDA8L3RkPg0KICAgPC90cj4NCjx0cj4NCiAgICA8 dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPtCY0L3QvtGB0YLRgNCw0L3Q vdGL0LUg0Y/Qt9GL0LrQuDwvdGQ+DQogICAgPHRkIHN0eWxlPSJ0ZXh0LWFsaWdu OiBjZW50ZXI7Ij4yMjwvdGQ+DQogICAgPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBj ZW50ZXI7Ij4yMjwvdGQ+DQogIDwvdHI+DQo8dHI+DQogICAgPHRkIHN0eWxlPSJ0 ZXh0LWFsaWduOiBjZW50ZXI7Ij7Qm9C40YLQtdGA0LDRgtGD0YDQsDwvdGQ+DQog ICAgPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij44PC90ZD4NCiAgICA8 dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPjMyPC90ZD4NCiAgIDwvdHI+ DQo8L3Rib2R5PjwvdGFibGU+DQo8L2Rpdj4NCg0KDQo8cD48Yj48YSBocmVmPSIv Y29tbW9uL3VwbG9hZC9kb2NzL1ByaWxvemhlbmllX05fMi5kb2MiPtCh0L7QvtGC 0LLQtdGC0YHRgtCy0LjQtSDQvNC10LbQtNGDINC/0LXRgNCy0LjRh9C90YvQvNC4 INCx0LDQu9C70LDQvNC4INC4INGC0LXRgdGC0L7QstGL0LzQuCDQsdCw0LvQu9Cw 0LzQuCDQv9C+INCy0YHQtdC8INGD0YfQtdCx0L3Ri9C8INC/0YDQtdC00LzQtdGC 0LDQvCANCtC/0L4g0YHRgtC+0LHQsNC70LvRjNC90L7QuSDRgdC40YHRgtC10LzQ tSDQvtGG0LXQvdC40LLQsNC90LjRjzwvYT4NCjwvYj48L3A+DQo8YnI+DQo8IS0t PHAgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPjxiPtCh0L7QvtGC0LLQtdGC 0YHRgtCy0LjQtSDQvNC10LbQtNGDINCx0LDQu9C70LDQvNC4INCV0JPQrSDQv9C+ INC80LDRgtC10LzQsNGC0LjQutC1INCx0LDQt9C+0LLQvtCz0L4g0YPRgNC+0LLQ vdGPIA0K0Lgg0L7RgtC80LXRgtC60LDQvNC4INC/0L4g0L/Rj9GC0LjQsdCw0LvQ u9GM0L3QvtC5INGB0LjRgdGC0LXQvNC1INC+0YbQtdC90LjQstCw0L3QuNGPPC9i PjwvcD4NCjxkaXYgY2xhc3M9InRhYmxlX2Jsb2NrIj4NCjx0YWJsZSBjbGFzcz0i dGFibGUiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4NCjx0Ym9keT48dHI+ DQogICAgPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij7QntGC0LzQtdGC 0LrQsCDQv9C+INC/0Y/RgtC40LHQsNC70LvRjNC90L7QuSDRiNC60LDQu9C1PC90 aD4NCiAgICA8dGggc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPsKrMsK7ICjQ vdC10YPQtNC+0LLQu9C10YLQstC+0YDQuNGCLikgPC90aD4NCiAgICA8dGggc3R5 bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPsKrM8K7ICjRg9C00L7QstC70LXRgtCy 0L7RgNC40YIuKSA8L3RoPg0KPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7 Ij7CqzTCuyAo0YXQvtGA0L7RiNC+KTwvdGg+DQo8dGggc3R5bGU9InRleHQtYWxp Z246IGNlbnRlcjsiPsKrNcK7ICjQvtGC0LvQuNGH0L3Qvik8L3RoPg0KICA8L3Ry Pg0KPHRyPg0KICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+0J/Q tdGA0LLQuNGH0L3Ri9C5INCx0LDQu9C7PC90ZD4NCiAgICA8dGQgc3R5bGU9InRl eHQtYWxpZ246IGNlbnRlcjsiPjAtNjwvdGQ+DQogICAgPHRkIHN0eWxlPSJ0ZXh0 LWFsaWduOiBjZW50ZXI7Ij43LTExPC90ZD4NCjx0ZCBzdHlsZT0idGV4dC1hbGln bjogY2VudGVyOyI+MTItMTY8L3RkPg0KPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBj ZW50ZXI7Ij4xNy0yMDwvdGQ+DQogIDwvdHI+DQo8L3Rib2R5PjwvdGFibGU+DQo8 L2Rpdj4NCtCd0LAg0L7RgdC90L7QstCw0L3QuNC4INC/0YPQvdC60YLQvtCyIDE1 LCAxOSDQoNCw0YHQv9C+0YDRj9C20LXQvdC40Y8g0KTQtdC00LXRgNCw0LvRjNC9 0L7QuSDRgdC70YPQttCx0Ysg0L/QviDQvdCw0LTQt9C+0YDRgyDQsiDRgdGE0LXR gNC1INC+0LHRgNCw0LfQvtCy0LDQvdC40Y8g0Lgg0L3QsNGD0LrQuCDQvtGCIDMw LjEyLjIwMTYg4oSWIDM0MjItMTAgwqvQntCxINGD0YLQstC10YDQttC00LXQvdC4 0Lgg0LzQtdGC0L7QtNC40LrQuCDQvtC/0YDQtdC00LXQu9C10L3QuNGPINC80LjQ vdC40LzQsNC70YzQvdC+0LPQviDQutC+0LvQuNGH0LXRgdGC0LLQsCDQsdCw0LvQ u9C+0LIg0LXQtNC40L3QvtCz0L4g0LPQvtGB0YPQtNCw0YDRgdGC0LLQtdC90L3Q vtCz0L4g0Y3QutC30LDQvNC10L3QsCwg0L/QvtC00YLQstC10YDQttC00LDRjtGJ 0LXQs9C+INC+0YHQstC+0LXQvdC40LUg0L7QsdGA0LDQt9C+0LLQsNGC0LXQu9GM 0L3QvtC5INC/0YDQvtCz0YDQsNC80LzRiyDRgdGA0LXQtNC90LXQs9C+INC+0LHR idC10LPQviDQvtCx0YDQsNC30L7QstCw0L3QuNGPLCDQuCDQvNC40L3QuNC80LDQ u9GM0L3QvtCz0L4g0LrQvtC70LjRh9C10YHRgtCy0LAg0LHQsNC70LvQvtCyINC1 0LTQuNC90L7Qs9C+INCz0L7RgdGD0LTQsNGA0YHRgtCy0LXQvdC90L7Qs9C+INGN 0LrQt9Cw0LzQtdC90LAsINC90LXQvtCx0YXQvtC00LjQvNC+0LPQviDQtNC70Y8g 0L/QvtGB0YLRg9C/0LvQtdC90LjRjyDQsiDQvtCx0YDQsNC30L7QstCw0YLQtdC7 0YzQvdGL0LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDQstGL0YHRiNC10LPQviDQ vtCx0YDQsNC30L7QstCw0L3QuNGPINC90LAg0L7QsdGD0YfQtdC90LjQtSDQv9C+ INC/0YDQvtCz0YDQsNC80LzQsNC8INCx0LDQutCw0LvQsNCy0YDQuNCw0YLQsCDQ uCDQv9GA0L7Qs9GA0LDQvNC80LDQvCDRgdC/0LXRhtC40LDQu9C40YLQtdGC0LDC uywg0L/RgNC+0YLQvtC60L7Qu9CwINGB0L7QstC10YnQsNC90LjRjyDQmtC+0LzQ uNGB0YHQuNC4INC/0L4g0YPRgdGC0LDQvdC+0LLQu9C10L3QuNGOINGB0L7QvtGC 0LLQtdGC0YHRgtCy0LjRjyDQvNC10LbQtNGDINC80LjQvdC40LzQsNC70YzQvdGL 0LzQuCDQv9C10YDQstC40YfQvdGL0LzQuCDQsdCw0LvQu9Cw0LzQuCDQtdC00LjQ vdC+0LPQviDQs9C+0YHRg9C00LDRgNGB0YLQstC10L3QvdC+0LPQviDRjdC60LfQ sNC80LXQvdCwINC4INC80LjQvdC40LzQsNC70YzQvdGL0LzQuCDRgtC10YHRgtC+ 0LLRi9C80Lgg0LHQsNC70LvQsNC80Lgg0L/QviDQutCw0LbQtNC+0LzRgyDRg9GH 0LXQsdC90L7QvNGDINC/0YDQtdC00LzQtdGC0YMg0L/RgNC4INC+0L/RgNC10LTQ tdC70LXQvdC40Lgg0LzQuNC90LjQvNCw0LvRjNC90L7Qs9C+INC60L7Qu9C40YfQ tdGB0YLQstCwINCx0LDQu9C70L7QsiDQtdC00LjQvdC+0LPQviDQs9C+0YHRg9C0 0LDRgNGB0YLQstC10L3QvdC+0LPQviDRjdC60LfQsNC80LXQvdCwLCDQv9C+0LTR gtCy0LXRgNC20LTQsNGO0YnQtdCz0L4g0L7RgdCy0L7QtdC90LjQtSDQvtCx0YDQ sNC30L7QstCw0YLQtdC70YzQvdC+0Lkg0L/RgNC+0LPRgNCw0LzQvNGLINGB0YDQ tdC00L3QtdCz0L4g0L7QsdGJ0LXQs9C+INC+0LHRgNCw0LfQvtCy0LDQvdC40Y8s INC4INC80LjQvdC40LzQsNC70YzQvdC+0LPQviDQutC+0LvQuNGH0LXRgdGC0LLQ sCDQsdCw0LvQu9C+0LIg0LXQtNC40L3QvtCz0L4g0LPQvtGB0YPQtNCw0YDRgdGC 0LLQtdC90L3QvtCz0L4g0Y3QutC30LDQvNC10L3QsCDQvdC10L7QsdGF0L7QtNC4 0LzQvtCz0L4g0LTQu9GPINC/0L7RgdGC0YPQv9C70LXQvdC40Y8g0LIg0L7QsdGA 0LDQt9C+0LLQsNGC0LXQu9GM0L3Ri9C1INC+0YDQs9Cw0L3QuNC30LDRhtC40Lgg 0LLRi9GB0YjQtdCz0L4g0L7QsdGA0LDQt9C+0LLQsNC90LjRjyDQvdCwINC+0LHR g9GH0LXQvdC40LUg0L/QviDQv9GA0L7Qs9GA0LDQvNC80LDQvCDQsdCw0LrQsNC7 0LDQstGA0LjQsNGC0LAg0Lgg0L/RgNC+0LPRgNCw0LzQvNCw0Lwg0YHQv9C10YbQ uNCw0LvQuNGC0LXRgtCwINCyIDIwMTcg0LPQvtC00YMg0L7RgiAwNi4wNC4yMDE3 IOKEliAxMC00L9C/0YAg0YPRgdGC0LDQvdC+0LLQu9C10L3Qvjo8YnI+PGJyPjx1 bD48bGk+0YHQvtC+0YLQstC10YLRgdGC0LLQuNC1INC/0LXRgNCy0LjRh9C90YvR hSDQsdCw0LvQu9C+0LIg0LXQtNC40L3QvtCz0L4g0LPQvtGB0YPQtNCw0YDRgdGC 0LLQtdC90L3QvtCz0L4g0Y3QutC30LDQvNC10L3QsCDQuCDRgtC10YHRgtC+0LLR i9GFINCx0LDQu9C70L7QsiDQv9C+INC40YHRgtC+0YDQuNC4INCyIDIwMTcg0LPQ vtC00YMg0YHQvtCz0LvQsNGB0L3QviANCjxhIGhyZWYgPSIvY29tbW9uL3VwbG9h ZC9uZXdzL1ByaWxvemhlbmllXzFfa19wcm90b2tvbHVfb3RfMDYuMDQuMjAxNy5k b2N4Ij7Qv9GA0LjQu9C+0LbQtdC90LjRjiAxPC9hPjs8L2xpPjxsaT7RgdC+0L7R gtCy0LXRgtGB0YLQstC40LUg0LzQtdC20LTRgyAxMyDQv9C10YDQstC40YfQvdGL 0LzQuCDQsdCw0LvQu9Cw0LzQuCDQuCAzNiDRgtC10YHRgtC+0LLRi9C80Lgg0LHQ sNC70LvQsNC80LgsINC90LXQvtCx0YXQvtC00LjQvNGL0LzQuCDQtNC70Y8g0L/Q vtGB0YLRg9C/0LvQtdC90LjRjyDQsiDQvtCx0YDQsNC30L7QstCw0YLQtdC70YzQ vdGL0LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDQstGL0YHRiNC10LPQviDQvtCx 0YDQsNC30L7QstCw0L3QuNGPINC90LAg0L7QsdGD0YfQtdC90LjQtSDQv9C+INC/ 0YDQvtCz0YDQsNC80LzQsNC8INCx0LDQutCw0LvQsNCy0YDQuNCw0YLQsCDQuCDQ v9GA0L7Qs9GA0LDQvNC80LDQvCDRgdC/0LXRhtC40LDQu9C40YLQtdGC0LAsINC/ 0L4g0YXQuNC80LjQuDs8L2xpPjxsaT7RgdC+0L7RgtCy0LXRgtGB0YLQstC40LUg 0L/QtdGA0LLQuNGH0L3Ri9GFINCx0LDQu9C70L7QsiDQtdC00LjQvdC+0LPQviDQ s9C+0YHRg9C00LDRgNGB0YLQstC10L3QvdC+0LPQviDRjdC60LfQsNC80LXQvdCw INC4INGC0LXRgdGC0L7QstGL0YUg0LHQsNC70LvQvtCyINC/0L4g0YXQuNC80LjQ uCDQsiAyMDE3INCz0L7QtNGDINGB0L7Qs9C70LDRgdC90L4gDQo8YSBocmVmID0i L2NvbW1vbi91cGxvYWQvbmV3cy9Qcmlsb3poZW5pZV8yX2tfcHJvdG9rb2x1X290 XzA2LjA0LjIwMTcuZG9jeCI+0L/RgNC40LvQvtC20LXQvdC40Y4gMjwvYT4uPC9s aT48L3VsPg0K0J3QsCDQvtGB0L3QvtCy0LDQvdC40Lgg0L/Rg9C90LrRgtC+0LIg MTUsIDE5INCg0LDRgdC/0L7RgNGP0LbQtdC90LjRjyDQpNC10LTQtdGA0LDQu9GM 0L3QvtC5INGB0LvRg9C20LHRiyDQv9C+INC90LDQtNC30L7RgNGDINCyINGB0YTQ tdGA0LUg0L7QsdGA0LDQt9C+0LLQsNC90LjRjyDQuCDQvdCw0YPQutC4INC+0YIg MzAuMTIuMjAxNiDihJYgMzQyMi0xMCDCq9Ce0LEg0YPRgtCy0LXRgNC20LTQtdC9 0LjQuCDQvNC10YLQvtC00LjQutC4INC+0L/RgNC10LTQtdC70LXQvdC40Y8g0LzQ uNC90LjQvNCw0LvRjNC90L7Qs9C+INC60L7Qu9C40YfQtdGB0YLQstCwINCx0LDQ u9C70L7QsiDQtdC00LjQvdC+0LPQviDQs9C+0YHRg9C00LDRgNGB0YLQstC10L3Q vdC+0LPQviDRjdC60LfQsNC80LXQvdCwLCDQv9C+0LTRgtCy0LXRgNC20LTQsNGO 0YnQtdCz0L4g0L7RgdCy0L7QtdC90LjQtSDQvtCx0YDQsNC30L7QstCw0YLQtdC7 0YzQvdC+0Lkg0L/RgNC+0LPRgNCw0LzQvNGLINGB0YDQtdC00L3QtdCz0L4g0L7Q sdGJ0LXQs9C+INC+0LHRgNCw0LfQvtCy0LDQvdC40Y8sINC4INC80LjQvdC40LzQ sNC70YzQvdC+0LPQviDQutC+0LvQuNGH0LXRgdGC0LLQsCDQsdCw0LvQu9C+0LIg 0LXQtNC40L3QvtCz0L4g0LPQvtGB0YPQtNCw0YDRgdGC0LLQtdC90L3QvtCz0L4g 0Y3QutC30LDQvNC10L3QsCwg0L3QtdC+0LHRhdC+0LTQuNC80L7Qs9C+INC00LvR jyDQv9C+0YHRgtGD0L/Qu9C10L3QuNGPINCyINC+0LHRgNCw0LfQvtCy0LDRgtC1 0LvRjNC90YvQtSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4INCy0YvRgdGI0LXQs9C+ INC+0LHRgNCw0LfQvtCy0LDQvdC40Y8g0L3QsCDQvtCx0YPRh9C10L3QuNC1INC/ 0L4g0L/RgNC+0LPRgNCw0LzQvNCw0Lwg0LHQsNC60LDQu9Cw0LLRgNC40LDRgtCw INC4INC/0YDQvtCz0YDQsNC80LzQsNC8INGB0L/QtdGG0LjQsNC70LjRgtC10YLQ sMK7LCDQv9GA0L7RgtC+0LrQvtC70LAg0YHQvtCy0LXRidCw0L3QuNGPINCa0L7Q vNC40YHRgdC40Lgg0L/QviDRg9GB0YLQsNC90L7QstC70LXQvdC40Y4g0YHQvtC+ 0YLQstC10YLRgdGC0LLQuNGPINC80LXQttC00YMg0LzQuNC90LjQvNCw0LvRjNC9 0YvQvNC4INC/0LXRgNCy0LjRh9C90YvQvNC4INCx0LDQu9C70LDQvNC4INC10LTQ uNC90L7Qs9C+INCz0L7RgdGD0LTQsNGA0YHRgtCy0LXQvdC90L7Qs9C+INGN0LrQ t9Cw0LzQtdC90LAg0Lgg0LzQuNC90LjQvNCw0LvRjNC90YvQvNC4INGC0LXRgdGC 0L7QstGL0LzQuCDQsdCw0LvQu9Cw0LzQuCDQv9C+INC60LDQttC00L7QvNGDINGD 0YfQtdCx0L3QvtC80YMg0L/RgNC10LTQvNC10YLRgyDQv9GA0Lgg0L7Qv9GA0LXQ tNC10LvQtdC90LjQuCDQvNC40L3QuNC80LDQu9GM0L3QvtCz0L4g0LrQvtC70LjR h9C10YHRgtCy0LAg0LHQsNC70LvQvtCyINC10LTQuNC90L7Qs9C+INCz0L7RgdGD 0LTQsNGA0YHRgtCy0LXQvdC90L7Qs9C+INGN0LrQt9Cw0LzQtdC90LAsINC/0L7Q tNGC0LLQtdGA0LbQtNCw0Y7RidC10LPQviDQvtGB0LLQvtC10L3QuNC1INC+0LHR gNCw0LfQvtCy0LDRgtC10LvRjNC90L7QuSDQv9GA0L7Qs9GA0LDQvNC80Ysg0YHR gNC10LTQvdC10LPQviDQvtCx0YnQtdCz0L4g0L7QsdGA0LDQt9C+0LLQsNC90LjR jywg0Lgg0LzQuNC90LjQvNCw0LvRjNC90L7Qs9C+INC60L7Qu9C40YfQtdGB0YLQ stCwINCx0LDQu9C70L7QsiDQtdC00LjQvdC+0LPQviDQs9C+0YHRg9C00LDRgNGB 0YLQstC10L3QvdC+0LPQviDRjdC60LfQsNC80LXQvdCwINC90LXQvtCx0YXQvtC0 0LjQvNC+0LPQviDQtNC70Y8g0L/QvtGB0YLRg9C/0LvQtdC90LjRjyDQsiDQvtCx 0YDQsNC30L7QstCw0YLQtdC70YzQvdGL0LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQ uCDQstGL0YHRiNC10LPQviDQvtCx0YDQsNC30L7QstCw0L3QuNGPINC90LAg0L7Q sdGD0YfQtdC90LjQtSDQv9C+INC/0YDQvtCz0YDQsNC80LzQsNC8INCx0LDQutCw 0LvQsNCy0YDQuNCw0YLQsCDQuCDQv9GA0L7Qs9GA0LDQvNC80LDQvCDRgdC/0LXR htC40LDQu9C40YLQtdGC0LAg0LIgMjAxNyDQs9C+0LTRgyDQvtGCIDEzLjA0LjIw MTcg4oSWIDAyLTEzL9C/0YAg0YPRgdGC0LDQvdC+0LLQu9C10L3Qvjo8YnI+PGJy Pjx1bD48bGk+DQrRgdC+0L7RgtCy0LXRgtGB0YLQstC40LUg0LzQtdC20LTRgyAx NiDQv9C10YDQstC40YfQvdGL0LzQuCDQsdCw0LvQu9Cw0LzQuCDQuCAzNiDRgtC1 0YHRgtC+0LLRi9C80Lgg0LHQsNC70LvQsNC80LgsINC90LXQvtCx0YXQvtC00LjQ vNGL0LzQuCDQtNC70Y8g0L/QvtGB0YLRg9C/0LvQtdC90LjRjyDQsiDQvtCx0YDQ sNC30L7QstCw0YLQtdC70YzQvdGL0LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDQ stGL0YHRiNC10LPQviDQvtCx0YDQsNC30L7QstCw0L3QuNGPINC90LAg0L7QsdGD 0YfQtdC90LjQtSDQv9C+INC/0YDQvtCz0YDQsNC80LzQsNC8INCx0LDQutCw0LvQ sNCy0YDQuNCw0YLQsCDQuCDQv9GA0L7Qs9GA0LDQvNC80LDQvCDRgdC/0LXRhtC4 0LDQu9C40YLQtdGC0LAsINC/0L4g0LHQuNC+0LvQvtCz0LjQuDs8L2xpPjxsaT4N CtGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQtSDQv9C10YDQstC40YfQvdGL0YUg0LHQ sNC70LvQvtCyINC10LTQuNC90L7Qs9C+INCz0L7RgdGD0LTQsNGA0YHRgtCy0LXQ vdC90L7Qs9C+INGN0LrQt9Cw0LzQtdC90LAg0Lgg0YLQtdGB0YLQvtCy0YvRhSDQ sdCw0LvQu9C+0LIg0L/QviDQsdC40L7Qu9C+0LPQuNC4INCyIDIwMTcg0LPQvtC0 0YMg0YHQvtCz0LvQsNGB0L3QviA8YSBocmVmID0iL2NvbW1vbi91cGxvYWQvbmV3 cy9Qcmlsb3poZW5pZV8xX2tfcHJvdG9rb2x1X290XzEzLjA0LjIwMTcuZG9jeCI+ 0L/RgNC40LvQvtC20LXQvdC40Y4gMTwvYT47PC9saT48bGk+DQrRgdC+0L7RgtCy 0LXRgtGB0YLQstC40LUg0LzQtdC20LTRgyA5INC/0LXRgNCy0LjRh9C90YvQvNC4 INCx0LDQu9C70LDQvNC4INC4IDM2INGC0LXRgdGC0L7QstGL0LzQuCDQsdCw0LvQ u9Cw0LzQuCwg0L3QtdC+0LHRhdC+0LTQuNC80YvQvNC4INC00LvRjyDQv9C+0YHR gtGD0L/Qu9C10L3QuNGPINCyINC+0LHRgNCw0LfQvtCy0LDRgtC10LvRjNC90YvQ tSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4INCy0YvRgdGI0LXQs9C+INC+0LHRgNCw 0LfQvtCy0LDQvdC40Y8g0L3QsCDQvtCx0YPRh9C10L3QuNC1INC/0L4g0L/RgNC+ 0LPRgNCw0LzQvNCw0Lwg0LHQsNC60LDQu9Cw0LLRgNC40LDRgtCwINC4INC/0YDQ vtCz0YDQsNC80LzQsNC8INGB0L/QtdGG0LjQsNC70LjRgtC10YLQsCwg0L/QviDR hNC40LfQuNC60LU7PC9saT48bGk+DQrRgdC+0L7RgtCy0LXRgtGB0YLQstC40LUg 0L/QtdGA0LLQuNGH0L3Ri9GFINCx0LDQu9C70L7QsiDQtdC00LjQvdC+0LPQviDQ s9C+0YHRg9C00LDRgNGB0YLQstC10L3QvdC+0LPQviDRjdC60LfQsNC80LXQvdCw INC4INGC0LXRgdGC0L7QstGL0YUg0LHQsNC70LvQvtCyINC/0L4g0YTQuNC30LjQ utC1INCyIDIwMTcg0LPQvtC00YMg0YHQvtCz0LvQsNGB0L3QviA8YSBocmVmID0i L2NvbW1vbi91cGxvYWQvbmV3cy9Qcmlsb3poZW5pZV8yX2tfcHJvdG9rb2x1X290 XzEzLjA0LjIwMTcuZG9jeCI+0L/RgNC40LvQvtC20LXQvdC40Y4gMjwvYT4uPC9s aT48L3VsPi0tPg0KDQoNCg0KCiA8L2Rpdj48L3RkPgogICAgPC90cj4KICA8L3Rh YmxlPgogIDxzcGFuIGlkPSJyYmNjb250ZW50c19lZV9ibG9jay4xNjg3LkNPTlRF TlRfVEVYVC4xNy45NTQiPjwvc3Bhbj4KCjx0YWJsZSBjbGFzcz0ibWFpbl9sbmtf dGJsIj4NCiAgPHRyPg0KICAgIDx0ZCBjbGFzcz0idGQwIj4mbmJzcDs8L3RkPg0K ICAgIDx0ZCBjbGFzcz0idGQxIj48YSBocmVmPSJodHRwOi8vd3d3Lm9icm5hZHpv ci5nb3YucnUvIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImljX3N0X3MxIj48c3Bh bj7QoNCe0KHQntCR0KDQndCQ0JTQl9Ce0KA8L3NwYW4+DQrQpNC10LTQtdGA0LDQ u9GM0L3QsNGPINGB0LvRg9C20LHQsCDQv9C+INC90LDQtNC30L7RgNGDDQrQsiDR gdGE0LXRgNC1INC+0LHRgNCw0LfQvtCy0LDQvdC40Y8g0Lgg0L3QsNGD0LrQuDwv YT48L3RkPg0KICAgIDx0ZCBjbGFzcz0idGRfciI+Jm5ic3A7PC90ZD4NCiAgICA8 dGQgY2xhc3M9InRkMSI+PGEgaHJlZj0iaHR0cDovL2ZpcGkucnUvIiAgdGFyZ2V0 PSJfYmxhbmsiIGNsYXNzPSJpY19zdF9zMiI+PHNwYW4+0KTQmNCf0Jg8L3NwYW4+ DQrQpNC10LTQtdGA0LDQu9GM0L3Ri9C5INC40L3RgdGC0LjRgtGD0YINCtC/0LXQ tNCw0LPQvtCz0LjRh9C10YHQutC40YUg0LjQt9C80LXRgNC10L3QuNC5PC9hPjwv dGQ+DQogICAgPHRkIGNsYXNzPSJ0ZF9yIj4mbmJzcDs8L3RkPg0KICAgIDx0ZCBj bGFzcz0idGQxIj48YSBocmVmPSJodHRwOi8vd3d3LnJ1c3Rlc3QucnUvIiB0YXJn ZXQ9Il9ibGFuayIgY2xhc3M9ImljX3N0X3MzIj48c3Bhbj7QpNCm0KI8L3NwYW4+ DQrQpNC10LTQtdGA0LDQu9GM0L3Ri9C5INGG0LXQvdGC0YANCtGC0LXRgdGC0LjR gNC+0LLQsNC90LjRjzwvYT48L3RkPg0KICAgIDx0ZCBjbGFzcz0idGRfciI+Jm5i c3A7PC90ZD4NCiAgICA8dGQgY2xhc3M9InRkMSI+PGEgaHJlZj0iaHR0cDovL21v bi5nb3YucnUvIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImljX3N0X3M0Ij48c3Bh bj7QnNC40L3QvtCx0YDQvdCw0YPQutC4PC9zcGFuPg0K0JzQuNC90LjRgdGC0LXR gNGB0YLQstC+INC+0LHRgNCw0LfQvtCy0LDQvdC40Y8NCtC4INC90LDRg9C60Lgg 0KDQpDwvYT48L3RkPg0KICAgIDx0ZCBjbGFzcz0idGRfciI+Jm5ic3A7PC90ZD4N CiAgICA8dGQgY2xhc3M9InRkMSI+PGEgaHJlZj0iaHR0cDovL3d3dy5lZHUucnUv IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImljX3N0X3M1Ij48c3Bhbj7QoNC+0YHR gdC40LnRgdC60L7QtSDQvtCx0YDQsNC30L7QstCw0L3QuNC1PC9zcGFuPg0K0KTQ tdC00LXRgNCw0LvRjNC90YvQuSDQv9C+0YDRgtCw0Ls8L2E+PC90ZD4NCiAgIDx0 ZCBjbGFzcz0idGQwIj4mbmJzcDs8L3RkPg0KDQoNCiAgPC90cj4NCjwvdGFibGU+ DQoKICA8ZGl2IGNsYXNzPSJjb250X2JvdHRvbSI+PC9kaXY+CjwvZGl2PgoKPGRp diBpZD0iZm9vdGVyIj4gPHNwYW4gaWQ9InJiY2NvbnRlbnRzX2VlX2Jsb2NrLjE1 MDQuQ09OVEVOVF9URVhULjc1Ljg2NSI+PC9zcGFuPgoKPGRpdiBjbGFzcz0iZm90 X2xpbmUiPjwvZGl2Pg0KDQoNCjxhIGNsYXNzPSJuZXdfc3Rfa24yIiBocmVmPSIv cnUvZmVlZGJhY2svIj7QntCx0YDQsNGC0L3QsNGPINGB0LLRj9C30Yw8L2E+DQo8 ZGl2IGNsYXNzPSJkaXYxIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+ DQo8IS0t0KHQu9GD0LbQsdCwINC/0L7QtNC00LXRgNC20LrQuDogZS1tYWlsIC0g c2l0ZXNfc3VwcG9ydEBvYnJuYWR6b3IuZ292LnJ1LCDRgtC10LsuIDxhIGhyZWY9 InRlbDorNy00OTUtMTA0LTc1LTI1Ij4rNy00OTUtMTA0LTc1LTI1PC9hPjxicj4N CtCT0YDQsNGE0LjQuiDRgNCw0LHQvtGC0Ysg0YHQu9GD0LbQsdGLINC/0L7QtNC0 0LXRgNC20LrQuDog0YEgMDg6MDAg0LTQviAxOTowMCDQsiDRgNCw0LHQvtGH0LjQ tSDQtNC90Lgg0L/QviDQvNC+0YHQutC+0LLRgdC60L7QvNGDINCy0YDQtdC80LXQ vdC4PGJyPi0tPg0K0KLQtdC70LXRhNC+0L0g0LTQvtCy0LXRgNC40Y8g0JXQk9Ct OiA8YSBocmVmPSJ0ZWw6KzctNDk1LTEwNC02OC0zOCI+KzctNDk1LTEwNC02OC0z ODwvYT48YnI+DQrCqSAyMDAxLTIwMTcg0KTQtdC00LXRgNCw0LvRjNC90LDRjyDR gdC70YPQttCx0LAg0L/QviDQvdCw0LTQt9C+0YDRgyDQsiDRgdGE0LXRgNC1INC+ 0LHRgNCw0LfQvtCy0LDQvdC40Y8g0Lgg0L3QsNGD0LrQuDxicj4NCiAg0J/RgNC4 INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC4INC80LDRgtC10YDQuNCw0LvQvtCy INC/0L7RgNGC0LDQu9CwINCV0JPQrSDQvdCwINCy0L3QtdGI0L3QuNGFINCY0L3R gtC10YDQvdC10YIt0YDQtdGB0YPRgNGB0LDRhSANCiAg0YHRgdGL0LvQutCwINC9 0LAgPGEgaHJlZj0iaHR0cDovL3d3dy5lZ2UuZWR1LnJ1LyI+0L/QtdGA0LLQvtC4 0YHRgtC+0YfQvdC40Lo8L2E+INC+0LHRj9C30LDRgtC10LvRjNC90LA8L3NwYW4+ PGJyPjxicj48YnI+PGJyPg0KPC9kaXY+DQoNCg0KPGRpdiBjbGFzcz0icmFtYmxl cl90b3AiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4NCg0KPCEtLSBiZWdpbiBvZiBU b3AxMDAgY29kZSAtLT4NCg0KPHNjcmlwdCBpZD0idG9wMTAwQ291bnRlciIgdHlw ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9jb3VudGVyLnJhbWJsZXIu cnUvdG9wMTAwLmpjbj8yNjc5MzExIj48L3NjcmlwdD4NCjxub3NjcmlwdD4NCjxh IGhyZWY9Imh0dHA6Ly90b3AxMDAucmFtYmxlci5ydS9uYXZpLzI2NzkzMTEvIj4N CjxpbWcgc3JjPSJodHRwOi8vY291bnRlci5yYW1ibGVyLnJ1L3RvcDEwMC5jbnQ/ MjY3OTMxMSIgYWx0PSJSYW1ibGVyJ3MgVG9wMTAwIiBib3JkZXI9IjAiIC8+DQo8 L2E+DQoNCjwvbm9zY3JpcHQ+DQo8IS0tIGVuZCBvZiBUb3AxMDAgY29kZSAtLT4N CjwvZGl2Pg0KDQoNCg0KICA8ZGl2IGNsYXNzPSJkaXZfcmlnaHQiPg0KICA8L2Rp dj4NCg0KDQo8IS0tIFlhbmRleC5NZXRyaWthIGNvdW50ZXIgLS0+DQo8ZGl2IHN0 eWxlPSJkaXNwbGF5Om5vbmU7Ij48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw dCI+DQooZnVuY3Rpb24odywgYykgew0KICAgICh3W2NdID0gd1tjXSB8fCBbXSku cHVzaChmdW5jdGlvbigpIHsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgIHcu eWFDb3VudGVyMTIyNDI1MzAgPSBuZXcgWWEuTWV0cmlrYSh7aWQ6MTIyNDI1MzAs IGVuYWJsZUFsbDogdHJ1ZSwgd2Vidmlzb3I6dHJ1ZX0pOw0KICAgICAgICB9DQog ICAgICAgIGNhdGNoKGUpIHsgfQ0KICAgIH0pOw0KfSkod2luZG93LCAieWFuZGV4 X21ldHJpa2FfY2FsbGJhY2tzIik7DQo8L3NjcmlwdD48L2Rpdj4NCjxzY3JpcHQg c3JjPSIvL21jLnlhbmRleC5ydS9tZXRyaWthL3dhdGNoLmpzIiB0eXBlPSJ0ZXh0 L2phdmFzY3JpcHQiIGRlZmVyPSJkZWZlciI+PC9zY3JpcHQ+DQo8bm9zY3JpcHQ+ PGRpdj48aW1nIHNyYz0iLy9tYy55YW5kZXgucnUvd2F0Y2gvMTIyNDI1MzAiIHN0 eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDotOTk5OXB4OyIgYWx0PSIiIC8+ PC9kaXY+PC9ub3NjcmlwdD4NCjwhLS0gL1lhbmRleC5NZXRyaWthIGNvdW50ZXIg LS0+DQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCg0KICB2YXIg X2dhcSA9IF9nYXEgfHwgW107DQogIF9nYXEucHVzaChbJ19zZXRBY2NvdW50Jywg J1VBLTI4ODQyMDE1LTEnXSk7DQogIF9nYXEucHVzaChbJ190cmFja1BhZ2V2aWV3 J10pOw0KDQogIChmdW5jdGlvbigpIHsNCiAgICB2YXIgZ2EgPSBkb2N1bWVudC5j cmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgZ2EudHlwZSA9ICd0ZXh0L2phdmFzY3Jp cHQnOyBnYS5hc3luYyA9IHRydWU7DQogICAgZ2Euc3JjID0gKCdodHRwczonID09 IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sID8gJ2h0dHBzOi8vc3NsJyA6ICdo dHRwOi8vd3d3JykgKyAnLmdvb2dsZS1hbmFseXRpY3MuY29tL2dhLmpzJzsNCiAg ICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQn KVswXTsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnYSwgcyk7DQogIH0pKCk7 DQoNCjwvc2NyaXB0Pg0KDQoKPC9kaXY+CjwvYm9keT4KPC9odG1sPgo= ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=favicon_ege.gif Content-Type: image/gif; name=favicon_ege.gif Content-Location: http://ege.edu.ru/common/img/ege_new/favicon_ege.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAPeSAAB7zQBesgBvugRzvP8FANnq9e/2+wBmtrza7fD3+6/S6q7S 6iyFxgB0yytjoSpjov4GCQFwui6Cv/YaH/cZHQBfs/X6/Pb6/a7S6eny+P8AAq92 kP8LAwCD2wR90prF5BRPldQmNQBltQCB1v8QECKDxA1yvv8UFqLL5tW6xyyExJjF 4jJjoecdJpoiQtmir/gnK0CWzQBcsQBwudOUoi1gnb3Z7c8+Tlmazj+Qytpuev4B BPgZH0GRyrTV68tdbr/c7sbf8FeazgB0vNLS4AByvN6nscyuvXOx2gBUrYi938Zt gAB8zgBwuMjh8Mnh8AB3xejy+TqSysqRoQB3xPUaH/wAAKGMqSaGxTmRyrva7e31 +segstvr9QV0vb7b7f7+/7vZ7QB8z9eAjPQwNLjX7M+CkFmn3PD6/s5sep/K5fcL EM3k8vAAANvd6O3q7wBasAB2xLrY7PD3+gBjvfQaIL7b7tK9yo/C4dgqOABtud47 R/gAABd4vvIYHmOm1QBZsABTrUWVzXCcxwRasABktL0qPNYSIb3a7Y7L7NZLWv8C ABJUmgBKqYK63gBsyP8AAP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4z LWMwMDcgMS4xNDQxMDksIDIwMTEvMDkvMjAtMTg6MDk6MTAgICAgICAgICI+IDxy ZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1y ZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHht bG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1w TU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVm PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYj IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKDEzLjAyMDEx MTAxMi5tLjI1OCAyMDExLzEwLzEyOjIxOjAwOjAwKSAgKFdpbmRvd3MpIiB4bXBN TTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjI5MzQwNERBNEM2NTExRTM5RkY1RTE3MUM5 OEI2QjE1IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjI5MzQwNERCNEM2NTEx RTM5RkY1RTE3MUM5OEI2QjE1Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmlu c3RhbmNlSUQ9InhtcC5paWQ6MjkzNDA0RDg0QzY1MTFFMzlGRjVFMTcxQzk4QjZC MTUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MjkzNDA0RDk0QzY1MTFFMzlG RjVFMTcxQzk4QjZCMTUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4g PC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx 8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LB wL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KR kI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh YF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIx MC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIB AAAh+QQBAACSACwAAAAAEAAQAAAI2AAlCRxIsCDBBVoKJPgjBM2bNFwKsjEQaUuJ QHQkwIDE5w7BLpFCeoHTgBEBDpCMCFQQ5gsGFB8cqWCQaIOLJURSHJETqYASQIRy 4FkhyEOHK2Qg7SkT0kKEAwcGDCgUh8qhRTsUqQmZQECSIQL0NBkBIAQJSDeeILgA JkiPCkVmMGFhyM+aMW4EIgoZqY8IKCZaEIDwgyACvjFkiKlxoo6GKQSd8JUSAIAD ClWsmCEIhG+Wyg8m8GjzgqABOyGxNHoEAhKkPHMKRvFhAwmOM4N00MhgsLfBgAA7 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: text/css Content-Location: http://ege.edu.ru/common/css/spec.css Content-Transfer-Encoding: 8bit /*================= кнопка "Задать вопрос" ===========================*/ .button_yel{ background: #ffffff; /* Old browsers */ background: -moz-linear-gradient(top, #ffffff 30%, #d3d3d2 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(30%,#ffffff), color-stop(100%,#d3d3d2)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #ffffff 30%,#d3d3d2 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #ffffff 30%,#d3d3d2 100%); /* Opera 11.10+ */ background: -ms-linear-gradient(top, #ffffff 30%,#d3d3d2 100%); /* IE10+ */ background: linear-gradient(top, #ffffff 30%,#d3d3d2 100%); /* W3C */ -pie-background: linear-gradient(#ffffff, #d3d3d2); behavior: url(/common/PIE/PIE.htc); -webkit-border-radius: 12px; -moz-border-radius: 12px; border-radius: 12px; border: 8px solid #f8c525; text-align: center; margin: 5px auto; text-align: center; width: 130px; cursor:pointer; } .inp5 {background:none; border:0; padding: 4px 3px 6px; font:bold 13px arial; color:#646464; text-shadow: 0 1px 0 #FFFFFF;cursor:pointer;} /*================= /кнопка "Задать вопрос" ===========================*/ .likes td{vertical-align:top} .likes .fb_but{padding-right:30px} ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/jpeg Content-Location: http://ege.edu.ru/common/img/img_2013/back_main.jpg Content-Transfer-Encoding: Base64 /9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/ 4QNUaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49 Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRh IHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29y ZSA1LjMtYzAwNyAxLjE0NDEwOSwgMjAxMS8wOS8yMC0xODowOToxMCAgICAgICAg Ij4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAy LzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9 IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxu czp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6 c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJj ZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMu MDIwMTExMDEyLm0uMjU4IDIwMTEvMTAvMTI6MjE6MDA6MDApICAoV2luZG93cyki IHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0ZGRjYzN0Y0ODRCMTFFMzgyN0Y4 OTYzM0M3QTYyOUQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0ZGRjYzODA0 ODRCMTFFMzgyN0Y4OTYzM0M3QTYyOUQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RS ZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3RkZGNjM3RDQ4NEIxMUUzODI3Rjg5NjMz QzdBNjI5RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3RkZGNjM3RTQ4NEIx MUUzODI3Rjg5NjMzQzdBNjI5RCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6 UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9iZQBk wAAAAAH/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQECAgICAgICAgICAgMDAwMDAwMDAwMBAQEBAQEBAgEBAgICAQICAwMDAwMD AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//AABEI CtIAAQMBEQACEQEDEQH/xABdAAEBAQEBAAAAAAAAAAAAAAAAAQIDCgEBAQEBAQEA AAAAAAAAAAAAAAECAwUGEAEAAwEBAQAAAAAAAAAAAAAAARESUWGhEQEBAQEBAAAA AAAAAAAAAAAAEQESIf/aAAwDAQACEQMRAD8A9qL7V44AAAAACWsZ61nUdWak1zab AAAAAAAARi6CApcZVzAAY1PixqYyrQAAAAACWsZ6RWQAAEuOwE1zabAAAAZacwAA EYugipcdgJrm02AXCpcZVgAAAAAABybbuMq5gAAAAAAM2eM9OWp8SLMRVAAAAAS4 EuMqwAxqetTG5iKoAACCXGVYAAZ1HqxZrLTSOagM2RnpFZAAATUdWaTWGmwGFcwA AAAE1HVmrNcrbh1qDIz0qMgAACWsZ6ctT1qYTEVQAAAEtYnWIMM6jqzVmsNNgAAM 2xE6xBgABybdAAEtYz0gyAAA56nrUxqYiqzcqxdBAAEc1AY141F5c2mboAAAACXC pcc9efWonLCqAAAAlrGekTrEY14ka5YVQAAEuVYuoqAM68WNcsK0AKlxlWAAAGde LF5c2braWRnpFZAAAAZ159WLy5NpdBAAAAALjnqPWoxNYaaEuKjAAAlkTrGVYTUd Was1hpoAABLIz0yrIBcdgWa5ttgAM2lxi6yygAADGp61MbmIqs2sY61BAAAAGdR6 sWa523DrUGQAABi6qIJaxnrHLU9amExFUAAAAC4y05gOdz2Wm5iAAAAlrGekVlGe sUZHPU9WY3MRQABlWLoqAAAM6j0jU1hpoBlXO6KAAAAAM6j1F51ysi9IrIAAAAAA DFx2Fc5rm22AAAAAAAzcqxdQQBybbAGOtUQAAQLjKuYAAADk22AAAAlkZ61FZAAA AAAY1PjUbmMqoADKuYCOd0AAAAAAAAAcm3RLIz0isgAAAP/Z ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/jpeg Content-Location: http://ege.edu.ru/common/img/img_2013/ico_socseti_gia.jpg Content-Transfer-Encoding: Base64 /9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/ 4QNUaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49 Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRh IHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29y ZSA1LjMtYzAwNyAxLjE0NDEwOSwgMjAxMS8wOS8yMC0xODowOToxMCAgICAgICAg Ij4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAy LzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9 IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxu czp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6 c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJj ZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMu MDIwMTExMDEyLm0uMjU4IDIwMTEvMTAvMTI6MjE6MDA6MDApICAoV2luZG93cyki IHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzZFRURGMEY0Q0Y0MTFFM0E3RDZD MzkyNUIzODQ5NDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzZFRURGMTA0 Q0Y0MTFFM0E3RDZDMzkyNUIzODQ5NDkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RS ZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDNkVFREYwRDRDRjQxMUUzQTdENkMzOTI1 QjM4NDk0OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDNkVFREYwRTRDRjQx MUUzQTdENkMzOTI1QjM4NDk0OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6 UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9iZQBk wAAAAAH/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQECAgICAgICAgICAgMDAwMDAwMDAwMBAQEBAQEBAgEBAgICAQICAwMDAwMD AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//AABEI AcsAEAMBEQACEQEDEQH/xACPAAEAAgMBAQAAAAAAAAAAAAAACAoFBwkGCwEBAAMB AQAAAAAAAAAAAAAAAAECAwQFEAAABgIBAgUCBQMFAAAAAAACAwQFBgcAAQgTCRIU FRYXESEiIyYYClEkeDe3OLgZEQACAgEDAQQIBwAAAAAAAAAAARECAyExEkFRcYEy YaGx0eFCEwTwkcFygjMU/9oADAMBAAIRAxEAPwCUf8nCx+QdbyziQ417YNnQSvFT ZYRoj4TJnqLNBtitTnG1CRUtWR5zRKVD+jZFARI/MB15cvqiTC+o1Phy+0VWrSlJ OVtNQWU+HB1kKOJXGVTcSx9cLXVUJUqqx1ko0H3KfNVUFYz5IKQC0Yds1706mG6V GDFsww/QhD+g9i1nLeOb47SzWuyneCvj3K+C3eQ7h0jRsLyn4vwajYHOHGUVdBGO eOXq5Z5Za5qZJJMpItiCxxdpQBjWGAMAm2jbixHD8Cbxa0ZvpxZMGJTryaMrVvbs g7S8DTO4ehh79GO4C30k5yNjLZgwqyKielJjhME4wLC3oudxv0ZpZG54RmFEGEqm wtMlUgOGDaUoRXUOwyfSmccx6TSvL5ifWZlhgDAGAMAYAwBgDAGAMAYAwBgDAGAQ PrzmpPLVgEHtCBcCuYD9BbIh8ZnsLfPc/Bdr9ZicwZUUhjjt6Y881W54bvUWdxJO 6CtOQpJ8fgNLAPQg60eNJw7Vld/uKq06w/V7ySFE3G23zXKexGyJTCB/rC0YE8Q2 e6ifuyNyynrRmVQTZpdjIJLJ1D1XlZhBV2iD253XJlCbpmhM/HsIaWrxcb/HUlOV Jp/t6/8AATg7/h/xo/2XhWWy/wBlv3P2kV8q7hwd/wBF5r/mB3Cv+/fJfGTzfxr7 EK7eL9pWSZf493LBsjK1jV1V2ynZwUM9NtgX1VbnObStStrKUq5BM5C5/VqNVpni +GpSBnk4GRQxt6VASATGmaFWxKBdf+mkzN+vRfjQy+m/R6yyr27eOMy4l8QavoOf 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 zI//2Q== ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/gif Content-Location: http://ege.edu.ru/common/img/img_2013/ico_vagn_ssylk_gr.gif Content-Transfer-Encoding: Base64 R0lGODlhRAFUA+Z/AJianerq63ez293s9oS73vX19kiZzvv7+9PU1TONyX233OHh 4srh8cHc7pPD4qLL5qmrraKkpuXl5lii0/z8/Al2vQBxu0SXzbvZ7d3d3p2foe31 +rK0trm6vGyt2NjZ2vX5/KrQ6LbW7Pr8/ubx+MPExq3R6TqRyqSmqeHu9xyBw/Hx 8bGytMvMzhZ9wZeZnAx3vsnKy2aq1qusryuJx/j4+fLy88bHyZ+ho6Gjpenz+Z7J 5SGDxCWGxWmr1xF6wPb6/TWPybW2uL/AwsHCxM/k8hl/wq2usVGf0QFyu7LU6sDB wyKExLy9v9bX2E2c0AZ1vdPm8/P4/KjP6PD3+8fIyqaoq5jG5OLj5MTFx97f4Nfp 9La4upSWmdvc3XCv2c3Oz4i935udoJWXmv7+/vz9/QNzvNfY2Q95v/3+/trb3K+x s/f7/bDT6vf4+GGn1RR8wMrLzNDR0iiHxrO1t0eZzrCxs+Pk5d/g4bfX7PPz8+7u 77XW647A4c3O0P///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4z LWMwMDcgMS4xNDQxMDksIDIwMTEvMDkvMjAtMTg6MDk6MTAgICAgICAgICI+IDxy ZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1y ZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHht bG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1w TU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVm PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYj IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKDEzLjAyMDEx MTAxMi5tLjI1OCAyMDExLzEwLzEyOjIxOjAwOjAwKSAgKFdpbmRvd3MpIiB4bXBN TTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjc0ODhBNzE1NTVDNDExRTM5RUJFODZBQkNG RDAzRTIwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjc0ODhBNzE2NTVDNDEx RTM5RUJFODZBQkNGRDAzRTIwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmlu c3RhbmNlSUQ9InhtcC5paWQ6NzQ4OEE3MTM1NUM0MTFFMzlFQkU4NkFCQ0ZEMDNF MjAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzQ4OEE3MTQ1NUM0MTFFMzlF QkU4NkFCQ0ZEMDNFMjAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4g PC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx 8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LB wL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KR kI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh YF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIx MC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIB AAAh+QQBAAB/ACwAAAAARAFUAwAH/4B/goOEgwUSGRkSBYWNjo+QkZKTlJWWl5iZ mpucnZ6bOg0mJg06nhRyR2NdAABdY0dyFJ+0tba3uLm6u7dsfSdmFjAwFmYnDmya XjliS1gHggdYS2I5GbzY2drb3N21ISo/PhgggiAYPj8qJpdkN2NZbo9uJWNVZN75 +vv8/ZppApJ82fBow5ckAtJUKgHgmqQMALL4m0ixokVsX2Cwk2SiwhdKH8ZoqaRl jJqLKFOqXOnoQRIlldokmSKphoY4l2JoqMGyp8+f3qjAUXBJgQsqkWLggGbpAI4Y QKNKnfpJgQogl0AYIQoph59MYHJQHUu27CMVYTKF4QEpQJc9mf/2dAlgtq7dqEUs bMm0xUKUR07EbBLj5K7hwyh3/NiEZoejOy+6yMkkp8sLCYgza86HoUKSPpn6JKnQ gFCZFhqEZAGAzxKZF1mEaGhRZrPt27dGEHDx5EuF2pbKeHziggDwDmJwtJDQhWml A10ktMAhpgPu69g1TfhhhEADC+UsgbDQgIARNBP+3BkTAMLy5pegS4cQYAzm7Pjz O8JghkEC7+BlRR4BCTCQRANccPGHe8w5R4l8LUDwhxAK6mehfkgg8cd/34VXyXjl JfDHE0hEMBmD8DUVXYR/yBHBhTBmx4QDGwLoISUgEvhHHz28cA2KDk4CoYQZvBDj kbdBwQ7/hwGKN6CIHeWAwILvBSnJkH8gIBaSXCKmwhU1dihgiH84wAMLQ1DZYHwr StgEB13GedcFb4TZ5IdP/vFGHV68oAeQbM5ng49yFlrWFBWkwOSNk+SYQApKljGD FRFUGWgLEaAwQ2uGdhpVGUHQwISNYxLAxBwn1FYAFwCU0CdwlZQxRgYMccGTp7gC pQMSMHwRghkjXDKCGSZ4AAMSSA3iRBddNJFJE8wWluu0QO2QhAV1YvKGBUk41sge dGmSww3UlvvTFgxswoMAuLgxBhbmxqvZBmZgkEkBK+RrJRE5wCrvvz7pMMDAjP7h AQ/BXjIEs8wCsMAgegwxxsMAV8yS/wwWZCxMHoOkIEMSfGCyQhdq5LsCchFEkEMX KMBr8csoDWDBFANvsR0TTKhgwRz2YlIDAHQMITQKRyBgdAD+wqy0PxvA8IQMUPdw whVUM5C0JRI00cHWJciz9NcXNTDB2BMMBPbZaKet9tpst+3223DHLffcdNdt9914 56333nz37fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnlmGeu+eacd+75 56CHLvropJdu+umop6766qy37vrrsMcu++y012777bjnrvvuvPfu++/ABy/88MQX b/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334Icv/v/45Jdv/vnop6/+ +uy37/778Mcv//z012///fjnr//+/Pfv//8ADKAAB0jAAhrwgAhMoAIXyMAGOvCB EIygBCdIwQpa8IIYzKAGN8jBDnrwgyAMoQhHSMISmvCEKEyhClfIwha68IUwjKEM Z0jDGtrwhjjMoQ53yMMe+vCHQAyiEIdIxMGVAQtEmIEGxCAGDcyACFi4mgBHgAEP BMEFP/iBC4LgAQwk7BIFIIIYXmCHGJzBC144QwzW8AIxEIERAySBD9Bghgso4AEh CMEDFHABM6DBA6agBAViAAAUnOFWjajBGSIAgBjM4n9sUAAMevCAZDViAw/oAQwU kIxIFED/iQiQYiHKgAAnwpF/JLjiFb4IiRE4AA4nIEFbcAABPVzCBhDAQbj0VwQj POoSilJBERxRABzQwUpCogMOTnk/EhjhCQVr1BOMIEtCHAACM3hkJg4wAwggM34g SEAQOpkJIAQhATeqggZsyQkbaAAq9zNKCjqRAhdw5Q+D+kAkyHCEI0jCCX6yXwoq 8IBIpOEEJ5DEDhIliCFYgVOOIAOzINoIMlghTfWTAQ1EKYgyZEwhkCgDDWTwBwoA 4AyTSMQkPgCAb7KPDTAoKEc2EokHVEAKC3iB1z5xAACcZH4iMANBaAECGExhCWug RAGYCQkOYFR+PrgAJUhQTUkYQAYz/8DJJFpBiRjMgH5BuGckKlABSijgBBrQ51YB QIkzaIB+cJCpJMhKiQe44AUjWSsltGCk+UEBJpOg6yTaAAW8UoKrk+Ar/f5KCcFK grBpPSxbJ+GEt84vro0t6yR24IIZwFMSiJVEFb46v7Bm1qwnQKpkKcGBJdAvqqed hAF8kNOdQiK0kOipF+gX1KGOVbORKGoITIpS0E42Eix16fpgKldIOBYSD4BBORxK 0UbgNqJWcG1GNzpX4D5CpD4QRAEAMKVIQEBCkUCAGJgaPx3AAEyRSICIInEFNATy D+pk5ybc+dn6yZOe9jSNHVCASJ+hgAUcfd8ILjAHS2KCCnO4QP/SCpCDY26TDjlg L/10wANoZgIET+DBfQkRAFrqlxK4xAFc9hcFX87TEsH8yyM+qYFQToKUpvRfKl2w ykm4EpZVfcQgC/mBbx5gkY3UZv8iOckHSOERUsjkJskpiQIsoRUcMCMa1ciBFwDg jQSUI1kNcMc87rEOFYABILephiXMAAdjGAMOZrAELyjXfyCYgg+CYAQzmMEIQfDB FKJZxEIb+tCITrSiF83oRjv60ZCOtKQnTelKW/rSmM60pjfN6U57+tOgDrWoR03q Upv61KhOtapXzepWu/rVsI61rGdN61rb+ta4zrWud83rXvv618AOtrCHTexiG/vY yE62spf/zexmO/vZ0I62tKdN7Wpb+9rYzra2t83tbnv72+AOt7jHTe5ym/vc6E63 utfN7na7+93wjre8503vetv73vjOt773ze9++/vfAA+4wAdOcPPd4OAIT7jCF87w hNNPABCPuMQnTvGKS7wLEGCBxjfO8Y57/OMQ6AL9LJCAC5j85ChPucpXngALdIFi tViAyOdnAY7ZIg8uhzktZD5ym9cC5y+/Bc9p7nNaAF3nnxi6/Gp+i6MLfeZLL/on nG4LpceP6TfP+dN73nStVx3qV5e6J6gec7DDD+s/93rZuZ71oH+d7Wl3+9qJ3nW5 79zs70O70dV+d7jv3e5Jx7v79D51/74H3u+FB7wnrH52sXcC6FVAo+QnT/nKW94L VRB8+yyggDx6/vOgD73oQ6AACzDx9KhPvepXn3r6ZfH1sI+97Gcfex164by4z73u c7/b/4VAvsAPvvCDH4JJBAAMyE++8pef/F32rwhhiL70p0996Q+z4NjPvva3z/3u e//74A+/+MdP/vKb//zoT7/618/+9rv//fCPv/znT//62//++M+//vfP//77//8A GIACOIAEWIAGeIAImIAKuIAM2IAO+IAQGIESOIEUWIEWeIEYmIEauIEc2IEe+IEg GIIiOIIkWIImeIIomIIquIIs2IIu+IIwGIMyOIM0WIM2eIM4mP+DOriDPNiDPviD QBiEQjiERFiERshvesB8yNd7CJQC1Rd9NMEJzLF7GgAnCfQdw+cCBtAJa0IIJWCF CCQmhPAFWyiFKTIIX6hAYjgIZMiFZygIaXiFdyIIbWiGQRKHYTiHf1CHm9CFaAiG B7SGdFiGffiGf4CHgaiHdYgvJtOIStYIfgiHgCg/JDAwlmiJVNYIgriHZcgBDPOJ 0REJkXiIkxg/BqAxqEgekbCJdcgBTdCIKyAX9/EIo4iI8mMAb3CJAxAFqggJrNiJ JVAI8iGKhmiLpvgRhAAiq6iIwCiMoQgJtViK8GMAyDgIyuiLzCgIHBCM1vSMtFiM 0vg+1Fj/CNf4CL+ojdw4CMMIjeBoP+OYjL1ojtn4B9vojBJQA7BoMjUQje5YjeZA HlSgi5ZIBedIj+kYDSsCigxjKV4Yju7zjtY4IKmoMaQyhs3YjdJhBfloBQz5h/1I jgNCAwJJAxXJhhepjm3SCIDSkB8Jj2RSCItSCK14kH+AJYWwkh5ZPxD5jy9JCDFp kehojyxykx0piS0ZkT05CD9pkkGJkUNJCDhplDrpj3/gKI2wlIPYlCg5HypZlKR4 lDypIzBZkllpkEKJXlDplcY4jVRplWNZkPXolGg5CFH5lVMJkkkpCFjJiVqJkFxJ lPx4ly4plj5JlnxplnLZlYFJPztZ/5V58pbzGJdb+ZR0qZYO2T6N6ZaFCZccQHkf sCIRUHmVwhwfQHkccJnsYwAGAHoPMCBMEHqj8h149HmqqY0KySzScZtd8B63iZrr c4oTKZHBCSDBSYhHeJzImZzKuZzM2ZzO+ZzQGZ3SOZ3UWZ3WeZ3YmZ3auZ3c2Z3e +Z3gGZ7iOZ7kWZ7meZ7omZ7quZ7s2Z7u+Z7wGZ/yOZ/0WZ/2eZ/4mZ/6uZ/82Z/+ +Z8AGqACOqAEWqAGeqAImqAKuqAM2qAO+qAQGqESOqEUWqEWeqEYmqEauqEc2qEe +qEgGqIiOqIkWqImeqIomqIquqIs2qLEgwUdgAIpM6M0OgMlsP9UJTADNLqjKNAB LkM/eTABc4AzRFqkQfAFVPUFQVCkTDoHE2AvGdAFQtACSoh8N4ACOIADVnADVQoG LSAEXeAQ8mMCSfAEBPCE0ScAc6ACRkADAoCmYUAAT5AEbWAFRCAkTHRnf0AEcwk/ NOABkyAFaIAGTyYJPpAAY4AHlJADWyIJijU/ZgBYksADbDEJSmAGiucIKUMJjJd3 jtcIlEoJZBcJmzoJnTp4n1oIoToJowoJpSoJp7p5qUoIqyoJrfoIrxoJsco+hPcI tRoJt6qpL2KqmserszoIvwoJwdoIuQoJu7o+veoIyfoIy1oIzfoIz6o+0QqqlWqr hoerwwr/q8UKrccqCNPqCNVKCNfqCNmaPtuqqt0KrN8qrJw6rtparn9wro2QroOw ro3QrujzrrQar8o6r8warrpqr+6Kr/paCPwqCP5aCAB7PgKLrARLrQZrrQjrrAob sAx7seiaseq6sdjasRT7saIqsv1KsuxqsuZTseYKsvuqshDLsv/qsuUDs/kqsw5L s38QsYQwsS+LsqxqATVGCUA7CHKAA/TjAjQyCQ1LCA5gBFmgARmQj43ICJvKiFi7 Al6gAeQyPwLgAiYgkJcoS6FaiWY7MCHgAgJAAQujmwxDHckhtwwzBI/4PmzwMcGJ iiowqEbQtxqTBDLQSfjYtSsQAETALSwlEACIuwIFRj8BubYDwAAekDEewACUOwAO RglNJEE/AAe5cANVIEEQZwmBAAA7 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/gif Content-Location: http://ege.edu.ru/common/img/img_2013/menu_str_all.gif Content-Transfer-Encoding: Base64 R0lGODlhCQAqArMAAAAAAP///+wcJABxuxyn7P+LAft4B/ZXEe4rH////wAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAJACoCAATiEMk5E6XJXpQ17leXfWIl jtw5qmzrvnAsz3Rt33iu73zv/8CgcEg8CY5IZCKZzDCPnaeIaVRWBSxotsjter/g sHhMLpvP6LS6e2i73Yn3OyNvd+oi+Wm+t6v8f2uCg4SFhoeIiYplBo2OjgmPjxmS jR2VIpInk5uWKp6fi6KjpKWmp6ipLgWsra0Jrq4ZsawdtCKxJ7K6tSq9vqrBwsPE xcbHyMnKy8zNzs/QYgPT1NQJ1dUZ2NMd2yLYJ9nh3Crk5dHo6err7O3u70AE8vPz CfT0GffyHfoi9yf4AO5TMZBgBAA7 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/gif Content-Location: http://ege.edu.ru/common/img/bul_2.gif Content-Transfer-Encoding: Base64 R0lGODlhCwAHAIABAIaGhP///yH5BAEAAAEALAAAAAALAAcAAAIKjI+py+0AowQu FAA7 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/png Content-Location: http://ege.edu.ru/common/img/img_2013/file_doc.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABgAAALzCAYAAAALa8eQAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA0tpVFh0WE1MOmNvbS5hZG9iZS54bXAA AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6 eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDA3IDEuMTQ0MTA5LCAyMDExLzA5 LzIwLTE4OjA5OjEwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6 Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9i ZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29t L3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94 YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9i ZSBQaG90b3Nob3AgQ1M2ICgxMy4wMjAxMTEwMTIubS4yNTggMjAxMS8xMC8xMjoy MTowMDowMCkgIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1 MTg0RjUyMzU4MzExMUUzODE0M0ExQkZFRDZGOEE0NSIgeG1wTU06RG9jdW1lbnRJ RD0ieG1wLmRpZDo1MTg0RjUyNDU4MzExMUUzODE0M0ExQkZFRDZGOEE0NSI+IDx4 bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjUxODRG NTIxNTgzMTExRTM4MTQzQTFCRkVENkY4QTQ1IiBzdFJlZjpkb2N1bWVudElEPSJ4 bXAuZGlkOjUxODRGNTIyNTgzMTExRTM4MTQzQTFCRkVENkY4QTQ1Ii8+IDwvcmRm OkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQg 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 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/gif Content-Location: http://ege.edu.ru/common/img/img_2013/storon_site_ico.gif Content-Transfer-Encoding: Base64 R0lGODlhHAMqAPf/AEpXcMnU1pWlvLy7vLOys4K1tsPDw9vb29fd5ubt9MvLy9PT 0yg1UaurrJirw4WZtGqFp8TM2XeEnKKio6TIxtvi6fn16lhzl+zy+Fyb2EZjiCw2 aXmIpWR5mJOSk4mOLbvAyABdZczW4nyytDZvmfn6+m5sFpubnIuLjIKCgwZzxIqU qoq6vL3DyjhSeWloalt6oBs3YvDw8VdjdfX19uXm5p6rUe3t7beuDHt7e9fLBPL6 /ShJdKCot////1FniDpIaEpXgjtbgiRye2+DPLTB0unp6trk3E6RlUpqkgZptmWA op2cpODg4Gp2jDVMcnmUthRZkVhaXQcnVfj9/3NydKq70a26y4yhu7SwOfHx5hVo c/z8/OPp7/Xz6Nrm9FBqTjZAWebcBvP2+eDl7Mi6A3h+hFdskKK0y9PGx7jE5IqN nI+etCVDbrnF1BsnRfnzAOPp4BAeLX2RrTOHz298l3KNrhsoVS1SfAVbp6exvbOp qRwwYff06QAZSY+axe/x6/v//5+wxra1t9Pf2ouUoOvt477J1CJytU1ym5ihroe4 uZC9vbPPzL/L2qDGxDeChrG+z2Fth4WFhpOVJam0w7m4ud7d3a2npGOfoqe4zY6N jvj6/K+ur0uGwoS2t3KqrKWlppfAv7rH2ZWVlri5u8XLz9LY4bbF12trbXFsaoCO or+/wJ6dnYeGhnV2eczc1h5rljNYXsfGxe71+evl5l12dHh0c8XQ3tnV1c/OzxJJ fvv8/ujq7H9+gFxugp6sv+ru8Ozr63Bvcaq2yPv7+/Ty86CaE3h3eB4+aoiIicHX 0WRiYeLk5KCfoJCPkJeWmA8uW/f27tjX2MjIyOjn6KenqPz7/QBYYeTj46ClJu/v 70RYPff4+Pz58FRgnsbFxkBwa9LR0ampqTQ8eHRwbsHIUrjCQ8HK8ZmYmp+YlZOf pZGIhLy+76ahnXmvsfLy8vT09PPz87ivr+bt6Hp5ev7+/v39/Y6ABvz366alFuPj 4+Tk5OTk5bC7w////yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4z LWMwMDcgMS4xNDQxMDksIDIwMTEvMDkvMjAtMTg6MDk6MTAgICAgICAgICI+IDxy ZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1y ZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHht bG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1w TU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVm PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYj IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKDEzLjAyMDEx MTAxMi5tLjI1OCAyMDExLzEwLzEyOjIxOjAwOjAwKSAgKFdpbmRvd3MpIiB4bXBN TTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjYyODc5MTBDNEFERjExRTNCQjcxRDU0Q0Mw NkE0QzUzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjYyODc5MTBENEFERjEx RTNCQjcxRDU0Q0MwNkE0QzUzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmlu c3RhbmNlSUQ9InhtcC5paWQ6NjI4NzkxMEE0QURGMTFFM0JCNzFENTRDQzA2QTRD NTMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjI4NzkxMEI0QURGMTFFM0JC NzFENTRDQzA2QTRDNTMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4g PC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx 8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LB wL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KR kI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh YF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIx 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 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/gif Content-Location: http://ege.edu.ru/common/img/img_2013/slider_str.gif Content-Transfer-Encoding: Base64 R0lGODlhEAB+AMQUAN/f3yEhIZqamvv7+15eXioqKpubm5ycnJ2dneXl5SAgIJmZ mZaWlpWVlSYmJubm5uPj45eXl5iYmP///////wAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4z LWMwMDcgMS4xNDQxMDksIDIwMTEvMDkvMjAtMTg6MDk6MTAgICAgICAgICI+IDxy ZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1y ZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHht bG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1w TU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVm PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYj IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKDEzLjAyMDEx MTAxMi5tLjI1OCAyMDExLzEwLzEyOjIxOjAwOjAwKSAgKFdpbmRvd3MpIiB4bXBN TTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjc2Q0I2NkNGNEMzNDExRTNCMTYxRjJGQzYw Q0FDMDYwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjc2Q0I2NkQwNEMzNDEx RTNCMTYxRjJGQzYwQ0FDMDYwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmlu c3RhbmNlSUQ9InhtcC5paWQ6NzZDQjY2Q0Q0QzM0MTFFM0IxNjFGMkZDNjBDQUMw NjAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzZDQjY2Q0U0QzM0MTFFM0Ix NjFGMkZDNjBDQUMwNjAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4g PC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx 8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LB wL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KR kI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh YF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIx MC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIB AAAh+QQBAAAUACwAAAAAEAB+AAAFd+BAPFRpngkxUEsAnCegCKbgwhQQ0KdxmzoD jnL46Q7DEsIB0SGSpkahwICeIhKrdsvter/gsHhMLpvP6LR6zW673/C4fE6v2+/4 vH7P7/v/gIGCg4SFhoeIiYqAExNcjY1akJBQlBSWMJiXkSeaJZieJpShnY0hADs= ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/gif Content-Location: http://ege.edu.ru/common/img/img_2013/banner_gia.gif Content-Transfer-Encoding: Base64 R0lGODlhvgAZAdU9AGVlZ87Oz9LS02BhY1VWV0lKTN3d3cjIyGtsbpycnYCAgn5/ gJaWl4GCg5eYmZ2en4uMjZOTlISEhurq6pmZmmBhYpqbnIKDhJSVlrO0tOPj44eH iNbW1oeIiX19f0dISo6PkJKTlIWFhomJi5CQkUxNT05PUcrKyo2NjpCRkoqLjI2O j1xdX0ZHSNzc3Glqa4yNjpGSk1VWWIqKi8rLy4iJioaHiIWGh4+Qkefn6D4/QfLy 8v///////wAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4z LWMwMDcgMS4xNDQxMDksIDIwMTEvMDkvMjAtMTg6MDk6MTAgICAgICAgICI+IDxy ZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1y ZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHht bG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1w TU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVm PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYj IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKDEzLjAyMDEx MTAxMi5tLjI1OCAyMDExLzEwLzEyOjIxOjAwOjAwKSAgKFdpbmRvd3MpIiB4bXBN TTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJFNDZEQjkxNEI2RDExRTNCNjJBQjI4QUQ0 RkREMTlDIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJFNDZEQjkyNEI2RDEx RTNCNjJBQjI4QUQ0RkREMTlDIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmlu c3RhbmNlSUQ9InhtcC5paWQ6QkU0NkRCOEY0QjZEMTFFM0I2MkFCMjhBRDRGREQx OUMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkU0NkRCOTA0QjZEMTFFM0I2 MkFCMjhBRDRGREQxOUMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4g PC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx 8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LB wL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KR kI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh YF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIx MC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIB AAAh+QQBAAA9ACwAAAAAvgAZAQAG/0CdcEgsGo/IpHLJbDqf0Kh0Sq1ar9isdsvt er/gMJNHLpvP6LR6zW673/C4fE5/G+v4vH7P7/vNd3+Cg4SFhmiBh4qLjI1piY6R kpN7kJSXmJmIRZqdnpeWn6Kjg6Gkp6h1pqmsrWurrrGxsLK1qLS2uZ+4ur2YvL7B kcDCxYrExsmlnMrNjsjO0XjQ0tVx1NbZbNja3Wfc3uHg4d3j5Nnm59Xp6tHs7c3v 8Mny88X19sH4+b37/Ln+/tUKKHAWs4LtCCJkpXDhrYMOxUGMWG4iRXQWL67LqNEd x47xPoKkJ3LkvZIm9aFM2W8lS4AuXw6MKdMgkZohb+IkqXPnyf+ePlUCDdpyKFGY Ro/OTKrU5pCmRZ9CRSp16tKqVp0KyXp1K1etOr6CFeuqIdlKNM9KMqt2Wtq2jdjC nSN37rW3dg/VzetmL99teP8uYyp4WODCfvwi/nZ4MVrCjo81juwWMuVCiilnjrzZ cefFnxGHLjxacOm/p/mmzrvabuu5r+HGbjtbbe2zt8nmFrv7a2+uv7MGtzp8anGo x5smV7r8aHOiz4NG9zl9Z3Wc12tml7n9ZXeW31OGNzl+ZHmQ5zum17j+YnuK7yPG dzh/YX2E9wvmF7j/X39+/+UToD0DzlMgPAcmNNlldC3I4F2WPfhHgupQeI6F5GAo UYQS9qH/oTcfVsRhh49hRSJmDp74SooqPsJii4yNCGODMs4IoYk28hGiNjtiVGOO fb2YY4/WELnRj0AChmSSahgpjZMeLcnkJlJOCYiQNkLpjJY54WgljV5+eaMQO5Rp 5plopqnmmmy26eabcMYp55x01gmnEXbmqeeefPbp559n4gnooIQWauihaQqK6KKM Nuqomoo+KumklPIZaaWYZqppokVs6umnmF4K6qikEipqqaimauepqrbqKpusviqr rLHOamuqtd6qK6i57uprpr3+KqykwQ5r7KLFHqusqZ0u6+yjyT4rbZ7RTmutnNVe q22b2W7rLZrdfituuOJ6S2652p6L/6616q4rbbvuOgtvvMrOS6+x9t4rbL76+spv v7r+C7CtAg9Ma7MGu1twwq0uzDCuCD88bsQSm0txxelejDG7Gm/8bsceywtyyPWO TDK+Jp+8b8oq+8tyywG/DDPBMs98MBE2i4xzziXvzDPKPv+8ctBCu0x00TEfjTTN Si998xBOGw111ElPTTXTVl/9NJlaz+pw139+DXafYo+9Z9lmU1tz2pOizTadbr+N 7dpyN2pEAHjnrffefPft99+ABy744IQXbnjeHPg5weEBiOH445ATUUIGetJQQeSY Z655EhDkebkVAIQu+uikl2766ainrvrqrLfu+uulszCECnVOIP/EB7CP3sPuvPfu ++/ABy/88MQXb/zxyCcPPARDzEDnAUIgoPz01Fdv/fXYZ98DDEOMMCf0Okiv/fjk l2/++SgMUYOc4It//vvwxy+/7ysM0UGcJwjxwvz89+//9SAYwgbgJAAhDOB/CEyg AoGHgyHY4E0F1MEBF0jBCvaPBEO4gZsiOEELevCD5UvBEETQJg6C8IQovF4MhiAB NpkwhTCMofFCwMI1vVCGOMxh7yIwhAuoyQVCkIEOh6hDHgrBh2gygBAIQMQmyhAD Q2hAEpfoxCqmEIpCkKKZlKgDJlrxix9kwBAUsEUqgvGMFRSjEMi4Ay56EY1wTKAD hrCAHWhOQAgmiKMeEThHISwgB0IowB4H2T8KDMEDgSSkIuVnSCIIcpGQPJ8FHBnJ SpZvkom0pCazlwAhtGCToLxeJ3UQylJS7wGkNKUqkfcA6wUBADs= ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/gif Content-Location: http://ege.edu.ru/common/img/img_2013/str_status_menu.gif Content-Transfer-Encoding: Base64 R0lGODlhCAAHAJEDAG9vcH5/fzAxM////yH/C1hNUCBEYXRhWE1QPD94cGFja2V0 IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6 eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUg WE1QIENvcmUgNS4zLWMwMDcgMS4xNDQxMDksIDIwMTEvMDkvMjAtMTg6MDk6MTAg ICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcv MTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRm OmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4w LyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8i IHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUv UmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBD UzYgKDEzLjAyMDExMTAxMi5tLjI1OCAyMDExLzEwLzEyOjIxOjAwOjAwKSAgKFdp bmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkFEMEZDNzAwNEJBODEx RTM5NDBGQkY1MjhBRUM3RkYyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkFE MEZDNzAxNEJBODExRTM5NDBGQkY1MjhBRUM3RkYyIj4gPHhtcE1NOkRlcml2ZWRG cm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QUQwRkM2RkU0QkE4MTFFMzk0 MEZCRjUyOEFFQzdGRjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QUQwRkM2 RkY0QkE4MTFFMzk0MEZCRjUyOEFFQzdGRjIiLz4gPC9yZGY6RGVzY3JpcHRpb24+ IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79 /Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87N zMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56d nJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25t bGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49 PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4N DAsKCQgHBgUEAwIBAAAh+QQBAAADACwAAAAACAAHAAACD4xmo3i56RQ8bACarmx0 FAA7 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=style_ege_new.css Content-Type: text/css; name=style_ege_new.css Content-Location: http://ege.edu.ru/common/css/style_ege_new.css Content-Transfer-Encoding: 8bit @import url("/common/css/spec.css"); @font-face { font-family:"Open Sans Condensed Light"; src:url("font/OpenSans-CondLight.eot"); src:url("font/OpenSans-CondLight.eot?#iefix") format("embedded-opentype"), url("font/OpenSans-CondLight.woff") format("woff"), url("font/OpenSans-CondLight.ttf") format("truetype"), url("font/OpenSans-CondLight.svg#OpenSans-CondensedLight") format("svg"); font-weight:normal; font-style:normal; } @font-face { font-family:"OpenSansCondLight"; src:url("font/OpenSansCondLight.ttf"); } @font-face { font-family: 'open_sanscondensed_light'; src: url('font/opensanscondlight-webfont.eot'); src: url('font/opensanscondlight-webfont.eot?#iefix') format('embedded-opentype'), url('font/opensanscondlight-webfont.woff2') format('woff2'), url('font/opensanscondlight-webfont.woff') format('woff'), url('font/opensanscondlight-webfont.ttf') format('truetype'), url('font/opensanscondlight-webfont.svg#open_sanscondensed_light') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'Open-Sans-Condensed-Light'; src:url("font/Open-Sans-Condensed-Light.ttf.eot"); src:url('font/Open-Sans-Condensed-Light.ttf.eot?#iefix') format('embedded-opentype'), url("font/Open-Sans-Condensed-Light.ttf.woff") format("woff"), url("font/OpenSansCondLight.ttf") format("truetype"), url('font/Open-Sans-Condensed-Light.ttf.svg#Open-Sans-Condensed-Light') format('svg'); font-weight:normal; font-style:normal; } @font-face { font-family:"Deja Vu"; src:url("font/dejavu.eot"); src:url("font/dejavu.eot?#iefix") format("embedded-opentype"), url("font/dejavu.woff") format("woff"), url("font/dejavu.ttf") format("truetype"), url("font/dejavu.svg#DejaVu") format("svg"); font-weight:normal; font-style:normal; } /* Default */ * { margin: 0px; padding: 0px; font-size:100%;} td {vertical-align:top;} html, body, form, table { margin: 0px; padding: 0px; } body { color: #1f262d; font-size: 12px; line-height: normal; font-family: Verdana; background: url("/common/img/img_2013/back_main.jpg") repeat-x left top #bcc7e6; } body.GIA {background: url("/common/img/img_2013/back_main_gia.jpg") repeat-x left top #e8dbc2;} table { border-collapse: collapse; border-spacing: 0px; border: none; } table td { vertical-align: top; padding: 0px; border: none; } img {border: none;} a {color: #0071bb; text-decoration:underline; outline: none;} a:hover {text-decoration:none;} body>* a { cursor: pointer; } .spacer { font-size: 0px; line-height: 0px; margin: 0px; padding: 0px; border: none; display: block; visibility: hidden; } .br0 { font-size: 0px; line-height: 0px; margin: 0px; padding: 0px; } html, body { width:100%; height:100%; } * html #content { height: 100%; } #content {position:relative; min-height:100%; width:1000px; margin:0 auto; background:#fff; box-shadow: 0 0px 30px rgba(0,0,0,0.3); -moz-box-shadow: 0 0px 30px rgba(0,0,0,0.3); -webkit-box-shadow: 0 0px 30px rgba(0,0,0,0.3);} #footer { position: relative; margin-top: -137px; height: 150px; padding:0px 29px 0 31px; width:940px; color:#e6e6e6; margin-left:auto; margin-right:auto; background:#f2f2f2; box-shadow: 0 30px 30px rgba(0,0,0,0.3); -moz-box-shadow: 0 30px 30px rgba(0,0,0,0.3); -webkit-box-shadow: 0 30px 30px rgba(0,0,0,0.3); } #footer .fot_line {margin:0px 0px 0px 0px; border-top:1px solid #d5d6d6;} #footer .div1 { line-height:16px; color:#949699;} #footer .div2 {line-height:16px; color:#949699;} #footer .div2 a {color:#7aa2d1; text-decoration:none} #footer .div2 a:hover {color:#8ab3e2; text-decoration:underline} #footer .div1 {margin:0 auto; padding-top:8px; text-align: center; width: 896px;} #footer .div1 a {color: #0071bb;} #footer .div1 a:hover {color:#0071bb} #footer .div_right{float:right; padding-right: 25px;} #footer .div_right div{float:left;} #footer .div_right .link_web {border-right:2px solid #bebebe; padding-right:7px} #footer .div_right .link_web a{background: url("/common/img/ege_new/webmast_bg.gif") no-repeat left 3px; padding-left:16px; color: #0071bb;} #footer .div_right .link_web a:hover{color:#0071bb} #footer .div_right .link_mapsit {padding:0 7px} #footer .div_right .link_mapsit a{background: url("/common/img/ege_new/mapsite_bg.gif") no-repeat left 3px; padding-left:16px; text-decoration:none} #footer .div_right .link_mapsit a:hover{text-decoration:underline} #footer .div_right .link_stat {padding-left:7px} #footer .div_right .link_stat a{background: url("/common/img/ege_new/stat_bg.gif") no-repeat left 3px; padding-left:16px; text-decoration:none} #footer .div_right .link_stat a:hover{text-decoration:underline} #footer .rambler_top {position: absolute; right: 29px; top: 20px; width: 89px;} .cont_bottom {height:137px;} /* =============================================== GIA ================================================*/ .EGE a{color: #0071bb;} .EGE a:hover{} /* =============================================== MAIN ================================================*/ .color_red {color:red;} .color_green {color:green;} .main_top {height:38px; position:relative; background:#f2f2f2; z-index:200;} .procedure_main .main_top {background:none;} .logo {} .logo .img1 {position:absolute; left:0; top:22px;} .logo .img2 {position:absolute; left:135px; top:22px;} .logo .img3 {position:absolute; left:135px; top:97px;} .logo .img4 {position:absolute; left:20px; top:22px;} .logo_new {background: url("/common/img/img_2013/logo.gif") no-repeat 30px 45px; height:151px; position:relative;} .logo_new .logo_ico {background: url("/common/img/img_2013/logo.gif") no-repeat left top; width:138px; height:50px; cursor:pointer; position:absolute; left:30px; top:45px;} /*.logo_new .logo_ico:hover {background: url("/common/img/img_2013/logo_hov.gif") no-repeat left top;}*/ .logo_new .logo_text {font-family: calibri; font-size:24px; line-height:32px; position:absolute; left:209px; top:39px;} .logo_new .logo_text .logo_text1 {color:#949699;} .logo_new .logo_text .logo_text2 {color:#303133; font-weight: bold; text-transform: uppercase;} .logo_new .vers_special {color:#303133; font-size:14px; text-transform: uppercase; background: url("/common/img/img_2013/ico_special.gif") no-repeat left top; width:145px; height:66px; padding:24px 0px 0px 38px; position:absolute; right:29px; top:26px; line-height:24px;} .logo_new .vers_special a {color:#303133;} .GIA .logo_new {background: url("/common/img/img_2013/logo_gia.gif") no-repeat 30px 45px;} .GIA .logo_new .logo_text {left:241px;} .GIA .logo_new .logo_ico {background: url("/common/img/img_2013/logo_gia.gif") no-repeat left top; width:180px;} /*.GIA .logo_new .logo_ico:hover {background: url("/common/img/img_2013/logo_gia_hov.gif") no-repeat left top;}*/ .top_right_1 {position:absolute; right:-1px; top:36px; text-align:right; width:160px;} .top_right_1 img {margin-right:3px;} .top_right_1 .img1 {margin-right:10px;} .top_right_1 a {text-decoration:none} .top_right_1 a:hover {text-decoration:none} .top_right_2 {position:absolute; right:0px; top:57px;} .top_right_2 a {background:url(/common/img/ege_new/o4ki.gif) no-repeat left 4px; text-decoration:none; color:#1f262d; font-size:16px; font-weight:bold; padding-left:33px;} .top_right_3 {position:absolute; left:191px; top:10px; width:175px; border-bottom:1px solid #c3c4c5; height:18px;} .top_right_3 .inp1 {background:none; border:0px solid red; color:#949699; font:12px; margin:0px 0px 0px 0px; padding:1px 0px 2px 0px; width:155px;} .top_right_3 .inp2 {position:absolute; right:2px; top:1px;} .top_right_nav {} .top_right_nav .tp_rig_nav1 {position:absolute; right:236px; top:11px;} .top_right_nav .tp_rig_nav1 a {background: url("/common/img/img_2013/ico_socseti_gia.jpg") no-repeat left -85px; /*background: url("/common/img/img_2013/ico_top_mb.jpg") no-repeat left -149px;*/ padding-left:20px; text-decoration:underline; color:#303133; padding-top: 2px; display: inline-block; height: 15px;} .top_right_nav .tp_rig_nav1 a:hover {color:#303133; text-decoration:none;} .top_right_nav .tp_rig_nav2 {height:38px; width:41px; background: url(/common/img/img_2013/ico_lov.jpg) no-repeat center 13px #0071bb; position:absolute; right:29px; top:0px; cursor:pointer;} .coz_set_okn {position:absolute; background:#d2d2d1 url(/common/img/ege_new/menu_top_bl_bg.gif) repeat-x left -70px; padding: 20px 30px 20px 30px; /*border-radius:10px;*/ box-shadow:0px 1px 3px #939393; width:322px; z-index:1000; right:0px; top:38px; display:none;} .coz_set_okn .client_top_bl_str {right:37px;} .coz_set_okn a {color:#1f262d; text-decoration:none;} .coz_set_okn a:hover {text-decoration:underline;} .coz_set_okn .authorize { margin-bottom: 10px; font-size: 14px; font-weight: 900; } .cboxIframe body {background:#fff;} /* .top_right_soc {width:135px; height:18px; right:50px; top:11px; position:absolute;} .top_right_soc a {display:block; width:18px; height:18px; margin-left:11px; float:left; } .top_right_soc .soc_se1 {background: url("/common/img/img_2013/ico_socseti_gia.jpg") no-repeat 1px -187px #f2f1ed;} .top_right_soc .soc_se2 {background: url("/common/img/img_2013/ico_socseti_gia.jpg") no-repeat 6px -273px #f2f1ed;} .top_right_soc .soc_se3 {background: url("/common/img/img_2013/ico_socseti_gia.jpg") no-repeat 3px -347px #f2f1ed;} .top_right_soc .soc_se4 {background: url("/common/img/img_2013/ico_socseti_gia.jpg") no-repeat 2px -444px #f2f1ed;} */ .top_right_soc {width:170px/*132*/; height:24px; right:29px; top:6px; position:absolute;} .top_right_soc a {display:block; width:24px; height:24px; margin-left:12px; float:left; } .top_right_soc .soc_se0 {background: url("/common/img/img_2013/livejournal_ico.gif") no-repeat 0px 0px; margin:0px;} .top_right_soc .soc_se1 {background: url("/common/img/img_2013/ico_soc_snew.gif") no-repeat 0px 0px;} .top_right_soc .soc_se2 {background: url("/common/img/img_2013/ico_soc_snew.gif") no-repeat -35px 0px;} .top_right_soc .soc_se3 {background: url("/common/img/img_2013/ico_soc_snew.gif") no-repeat -71px 0px;} .top_right_soc .soc_se4 {background: url("/common/img/img_2013/ico_soc_snew.gif") no-repeat -108px 0px;} .top_right_soc .soc_se0:hover {background: url("/common/img/img_2013/livejournal_ico.gif") no-repeat 0px -36px;} .top_right_soc .soc_se1:hover {background: url("/common/img/img_2013/ico_soc_snew.gif") no-repeat 0px -36px;} .top_right_soc .soc_se2:hover {background: url("/common/img/img_2013/ico_soc_snew.gif") no-repeat -35px -36px;} .top_right_soc .soc_se3:hover {background: url("/common/img/img_2013/ico_soc_snew.gif") no-repeat -71px -36px;} .top_right_soc .soc_se4:hover {background: url("/common/img/img_2013/ico_soc_snew.gif") no-repeat -108px -36px;} .main_lnk {height:107px; padding:25px 29px 0px 31px;} .main_lnk_1 {float:left; font-size:14px;} .main_lnk_1 a {display:block; padding:50px 0px 0px 0px; font:14px; text-decoration:none; color:#949699;} .main_lnk_1 a:hover {color:#0071BB;} .main_lnk .div1 {margin-right:70px;} .main_lnk .div1 a {background: url("/common/img/img_2013/ico_vagn_ssylk_gr.gif") no-repeat 90px 0px; width:214px;} /*/common/img/img_2013/ico_vagn_ssylk.gif*/ .main_lnk .div2 {margin-right:94px;} .main_lnk .div2 a {background: url("/common/img/img_2013/ico_vagn_ssylk_gr.gif") no-repeat 51px -189px; width:136px;} .main_lnk .div3 {margin-right:48px;} .main_lnk .div3 a {background: url("/common/img/img_2013/ico_vagn_ssylk_gr.gif") no-repeat 62px -374px; width:160px;} .main_lnk .div4 {} .main_lnk .div4 a {background: url("/common/img/img_2013/ico_vagn_ssylk_gr.gif") no-repeat 38px -584px; width:110px;} .main_lnk .div5 {} .main_lnk .div5 a {background: url("/common/img/img_2013/ico_vagn_ssylk_gr.gif") no-repeat 93px -816px; width:218px;} .main_lnk .div1 a:hover {background: url("/common/img/img_2013/ico_vagn_ssylk_gr.gif") no-repeat -202px 0px;} /*-228*/ .main_lnk .div2 a:hover {background: url("/common/img/img_2013/ico_vagn_ssylk_gr.gif") no-repeat -241px -189px;} .main_lnk .div3 a:hover {background: url("/common/img/img_2013/ico_vagn_ssylk_gr.gif") no-repeat -230px -374px;} .main_lnk .div4 a:hover {background: url("/common/img/img_2013/ico_vagn_ssylk_gr.gif") no-repeat -252px -584px;} .main_lnk .div5 a:hover {background: url("/common/img/img_2013/ico_vagn_ssylk_gr.gif") no-repeat -199px -816px;} .main_block_1 {padding:0px 29px 0px 31px; width:940px; overflow-x: hidden; margin-bottom:21px;} .main_block_reg {display:none;} .second_cont_tbl_2 .main_block_1 {padding:0px;} .main_block_grey {/*background:#f2f2f2;*/ padding-top:19px;} .GIA .main_block_grey {background:none;} .main_block_menu {height:40px; margin-bottom:16px;} .main_block_menu .div1 {height:58px;} .main_block_menu a {display:inline-block; padding:14px 22px 12px 22px; float:left; font-size:14px; line-height:14px; color:#303133; position:relative; text-transform: uppercase; margin-right:7px;} .main_block_menu .a1 {z-index:50;} .main_block_menu .a2 {z-index:40;} .main_block_menu .a3 {z-index:30;} .main_block_menu a.selected {background:#0071bb; color:#fff; z-index:60; text-decoration:none; position:relative;} .main_block_menu a.selected .str_men_str {display:block; background: url("/common/img/img_2013/menu_str_all.gif") no-repeat left -446px; /*background: url("/common/img/img_2013/str_men_blue.gif") no-repeat left top;*/ width:9px; height:9px; position:absolute; bottom:-9px; right:20px;} .main_block_menu_red a.selected .str_men_str {background: url("/common/img/img_2013/menu_str_all.gif") no-repeat left top; /*background: url("/common/img/img_2013/str_men_red.gif") no-repeat left top;*/} .main_block_menu_red a.selected {background:#ec1c24;} .main_block_menu a:hover {background:#0071bb; color:#fff; z-index:55;} .main_block_menu_red a:hover {background:#ec1c24; color:#fff; z-index:55;} .main_vote .main_block_menu a.selected {background:url(/common/img/ege_new/menu2_yell.gif) repeat-x left top;} .main_vote .main_block_menu a:hover {background:url(/common/img/ege_new/menu2_yell.gif) repeat-x left top;} .main_video .main_block_menu a.selected {background:url(/common/img/ege_new/menu2_blue.gif) repeat-x left top;} .main_video .main_block_menu a:hover {background:url(/common/img/ege_new/menu2_blue.gif) repeat-x left top;} /*.main_block_2 .main_block_menu a.selected {background:url(/common/img/ege_new/menu2_roz.gif) repeat-x left top;} .main_block_2 .main_block_menu a:hover {background:url(/common/img/ege_new/menu2_roz.gif) repeat-x left top;}*/ .main_block_menu a.selected2 {background:#1ca7ec; color:#fff; z-index:60; text-decoration:none; position:relative;} .main_block_menu a.selected2 .str_men_str {display:block; background: url("/common/img/img_2013/menu_str_all.gif") no-repeat left -546px; /*background: url("/common/img/img_2013/str_men_blue.gif") no-repeat left top;*/ width:9px; height:9px; position:absolute; bottom:-9px; right:20px;} /* =============================================== SECOND ================================================*/ .second_cont_tbl {width:100%;} .second_cont_tbl_1 {width:300px; padding-top:36px; background:#dae1f7;} .second_cont_tbl_2 {padding-left:32px; padding-top:20px; padding-right:29px;} .GIA .second_cont_tbl_1 {background:#f0e8d8;} /* =============================================== Content and Elements ================================================*/ .left {float:left;} .right {float:right;} .img_left {float:left; margin:5px 15px 5px 0;} h1 {font-family:calibri; font-size:24px; font-weight:normal; line-height:20px; color:#202731; padding-bottom:15px; font-weight: bold;} h1.head_ttl {margin-bottom:22px; padding-bottom:0px; text-transform: uppercase;} h2 {font-family:calibri; font-size:20px; font-weight:normal; line-height:normal; color:#202731; padding-bottom:15px;} h3 {font-family:calibri; font-size:16px; font-weight:bold; line-height:normal; color:#202731; padding-bottom:15px;} p {padding-bottom:1.2em;} ul {list-style:none; padding:0 0 7px 10px;} ul li {padding:0 0 5px 20px; background:url(/common/img/bul_2.gif) no-repeat left 5px;} ol {padding:0 0 7px 26px; margin:0; } ol li {padding:0 0 15px 0px; margin:0;} ol li a {padding:0; margin:0; display:inline;} ol ul {padding:5px 0 0px 16px;} ol ul li {padding:0 0 5px 15px; /*background:url(/common/img/li1.gif) no-repeat left 6px;*/} ol ul li ul li {padding:0 0 5px 10px; background:url(/common/img/li1.gif) no-repeat left 7px;} .content {font-size:12px; line-height: 1.4em; position:relative; padding-bottom:10px; min-height:424px;} .content p {padding-bottom:1.2em;} .content ul {list-style:none; padding:0 0 15px 10px;} .content ul li {padding:0 0 8px 19px; background:url(/common/img/img_2013/bul_3.gif) no-repeat 7px 6px;} .sub_print_top {position:absolute; width:24px; height:24px; right:0px; top:-60px;} .sub_print_top a {text-decoration:none;} .checkbox, .radio { width: 16px; height: 16px; padding: 0 0px 0 0; background: url(/common/img/img_2013/checkbox2013.gif) no-repeat; display: block; clear: left; float: left; cursor:pointer; } .radio { background: url(/common/img/img_2013/radiobutton2013.gif) no-repeat; } .select { position: absolute; width: 158px; /* With the padding included, the width is 190 pixels: the actual width of the image. */ height: 21px; padding: 0 24px 0 8px; color: #fff; font: 12px/21px arial,sans-serif; background: url(/common/img/ege_new/select.gif) no-repeat; overflow: hidden; } .ban_gia {float:right; padding-bottom:30px;} .gia_ban {background: url(/common/img/ege_new/ban_gia.png) no-repeat; display:block; width:451px; height:95px;} .gia_ban:hover {background-position:left -100px;} .lnk_back {font-size:18px;} .lnk_back a {font-size:14px;} .inp {border:1px solid #aeaeae; border-top:1px solid #757575; border-bottom:1px solid #e5e5e5; /*border-radius:3px;*/ width: 100%; padding:7px 10px; margin:0; color: #A1A1A1; font: 15px/normal arial; color:#262626; font-weight:bold;} /* .button {background:url(/common/img/ege_new/menu2_green.gif) repeat-x left top; border:none; border-radius:5px; padding:7px 15px; font:15px/normal arial; color:#fff; text-shadow:1px 1px 0px #1f262d; font-weight:bold; text-decoration:none; cursor:pointer;} .button:hover {box-shadow:1px 1px 3px #828282;} */ .button {min-width: 64px; font-weight: bold; text-decoration:none; display:inline-block; color:#303133; background:#f2f2f2; padding:9px 30px; font-size:12px; line-height:14px; font-weight:block; text-align:center; text-transform: uppercase; border: none; box-shadow: none; outline: none; cursor:pointer;} .button:hover {background:#0071bb; color:#fff;} .GIA .button:hover {background:#FF8E00;} .razd_work {width:623px; height:260px;} .razd_work img {position:absolute; top:0px; left:0px;} /* =============================================== Table ================================================*/ .table_block {/*background:#b4d3aa; padding:15px 0 15px 0;*/ padding:0px; margin-bottom:15px;} .table {width:100%;} .table th {background:#dae1f7; text-align:left; padding:11px 19px 11px 19px; border:1px solid #a9abad; font-weight: normal;} .table td {background:#fff; text-align:left; padding:16px 19px; border:1px solid #a9abad;} #settings .table td {background:#fff; text-align:left; padding:5px 0px 5px 0px; border:1px solid #a9abad;} #settings .table td.td2, #settings .table td.td3 { text-align:center; } .table tr.alt td {background:none;} .table tr.over td {background:#f2f2f2;} /*.table tr:nth-child(2n+1) td {background:none;} .ege_rezult_b_nb tr:nth-child(2n+1) td {background: #F2F2F2;}*/ .table tr.tr_n1 td {background:none;} .ege_rezult_b_nb tr.tr_n2 td {background: #F2F2F2;} .table tr.ovhov td {background:#dadada;} .table_min {width:100%;} .table_min th {background:#b4d3aa; font-size:15px; text-align:left; padding:2px 3px 10px 3px; font-weight: normal;} .table_min td {background:#fff; text-align:left; padding:5px 3px; border-top:1px solid #adb0c1;} .table_min tr.alt td {background:none;} .table_min tr.over td {background:#f2f2f2;} .table_min tr:nth-child(2n+1) td {background:none;} .table_min tr.ovhov td {background:#dadada;} /*.exam_top{border-radius:15px 15px 0 0 ; border:1px solid #d7dadc; background:#93e739; border-bottom:none; height:10px;} .exam_bot{border-radius:0 0 15px 15px ; border:1px solid #d7dadc; background:#f5f7f8; border-top:none; height:10px} .table_exam {width:100%; text-align:center; background:#f5f7f8; border-left:1px solid #d7dadc; border-right:1px solid #d7dadc;} */ .table_exam {width:100%;} .table_exam th {background:#dae1f7; text-align:left; padding:11px 19px 11px 19px; border:1px solid #a9abad; font-weight: normal;} .table_exam td {background:#fff; text-align:left; padding:16px 19px; border:1px solid #a9abad;} .table_exam tr.alt td {background:none;} .table_exam tr.over td {background:#f2f2f2;} .table_exam tr:nth-child(2n+1) td {background:none;} .table_exam tr.ovhov td {background:#dadada;} .table_exam .subject {text-align:left} /* =============================================== MENU ================================================*/ .menu_top {height:46px; margin-bottom:0px; background: url("/common/img/img_2013/backg_menu.jpg") no-repeat left top; position:relative; z-index:100;} .menu_top .menu1 { padding:15px 5px 0 5px; height:31px; display:block; text-align:center; font-size:14px; font-weight:bold; color:#fff; text-decoration:none; text-transform:uppercase; position:relative;} .GIA .menu_top {background: url("/common/img/img_2013/backg_menu_gia.jpg") no-repeat left top;} .menu_top .menu_m .sel:before { left:71%; bottom:-26px; content:"\2666"; font-family: monospace; font-size:50px; line-height:52px; text-align:center; position:absolute; overflow:hidden; -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select: none; user-select: none; clip: rect(26px, 15px, 38px, 0px); } .menu_top .menu_m_1 .sel:before {color:#d12636;} .menu_top .menu_m_2 .sel:before {color:#824267;} .menu_top .menu_m_3 .sel:before {color:#315f9b;} .menu_top .menu_m_4 .sel:before {color:#0e6bb0; left:50%;} .GIA .menu_top .menu_m_1 .sel:before {color:#ef2e1e;} .GIA .menu_top .menu_m_2 .sel:before {color:#f65911;} .GIA .menu_top .menu_m_3 .sel:before {color:#fb7508;} .GIA .menu_top .menu_m_4 .sel:before {color:#fd8403;} .menu_top .menu1:hover {color:#000; background:#f2f2f2;} .menu_top .hocl .menu1 {color:#000; background:#f2f2f2;} .menu_top .sel {/*background: url("/common/img/img_2013/menu_str.gif") no-repeat center top;*/} .menu_top .sel .st_treug {} .menu_top_left {width:190px; height:48px; float:left; } .menu_m {/*position:relative;*/} .menu_view {position:absolute; left:0px; top:46px; z-index:1000; background:#f2f2f2; padding:28px 31px 28px 31px; visibility:hidden; /*min-height:240px;*/ width:938px;} .menu_view_1 {width:260px; float:left; padding-right:10px; } .menu_view_2 {width:155px; padding-left:0; font-size:12px; line-height: 12px;} .menu_view_str {position:absolute; top:-11px; left:85px; background:url(/common/img/ege_new/menu_str_1.png) no-repeat left top; height:11px; width:25px; z-index:1100;} .menu_view a {text-decoration:underline; color:#303133;} .menu_view a:hover {color:#303133; text-decoration:none;} .menu_view .menu5 {font-size:12px; line-height: 12px;} .menu_view .menu5 a {display:block; padding:0px 0px 12px 0; color:#303133} .menu_view .menu5 a:hover {color:#303133;} .menu_view .menu5 a.sel_2ur {text-decoration:none; font-weight: bold;} .menu_view_tbl {border-collapse: separate; border-spacing: 0px 0px;} .menu_view_tbl .td1 {padding-right:10px; padding-left:0px;} .menu_view_tbl .td2 {padding-right:10px; padding-left:31px; border-left:1px solid #dadbdc;} .menu_view_tbl .td3 {padding-right:10px; padding-left:31px; border-left:1px solid #fff;} .menu_m_1 {} .menu_m_1 .menu1 {padding-left:31px; text-align:left;} .menu_m_2 {} .menu_m_2 .menu_view_str {left:0px;} .menu_m_3 {} .menu_m_3 .menu_view_str {left:0px;} .menu_m_3 .menu_view {left:0px;} @media all and (-webkit-min-device-pixel-ratio:0) { .menu_m_3 .menu_view {left:0px;} } .menu_m_4 {} .menu_m_4 .menu1 {padding-right:29px; text-align:right;} .menu_m_4 .menu_view {left:0px;} .menu_m_4 .menu_view_str {left:0px;} .menu_top_left .menu_view {width:935px;} .menu_top_left .menu_view .menu5 {width:320px;} #menu_view_forimg_3 {width:163px;} #menu_view_forimg_4 {width:163px;} .menu_top_right {width:739px; height:48px; float:right;} .menu_top_tbl {width:100%;} .menu_top_tbl .td_r {display:none;} .GIA .menu_top_tbl td {width:33%;} .GIA .menu_m_4 .menu1 {padding-left: 29px;} .GIA .menu_top .menu_m .sel:before {left: 60%;} .GIA .menu_top .menu_m_4 .sel:before {left:50%;} .menu_center {height:247px; margin-bottom:17px;} .menu_center_left {height:247px; width:471px; background:url(/common/img/ege_new/doska.jpg) no-repeat left top; float:left; position:relative;} .menu_center_r1 {height:120px; width:458px; background:url(/common/img/ege_new/ege_mat.jpg) no-repeat left top; float:right; margin-bottom:6px; cursor:pointer;} .menu_center_r2 {height:121px; width:458px; background:url(/common/img/ege_new/ege_rus.jpg) no-repeat left top; float:right; cursor:pointer;} .lnk_left_ege {height:117px; width:25px; background:url(/common/img/ege_new/lnk_arh.gif) no-repeat left top; display:block; position:fixed; top:34%; margin-top:-117px; left:0; -position: absolute; } .lnk_left_osoko {height:141px; width:25px; background:url(/common/img/ege_new/lnk_osoko.gif) no-repeat left top; display:block; position:fixed; top:34%; margin-top:9px; left:0; -position: absolute; } .vybr_razdel {border-bottom:1px solid #bec3d1; padding-bottom:8px; margin-bottom:10px; text-transform: uppercase; width:240px; margin-left:31px; font-weight: bold;} .vybr_razdel a {color:#3e3f41; text-decoration:none;} #second .second_cont_tbl_1 .menu_left {/*min-height:400px;*/} .menu_left {padding-left:0px; padding-bottom:40px;} .menu_left ul {padding:0; margin:0; list-style:none;} .menu_left ul li {padding:0 0 1px 0; margin:0; background:none; font-weight:normal; line-height:14px;} .menu_left ul a {color:#3e3f41; display:block; padding:11px 29px 10px 31px; text-decoration:none;width: 150px;} .menu_left ul li a:hover {background:#0071bb; color:#fff;} .menu_left ul a.sel_2_ur {background:#0071bb; color:#fff;} .menu_left ul li li {padding:1px 0 0px 20px; margin:0; background:none; font-weight:normal;} .menu_left ul a.sel_4_ur {background:#a3dc66; text-decoration:none; color:#1f262e; /*border-bottom:3px solid #a3dc66; border-top:2px solid #a3dc66;*/} .GIA .menu_left ul li a:hover {background:#ff8e00;} .GIA .menu_left ul a.sel_2_ur {background:#ff8e00;} .EGE .menu_left ul a.sel_2_ur, .EGE .menu_left ul a.sel_3_ur, .EGE .menu_left ul a.sel_4_ur, #wawes .active { background:#0071bb; color:#fff; } .EGE .menu_left ul a:hover { background:#0071bb; color:#fff; } /* pod menu */ .infa_main {width:100%;} .infa_main .infa_main_td1 {width:560px;} .infa_main .infa_main_td2 {width:440px;} .infa_mtd2_div {position:relative; width:440px; height:380px; background: url("/common/img/img_2013/infa_sprava.jpg") no-repeat left top; text-transform: uppercase; font-size:18px; font-family: calibri; font-weight: bold; line-height: 24px;} .infa_mtd2_div span {color:#ec1c24;} .infa_mtd2_div a {text-decoration:none; color:#303133;} .infa_mtd2_div a:hover {text-decoration:underline;} .infa_mtd2_div .infa_mtd2_d1 {position:absolute; left:0px; top:34px; padding:0px 22px; width:174px; text-align:right;} .infa_mtd2_div .infa_mtd2_d2 {position:absolute; right:0px; top:214px; padding:0px 22px; width:174px; text-align:left;} /* =============================================== NEWS ================================================*/ #anons_news {height:289px;} #anons_news2 {height:289px;} #news_tab, #news1_tab, #docs_tab, #docs1_tab, #mer_tab, #seminars_tab {position:relative;} #news1_tab, #docs1_tab { /*margin-bottom: 25px;*/ } .main_news {} .main_news_line {} .news_item_ov {overflow: hidden; height: 193px;} .main_news .news_item, .main_news1 .news1_item {width:186px; height:192px; padding:14px 16px; overflow: hidden; border:2px solid #babbbd; float:left; font-size:12px; color:#1f262d; margin-bottom:20px; margin-right:17px; border-radius:3px; position:relative;} .main_news .news_data, .main_news1 .news_data {display:inline-block; padding:2px 6px; padding:0px 0px 8px 0px;} .main_news .news_ttl, .main_news1 .news_ttl {padding:0 0px 6px 0px; line-height:18px;} .main_news .news_ttl a, .main_news1 .news_ttl a {} .main_news .news_ttl a:hover, .main_news1 .news_ttl a:hover {} .main_news .news_anons, .main_news1 .news_anons {padding:0 0px 0px 0px; line-height:18px;} .main_news .news_anons a, .main_news1 .news_anons a {color:#1f262d; text-decoration:none;} .main_news .news_anons a:hover, .main_news1 .news_anons a:hover {color:#353d45;} .main_mer_line {} .main_mer .news_item {width:186px; height:192px; padding:14px 16px; overflow: hidden; border:2px solid #babbbd; float:left; font-size:12px; color:#1f262d; margin-bottom:20px; margin-right:17px; border-radius:3px; position:relative;} .main_mer .news_data {display:inline-block; padding:2px 6px; padding:0px 0px 8px 0px;} .main_mer .news_ttl {padding:0 0px 6px 0px; line-height:18px;} .main_mer .news_ttl a {} .main_mer .news_ttl a:hover {} .main_mer .news_anons {padding:0 0px 0px 0px; line-height:18px;} .main_mer .news_anons a {color:#1f262d; text-decoration:none;} .main_mer .news_anons a:hover {color:#353d45;} /* старые .ikonki {background: url(/common/upload/img/file_html.gif) no-repeat; width:42px; float:left; height:42px; margin-left:-42px } .ikonki_doc, .ikonki_docx {background: url(/common/upload/img/file_doc.gif) no-repeat; width:42px; float:left; height:42px; margin-left:-42px } .ikonki_pdf, .ikonki_pdfx {background: url(/common/upload/img/file_pdf.gif) no-repeat; width:42px; float:left; height:42px; margin-left:-42px } .ikonki_ppt, .ikonki_pptx {background: url(/common/upload/img/file_ppt.gif) no-repeat; width:42px; float:left; height:42px; margin-left:-42px } .ikonki_html {background: url(/common/upload/img/file_html.gif) no-repeat; width:42px; float:left; height:42px; margin-left:-42px } .ikonki_xls, .ikonki_xlsx {background: url(/common/upload/img/file_xls.gif) no-repeat; width:42px; float:left; height:42px; margin-left:-42px } .main_news .news_item_docs {width:186px;} .main_news .news_item_docs .news_item_ov {padding-left:42px; height: 196px;} .main_news .news_item_docs .news_item_ov .news_ttl {padding-left:6px;} */ .ikonki {background: url(/common/img/img_2013/file_doc.png) no-repeat 0px 0px; width:24px; float:left; height:33px; margin-left:-24px; margin-top:10px; } .ikonki_doc, .ikonki_docx {background: url(/common/img/img_2013/file_doc.png) no-repeat 0px 0px; width:24px; float:left; height:33px; margin-left:-24px } .ikonki_pdf, .ikonki_pdfx {background: url(/common/img/img_2013/file_doc.png) no-repeat 0px -326px; width:24px; float:left; height:33px; margin-left:-24px } .ikonki_ppt, .ikonki_pptx {background: url(/common/img/img_2013/file_doc.png) no-repeat 0px -496px; width:24px; float:left; height:33px; margin-left:-24px } .ikonki_html {background: url(/common/img/img_2013/file_doc.png) no-repeat 0px -722px; width:24px; float:left; height:33px; margin-left:-24px } .ikonki_xls, .ikonki_xlsx {background: url(/common/img/img_2013/file_doc.png) no-repeat 0px -147px; width:24px; float:left; height:33px; margin-left:-24px } .main_news .news_item_docs {width:186px; padding-top:12px; height: 194px;} .main_news .news_item_docs .news_item_ov {padding-left:24px; height: 196px;} .main_news .news_item_docs .news_item_ov .news_ttl {padding-left:6px;} .main_news .news_item_docs .news_item_ov .news_anons {margin-left: -24px;} .doc_item1 {margin-left: 0px;} .doc_item2 {padding-left:35px} .main_news, .main_news1 { position: relative; /*leave this value alone*/ border: 0px solid black; overflow: scroll; /*leave this value alone*/ width: 942px; /*Width of Carousel Viewer itself*/ height: 250px; /*Height should enough to fit largest content's height*/ margin-left:0px; } #seminars_tab{ width: 478px; } #seminars_tab .main_news{ width: 478px; } .main_news .news_belt, .main_news1 .news1_belt{ position: absolute; /*leave this value alone*/ left: 0; top: 0; } .main_mer{ position: relative; /*leave this value alone*/ border: 0px solid black; overflow: scroll; /*leave this value alone*/ width: 942px; /*Width of Carousel Viewer itself*/ height: 250px; /*Height should enough to fit largest content's height*/ margin-left:0px; } .main_mer .mer_belt{ position: absolute; /*leave this value alone*/ left: 0; top: 0; } .main_news .main_news_line, .main_news1 .main_news1_line{ float: left; /*leave this value alone*/ overflow: hidden; /*clip content that go outside dimensions of holding panel DIV*/ margin: 0px; /*margin around each panel*/ width: 956px; /*Width of each panel holding each content. If removed, widths should be individually defined on each content DIV then. */ } .main_mer .main_mer_line{ float: left; /*leave this value alone*/ overflow: hidden; /*clip content that go outside dimensions of holding panel DIV*/ margin: 0px; /*margin around each panel*/ width: 956px; /*Width of each panel holding each content. If removed, widths should be individually defined on each content DIV then. */ } .docs_belt, .docs1_belt{ position: absolute; /*leave this value alone*/ left: 0; top: 0; } .main_docs_line, .main_docs1_line { float: left; /*leave this value alone*/ overflow: hidden; /*clip content that go outside dimensions of holding panel DIV*/ margin: 0px; /*margin around each panel*/ width: 956px; /*Width of each panel holding each content. If removed, widths should be individually defined on each content DIV then. */ } .grad_white {background:url(/common/img/ege_new/grad_white.png) repeat-x left bottom; height:30px; margin-top:-30px; position:relative; z-index:900;} .grad_white_min {background:url(/common/img/ege_new/grad_white.png) repeat-x left bottom; height:30px; bottom:0px; position:absolute; left:18px; width: 184px; display:none;} .main_news_all, .main_news1_all {position:absolute; bottom:0px; right:0px;} .main_news_all a, .main_news1_all a {/*background:url("/common/img/ege_new/rss_bg.gif") no-repeat right center;*/ padding-left:10px;} .main_news_all a.new_a_1, .main_news1_all a.new_a_1 {display:inline-block; padding-top:1px; float:right;} .main_news_all a.new_a_2, .main_news1_all a.new_a_2 {float:right;} .main_mer_all {position:absolute; bottom:0px; right:0px;} .main_mer_all a {padding-left:10px;} .main_mer_all a.new_a_1 {display:inline-block; padding-top:1px; float:right;} .main_mer_all a.new_a_2 {float:right;} #news-paginate {margin:0 auto; width:60px; height:10px;} #news-paginate img {margin:0px 2px 0px 3px; float:left;} #news1-paginate {margin:0 auto; width:60px; height:10px;} #news1-paginate img {margin:0px 2px 0px 3px; float:left;} #docs-paginate {margin:0 auto; width:60px; height:10px;} #docs-paginate img {margin:0px 2px 0px 3px; float:left;} #docs1-paginate {margin:0 auto; width:60px; height:10px;} #docs1-paginate img {margin:0px 2px 0px 3px; float:left;} #mer-paginate {margin:0 auto; width:60px; height:10px;} #mer-paginate img {margin:0px 2px 0px 3px; float:left;} .news-list {} .news-list .cl {padding-bottom:2em;} .news-list .news-date {font-size:12px;} .news-list .news-title {font-size:14px; line-height:normal;} /* */ .main_cont_tbl {background:#f2f2f2; width:100%; margin-bottom:30px;} .main_cont_tbl td {} .main_cont_tbl .main_cont_td_1 {padding-left:31px; padding-right:60px; padding-top:36px; padding-bottom:36px; width:320px;} .main_cont_tbl .main_cont_td_2 {padding-right:29px; padding-top:36px; padding-bottom:36px;} /* =============================================== VOTE ================================================*/ #op_tab {position:relative; } #op {} .main_vote_vote { position: relative; /*leave this value alone*/ border: 0px solid black; overflow: scroll; /*leave this value alone*/ width: 320px; /*Width of Carousel Viewer itself*/ height: 280px; /*Height should enough to fit largest content's height*/ } .op_belt{ position: absolute; /*leave this value alone*/ left: 0; top: 0; } .main_vote {width:320px;} .main_vote_block {padding:0px; width:320px;} .main_vote_block .bac_white {background:#fff; padding-top:20px;} .naz_opros {height:30px; font-size:14px; color:#303133; position:relative; font-weight:bold;} .kol_op_nav {position:absolute; top:-3px; right:35px; font-size:18px; font-weight:normal;} .kol_op_nav span {float: right;} .for_bloc_all {} .main_vote_block .bac_txt {background:#7da7d8; padding:16px 21px 12px 21px} .GIA .main_vote_block .bac_txt {background:#ffcd40;} .main_vote_block .div1 {color:#fff/*b2b2b2*/; text-align:center; background:url("/common/img/img_2013/backg_kol_prog.gif") no-repeat left center; font-style: italic;} .main_vote_block .div2 {float:left; color:#f6b61b; font-size:30px; font-weight:bold; line-height:30px; letter-spacing:-1px; padding-right:5px;} .main_vote_block .div3 {color:#62676c; font-size:12px; font-weight:; line-height:13px;} .main_vote_block .txt {line-height:18px; padding-bottom:10px; color:#ffffff;} .main_vote_block .btn1 {text-align:center;} .vote_vote_tbl {margin-bottom:20px; color:#949699; width:100%; background:#fff;} .vote_vote_tbl td {vertical-align: middle; padding:10px 0px;} .vote_vote_tbl .td1 {padding: 3px 16px 3px 21px; border-bottom:1px solid #e5e6e6; width:16px;} .vote_vote_tbl .td2 {padding-right:10px; border-bottom:1px solid #e5e6e6; text-align:left; line-height:14px;} .vote_vote_tbl .td2 label {cursor:pointer;} .vote_vote_tbl .td2 .vv_lab_sel {color:#303133} .vote_line {height: 12px; margin-right:5px; background:#EC1C24; /*background: url("/common/img/ege_new/line_vote_result.gif") repeat-x scroll 0 0 transparent;*/} .vote_prozent {margin-top:-13px} .main_vote_arh {padding-left:40px; font-size:13px;} .main_vote_arh a {color:#1F262D;} .main_vote_arh a:hover {text-decoration:none;} .vote_resultat {line-height:14px; font-size:12px;} .vote_resultat .td_res1 {padding-left:21px;} .vote_resultat .td_resl_l {padding-left:21px; padding-bottom:20px;} .krasn_knopka {color:#fff; background:#ec1c24; padding:14px 0px; width:100%; font-size:14px; line-height:14px; font-weight:block; text-align:center; text-transform: uppercase; border: none; box-shadow: none; outline: none; cursor:pointer; font-weight: bold;} .krasn_knopka:hover {background:#f04249;} .main_zad_vot {padding-top:16px;} .main_zad_vot .vote_zad_v {background: url("/common/img/img_2013/ico_zad_vote.gif") no-repeat left top; padding-left:26px; color:#3e3f41; display: inline-block; height: 17px;} .second_cont_tbl .main_vote_block {width:100%;} .second_cont_tbl .main_vote_block .div1 {background:none; text-align:left;} /* =============================================== VIDEO ================================================*/ .main_video {width:433px; float:left; margin-bottom:20px;} .main_video_block {margin:-5px 0 0 -3px;} /* =============================================== FORUM&BLOG ================================================*/ #forum_tab, #blog_tab {position:relative;} #main_block_2_body {padding-bottom:40px;} //.main_block_2 {width:478px; float:right;} .main_forum_block {} .main_forum_block .forum_item {color:#3e3f41; margin-bottom:16px; background:#fff; height:49px;} .forum_item_tab {width:100%;} .forum_item_tab .forum_item_t1 {width:49px; vertical-align: middle;} .forum_item_tab .forum_item_t2 { vertical-align: middle; background:url("/common/img/img_2013/ico_zad_vote.gif") no-repeat 484px -426px;} .main_forum_block .forum_data {display:block; width:49px; padding:6px 0px 0px 0px; background:#7da7d8; height:43px; color:#fff; text-align:center; font-size:18px; line-height: 16px; font-family: calibri; text-transform: lowercase;} .main_forum_block .forum_data span {font-size:24px; display:block; line-height: 20px; font-family: calibri;} .main_forum_block .forum_ttl {padding:0 40px 0px 15px; line-height:16px; max-height: 32px; overflow: hidden;} .main_forum_block .forum_ttl a {color:#1f262d; text-decoration:none;} .main_forum_block .forum_ttl a:hover {color:#1f262d; text-decoration:underline;} .main_forum_block .forum_name {padding:0 15px 0px 6px; color:#747474;} .GIA .main_forum_block .forum_data {background:#ffcd40} .main_forum_all {border-top:1px solid #ededed; padding-top:3px; margin:0px;} .main_forum_all .a1 {color:#1f262d; font-size:13px; text-decoration:none; background:none /*url(/common/img/ege_new/ico_forum.gif) no-repeat left 5px; padding-left:15px;*/} .main_forum_all .a1:hover {text-decoration:none;} #forum-paginate {float:right; padding-right:20px;} #forum-paginate img {margin-left:7px;} .main_blog_all {border-top:1px solid #ededed; padding-top:7px; margin:0 37px;} .main_blog_all .a1 {color:#1f262d; font-size:13px; text-decoration:none; background:url(/common/img/ege_new/ico_forum.gif) no-repeat left 5px; padding-left:15px;} .main_blog_all .a1:hover {text-decoration:none;} #blog-paginate {float:right; padding-right:20px;} #blog-paginate img {margin-left:7px;} .main_forum_block { position: relative; /*leave this value alone*/ border: 0px solid black; overflow: scroll; /*leave this value alone*/ width: 560px; /*Width of Carousel Viewer itself*/ height: 500px; /*Height should enough to fit largest content's height*/ margin-left:0px; } .main_forum_line { float: left; /*leave this value alone*/ overflow: hidden; /*clip content that go outside dimensions of holding panel DIV*/ margin: 0px; /*margin around each panel*/ width: 560px; /*Width of each panel holding each content. If removed, widths should be individually defined on each content DIV then. */ } .forum_belt { position: absolute; /*leave this value alone*/ left: 0; top: 0; } .forum_i_tii {height:30px; font-size:14px; color:#303133; position:relative; font-weight:bold; text-transform: uppercase;} .krasn_blue {font-weight: bold; text-decoration:none; display:inline-block; color:#fff; background:#0071bb; padding:14px 0px; width:100%; font-size:14px; line-height:14px; font-weight:block; text-align:center; text-transform: uppercase; border: none; box-shadow: none; outline: none; cursor:pointer;} .krasn_blue:hover {background:#1989d3;} .GIA .krasn_blue {background:#ff8e00;} .GIA .krasn_blue:hover {background:#fca12f;} .main_forum_all .krasn_blue {color:#fff;} .main_forum_all .per_for_blog {background: url("/common/img/img_2013/ico_zad_vote.gif") no-repeat left -179px; padding-left:26px; color:#3e3f41; display: inline-block; height: 17px; margin-top:16px;} /* =============================================== BAN================================================*/ .main_lnk_tbl {width:100%; background:#f2f2f2; font-family: calibri;} .main_lnk_tbl .td0 {width:40px;} .main_lnk_tbl .td1 {width:177px; text-align:center; padding-top:18px; padding-bottom:28px;} .main_lnk_tbl .td1 a {display:inline-block; padding-top:52px; text-decoration:none; color:#949699;} .main_lnk_tbl .td1 a span {font-weight:bold; display:block; text-transform: uppercase; color:#3e3f41;} .main_lnk_tbl .td1 a:hover {color:#399fe1;} .main_lnk_tbl .td1 a:hover span {color:#0071BB;} .main_lnk_tbl .td1 .ic_st_s1 {background: url("/common/img/img_2013/storon_site_ico.gif") no-repeat 57px 2px;} .main_lnk_tbl .td1 .ic_st_s2 {background: url("/common/img/img_2013/storon_site_ico.gif") no-repeat -127px 2px;} .main_lnk_tbl .td1 .ic_st_s3 {background: url("/common/img/img_2013/storon_site_ico.gif") no-repeat -314px 2px;} .main_lnk_tbl .td1 .ic_st_s4 {background: url("/common/img/img_2013/storon_site_ico.gif") no-repeat -504px 2px;} .main_lnk_tbl .td1 .ic_st_s5 {background: url("/common/img/img_2013/storon_site_ico.gif") no-repeat -706px 2px;} #second .main_lnk_tbl td {border-top:1px solid #b4b8c3;} /* =============================================== BAN================================================*/ /* black .client_top {position:absolute; left:706px; top:0px; border-left:1px solid #57595c; border-right:1px solid #57595c; padding-top:12px; padding-left:19px; width:72px; height:26px;} .client_top_enter {font-size:12px;} .client_top_enter a.a1 {text-decoration:none; color:#e5e5e5; cursor:pointer; padding-left:23px; background: url("/common/img/img_2013/ico_top_mb.jpg") no-repeat left -71px;} .client_top_enter a.a1:hover {border-bottom:none; color:#fff;} */ .client_top {position:absolute; left:564px; top:0px; padding-top:12px; padding-left:19px; width:72px; height:26px;} .client_top_enter {font-size:12px;} .client_top_enter a.a1 {text-decoration:underline; color:#303133; cursor:pointer; padding-left:23px; background: url("/common/img/img_2013/ico_socseti_gia.jpg") no-repeat left top;} .client_top_enter a.a1:hover {border-bottom:none; text-decoration:none; color:#303133;} .sub-links {padding-top:4px} .sub-links a {color:#000; text-decoration:none;} /**/.client_top_bl {position:absolute; background:#f2f1ed; padding:0px; box-shadow:0px 3px 6px #939393; width:261px; height:134px; z-index:1000; right:-147px; top:38px; display:none;} .client_top_bl a {color:#1f262d; text-decoration:none;} .client_top_bl a:hover {text-decoration:underline;} /**/.client_top_bl_str {position:absolute; top:-9px; right:175px; background:url(/common/img/img_2013/menu_str_1b.gif) no-repeat left top; height:9px; width:9px; z-index:1100; display:block !important;} .client_top_bl .div1 {font:14px; font-weight:bold; float:left; padding-bottom:7px;} .client_top_bl .div2 {float:right; padding-top:3px; padding-right:5px;} .client_top_bl .inp1 {border:1px solid #c3c3c3; border-top:1px solid #7c7c7c; padding:3px 5px; color:#a3a4a5; width:127px; font:11px/normal arial; background:#fff; margin-right:8px;} .client_top_bl .inp2 {border:1px solid #c3c3c3; border-top:1px solid #7c7c7c; padding:3px 5px 3px 19px; color:#a3a4a5; width:109px; font:11px/normal arial; background:#fff url(/common/img/ege_new/zamok.gif) no-repeat 5px 4px; margin-bottom:5px;} .client_top_bl .btn1 {background:url(/common/img/ege_new/btn_enter.png) no-repeat left top; width:67px; height:29px; padding-bottom:5px; font:11px Trebuchet MS; font-weight:bold; border:none; cursor:pointer; color:#5b5b5b; margin-right:-5px;} .client_top_bl .div5 {font:12px Trebuchet MS; font-weight:bold; } .client_top_bl .div5 span {font-size:16px; line-height:16px;} .client_top_bl .div5 span {font-size:16px; line-height:16px;} .client_top_bl .client_top_b_red {color:red; padding-left: 4px; padding-top: 4px; font-size: 12px;} .client_top_bl .inp_eror_bor_aut {border: 1px solid red;} /* .soc_ico {display: inline-block; border:1px solid #fff; padding-left:24px; padding-top:4px; padding-bottom:5px; padding-right:6px; font-size:11px; font-family: trebuchet MS;} .soc_ico a {color:#1F262D !important; text-decoration:none !important;} .soc_ico:hover {border:1px solid #bcbcbc; color:#1F262D !important; text-decoration:none !important;} .soc1 {background:url("/common/img/ege_new/ico_f.gif") no-repeat 3px 3px;} .soc1:hover {background:url("/common/img/ege_new/ico_f.gif") no-repeat 3px 3px #fff;} .soc2 {background:url("/common/img/ege_new/ico_t.gif") no-repeat 3px 3px;} .soc2:hover {background:url("/common/img/ege_new/ico_t.gif") no-repeat 3px 3px #fff;} .soc3 {background:url("/common/img/ege_new/ico_g.gif") no-repeat 3px 3px;} .soc3:hover {background:url("/common/img/ege_new/ico_g.gif") no-repeat 3px 3px #fff;} .soc4 {background:url("/common/img/ege_new/ico_yt.gif") no-repeat 3px 3px;} .soc4:hover {background:url("/common/img/ege_new/ico_yt.gif") no-repeat 3px 3px #fff;} .soc6 {background:url("/common/img/ege_new/ico_b.gif") no-repeat 3px 3px;} .soc6:hover {background:url("/common/img/ege_new/ico_b.gif") no-repeat 3px 3px #fff;} */ .soc_ico2 {display:block; width:24px; height:24px; margin-right:14px; float:left; } .soc1 {background: url("/common/img/img_2013/ico_soc_snew2.gif") no-repeat 0px -2px;} .soc2 {background: url("/common/img/img_2013/ico_soc_snew2.gif") no-repeat -38px -2px;} .soc3 {background: url("/common/img/img_2013/ico_soc_snew2.gif") no-repeat -75px -2px; width:26px; height:25px;} .soc5 {background: url("/common/img/img_2013/ico_soc_snew2.gif") no-repeat -115px -2px;} .soc1:hover {background: url("/common/img/img_2013/ico_soc_snew2.gif") no-repeat 0px -36px;} .soc2:hover {background: url("/common/img/img_2013/ico_soc_snew2.gif") no-repeat -38px -36px;} .soc3:hover {background: url("/common/img/img_2013/ico_soc_snew2.gif") no-repeat -75px -36px;} .soc5:hover {background: url("/common/img/img_2013/ico_soc_snew2.gif") no-repeat -115px -36px;} .soc_ico3 {display:block; width:32px; height:25px; float:left;} .soc7 { border: 1px solid #fefffe; padding: 4px; } .soc7:hover {background:#fff} .soc7 img { diplay: inline-block; margin-right: 4px; } /**/.main_top_1_in {text-align:center;} /**/.main_top_1_in .div1a_vh {font-weight:bold; font-size:14px; background:#0071bb; height:32px; color:#fff; text-transform: uppercase; padding-top:16px;} /**/.main_top_1_in .div1a { font-size:14px; padding: 13px 0px 0px 0px; height:24px; width:259px; border-left:1px solid #949699; border-right:1px solid #949699;} /**/.main_top_1_in .div1a a { display: inline-block; float: right; font-size:11px; line-height: 19px; } .soc_lan_button_out {position:absolute; right: 4px; top: 87px;} .tblink { width: auto; margin-left: 4px; font-size: 11px; color: #a9aaab; padding: 2px 6px; border-radius: 0; } .td3 .tblink { width: 114px; background: #fff url("/common/img/ege_new/author_social.gif") 6px 50% no-repeat; padding-left: 17px; } .auth_tbl { } .auth_tbl td { font-family: trebuchet MS; width: 50% !important; } .auth_tbl td.splitter { height: 6px; } .auth_tbl .td4 { line-height: 19px; } .auth_tbl .td4 a span { font-weight: 900 !important; } .auth_tbl .td4 span.plus { font-size: 15px; padding-top: 4px; position: relative; margin-left: -7px; top: 1px; } .auth_tbl .td4 a:hover { text-decoration:none; font-weight: 900 !important; } .auth_tbl .td5 { text-align: right; } .btn_blue { border: none; width: 65px; height: 29px; font-size: 11px; color: #5b5c5b; background: url("/common/img/ege_new/btn_blue.png") 0 0 no-repeat; cursor: pointer; } #vote_tab { padding: 0px; } .div2a { margin-top: 6px; padding-top: 6px; background: url("/common/img/ege_new/autorize-split.png") 0 0 repeat-x; } /**/.main_top_1 .div2a { margin-top: 0px; height:42px; padding-left:60px; width:199px; border-left:1px solid #949699; border-bottom:1px solid #949699; border-right:1px solid #949699;} /**/.main_top_1 .div2a_s {padding-left:10px; padding-right:70px; width:179px;} /**/.main_top_1 .div2a_s a {float:left; display: block; font-size: 16px; padding-top: 2px;} /**/.main_top_1 .div2a_s .soc_lan_button_out {padding-top: 1px;} .div2a .authorize { margin-bottom: 10px; font-size: 14px; font-weight: 900; } .main_top_1 .div2a .authorize { font-size: 14px; font-family: trebuchet MS; } .inline_vote{ border-color:#ffff !important;} .reg_tbl .td2 { padding-bottom: 22px; } .reg_tbl .td1 { padding-top: 4px; font-size: 18px; width: 210px; } .reg_tbl .td2 input, .reg_tbl .td2 select { width:385px; padding: 3px 6px 4px 6px; border-radius: 6px; border: 2px solid #dbddde; font-family: trebuchet MS; background: url("/common/img/ege_new/field-bckgr.jpg") 0 0 repeat-x; } .reg_tbl .td2 select { width:400px; padding-bottom: 2px; } .reg_tbl .td2 .new_st_kn {width: auto; border-radius:0px; min-width: 64px; font-weight: bold; text-decoration:none; display:inline-block; color:#303133; background:#f2f2f2; padding:12px 40px; font-size:12px; line-height:14px; font-weight:block; text-align:center; text-transform: uppercase; border: none; box-shadow: none; outline: none; cursor:pointer;} .reg_tbl .td2 .new_st_kn:hover {background:#0071bb; color:#fff;} /*.reg_tbl .td2 #post { width: 216px; height: 44px; background: url("/common/img/ege_new/lets-reg.jpg") 0 0 no-repeat; border: none; cursor: pointer; }*/ .reg_tbl .td2 .post22 { background: url("/common/img/ege_new/buttom_save_izmen.gif") 0 0 no-repeat !important;} #bch_pass { width: 177px; height: 38px; color: #656565; text-transform: uppercase; background: url("/common/img/ege_new/change_pass.jpg") 0 0 no-repeat; border: none; cursor: pointer; } #set-new-appil .border p { width: 182px; margin: 4px 15px 0px 0; padding: 0; display: inline-block; } #set-new-appil input, #set-new-appil select { width: 100%; background-color: #f5f6f8; border: 2px solid #e5e5e5; border-radius: 0px; } #set-new-appil .checkbox { display: inline; } #set-new-appil .border p.half { width: 47%; } #set-new-appil .border p.half select option { line-height: 14px; } #set-new-appil span { font-size: 12px; } #set-new-appil span.red { color: #e92444; } .appil_but { display: block !important; float: left; } input.appil_save_but { border: none !important; background-color: none !important; background: url("/common/img/apil-save.jpg") no-repeat left top; height: 44px !important; width: 134px !important; cursor: pointer; margin-right: 17px;} .appil_save_but:hover { background: url("/common/img/apil-save.jpg") no-repeat left bottom;} .appil_back_but { float: right; border: none !important; background-color: none !important; background: url("/common/img/apil-back.jpg") no-repeat left top; height: 44px !important; width: 107px !important; cursor: pointer;} .appil_back_but:hover { background: url("/common/img/apil-back.jpg") no-repeat left bottom;} .appil_print_but { border: none !important; background-color: none !important; background: url("/common/img/apil-print.jpg") no-repeat left top; height: 44px !important; width: 107px !important; cursor: pointer;} .appil_print_but:hover { background: url("/common/img/apil-print.jpg") no-repeat left bottom;} #block_change_pass { margin-top: 10px; } #block_change_pass .reg_tbl .td1 { font-size: 14px; } #block_change_pass .reg_tbl .td2 input, .reg_tbl .td2 select { width:255px; } #cboxClose {right: 9px !important; top: 9px !important;} #cboxMiddleRight {display:none !important;} #cboxTopRight {display:none !important;} #cboxTopLeft {display:none !important;} #cboxTopCenter {display:none !important;} #cboxMiddleLeft {display:none !important;} #cboxBottomLeft {display:none !important;} #cboxBottomCenter {display:none !important;} #cboxBottomLeft {display:none !important;} #cboxContent { padding-top:10px !important; border-radius:0px !important;} #inline_content {padding:58px; padding-top:34px; padding-bottom:0px; background:#fff; font-size:14px; width:810px; height:auto;} .banner {/*border-radius: 10px; overflow: hidden;*/ margin: 4px 0 30px 31px;} /* =============================================== SLIDER ================================================*/ ul.slider {list-style:none; padding:0 0 10px 0px;} ul.slider li {padding:0 0 15px 0px; background:none;} ul.slider li .a_first {background:url(/common/img/img_2013/slider_str.gif) no-repeat 97% 21px #f2f2f2; color:#303133; text-decoration:none; font-weight:bold; text-transform:uppercase; padding:17px 40px 17px 20px; display:block;} .GIA ul.slider li .a_first {background:url(/common/img/img_2013/slider_str.gif) no-repeat 97% 21px #f2f2f2;} ul.slider li.activ .a_first {background:url(/common/img/img_2013/slider_str.gif) no-repeat 97% -97px #0071bb; color:#fff;} .GIA ul.slider li.activ .a_first {background:url(/common/img/img_2013/slider_str.gif) no-repeat 97% -97px #ff8e00;} ul.slider p {padding-bottom:0px;} .slider_div {background:#f2f2f2; padding:26px 20px 40px 20px; margin-bottom:0px;} ul.slider li ul {list-style:none; padding:0 0 7px 10px;} ul.slider li ul li {padding:0 0 5px 20px; background:url(/common/img/bul_2.gif) no-repeat left 5px;} /* =============================================== LIST ================================================*/ .list_links {} .list_links .div1 {position:absolute; left:105px; top:18px; width:245px; height:65px;} .list_links a .div1{background:none; display:block; } .list_links a:hover .div1{background:url("/common/img/ege_new/doska_menu_ege.gif") no-repeat left top} .list_links .div2 {position:absolute; left:47px; top:62px; width:253px; height:67px;} .list_links a .div2{background:none; display:block; } .list_links a:hover .div2{background:url("/common/img/ege_new/doska_menu_rasp.gif") no-repeat 53px top} .list_links .div3 {position:absolute; left:113px; top:118px; width:290px; height:50px;} .list_links a .div3{background:none; display:block; } .list_links a:hover .div3{background:url("/common/img/ege_new/doska_menu_consult.gif") no-repeat left top} .list_links .div4 {position:absolute; left:51px; top:155px; width:296px; height:70px;} .list_links a .div4{background:none; display:block; } .list_links a:hover .div4{background:url("/common/img/ege_new/doska_menu_vote.gif") no-repeat 46px top} /* =============================================== Regions ================================================*/ a.regions {color: #0071bb; position:absolute; left:31px; width: 80px; text-align: left; top:14px; font-size:12px; display:inline-block; text-decoration:underline; /*background: url("/common/img/img_2013/str_blue2.gif") no-repeat right 4px;*/ line-height: 12px;} a.regions:hover {color:#0071bb; text-decoration:none;} /* =============================================== Navigation ================================================*/ .page-num {padding-top:10px; height:40px;} .page-num .nums {float:left; padding-right: 4px;} .page-num .nums a {display:inline-block; padding:3px 7px;} .page-num .nums a:hover {background:#1989d3; color:#fff;} .page-num .nums span {display:inline-block; padding:3px 6px; background:#0071BB; color:#fff;} /* =============================================== Search ================================================*/ .search_top {padding-bottom:20px;} .search_top .inp {width: 350px; float:left; margin-right:10px;} .mt_left_item {padding-bottom:10px;} /* =============================================== main_feedback ================================================*/ .main_feedback {} .main_feedback .div12 {float:left; padding:0 20px 15px 0; width:350px;} .main_feedback .div1 {padding-bottom:5px;} .main_feedback .div2 .inp {width:320px;} .main_feedback .div2 .sel_cont {width:340px; padding-right:3px;} .main_feedback .div2 .tarea1 {width:693px; min-height:295px} .item_quest {background:none; font-size:14px; height:auto; padding: 34px 0 0 90px; width:810px;} .attach_txt {font:11px arial; color:#747474; padding-right:110px} .attach_button {float:left; padding-right:10px} /* =============================================== creative ================================================*/ .creative {position:fixed; bottom:0; width:100%; z-index:1000;} .creat_1 {border-top:1px solid #93e739; border-bottom:1px solid #489e1c; background:#74c82d; height:1px; position:relative; cursor:pointer;} .creat_1 .div1 {width:52px; height:17px; background:url(/common/img/ege_new/str_top_5.png) no-repeat left top; position:absolute; bottom:2px; left:50%; margin-left:-26px;} .creat_1 .div2 {background:url(/common/img/ege_new/str_top_6.png) no-repeat left top;} .creat_2 {height:595px; display:none; background:#000; position:relative; -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=65)"; filter: alpha(opacity=65); opacity: 0.65; } .creat_3 {height:504px; width:933px; background:url(/common/img/ege_new/creative_img1.png) no-repeat center center; position:absolute; top:40px; left:50%; margin-left:-467px; } .creat_3 .btn1 {height:69px; width:165px; background:url(/common/img/ege_new/creative_btn1.png) no-repeat left top; position:absolute; top:292px; left:298px;} .creat_3 .btn1:hover {background:url(/common/img/ege_new/creative_btn1a.png) no-repeat left top;} .creat_3 .btn2 {height:69px; width:165px; background:url(/common/img/ege_new/creative_btn2.png) no-repeat left top; position:absolute; top:292px; left:473px;} .creat_3 .btn2:hover {background:url(/common/img/ege_new/creative_btn2a.png) no-repeat left top;} .creat_3 .creat_close {background:url("images/close.png") no-repeat center center; height:25px; width:25px; position:absolute; top:10px; right:10px; z-index:1010;} .creat_4 {background:url(/common/img/ege_new/creative_img2.png) no-repeat center center;} .creat_4 .btn1 {display:none;} .creat_4 .btn2 {display:none;} .creat_4 .creat_close {top:20px;} .creat_5 {background:url(/common/img/ege_new/creative_img3.png) no-repeat center center;} .creat_5 .btn1 {display:none;} .creat_5 .btn2 {display:none;} .creat_5 .creat_close {top:10px;} .but_main {} .EGE .client_top .client_top_enter a{} #print a{color:#000; text-decoration:none; cursor:inherit;} #print .main_top {background:none; padding-bottom: 20px;} #print #content, #print #footer {width:940px; padding-left:31px; padding-right:29px;} #print .logo_new {background: url("/common/img/img_2013/logo_print.gif") no-repeat 0px 45px;} #print .logo_new .logo_text {left:169px} #print .slider a{font-weight:bold; font-size:14px;} #print #footer a{color: #747474; text-decoration:none; cursor:inherit;} #print #footer .div_right{display:none} #print #footer .fot_line {display:none;} #print .print_line {float:right; width:240px; padding:45px 15px 0 0} #print .print_line a{font:15px arial} #print .print_line a:hover{text-decoration:underline; cursor:pointer} #print .print_line .print_up{float:left;} #print .print_line .print_up a{float:left; background:url(/common/img/ege_new/print.gif) no-repeat left top; padding:2px 0 0 25px } #print .print_line .close_up{float:right; padding:2px 0 0 0px} #print #footer {border-top: 1px solid #000; background:none;} #print #footer .div1 {color: #000000;} #print .table_block {background:none; border-radius:0px; margin-bottom: 15px; padding:0px;} #print .table th {background:#d0d0d0; font-size: 12px;} #print .ege_rezult_b_nb .td3nm {text-align: center;} #print #footer .new_st_kn2 {background: #CCCCCC; color:#fff;} #print #footer .new_st_kn2:hover {background: #CCCCCC; color:#fff; cursor: inherit;} #print .main_lnk_tbl {display:none;} #print.GIA .logo_new {background: url("/common/img/img_2013/logo_gia_print.gif") no-repeat 0px 45px;} #print.GIA .logo_new .logo_text {left: 210px;} .yellow {color:#e2b322 !important;} .content .link_doc {background:url(/common/img/ico_word.gif) no-repeat left top; padding: 5px 0 0 30px;} .result_page {padding-top:0px; position:absolute; left: 0; top: 320px;} .result_page .img_exam {float:left; padding:0 30px 10px 0} .result_page .tit_exam{font:24px arial; color:#1f262d; padding:0px 0 10px 0 } .result_page .link_exam a {font:17px;} .head_tt2nm_pos {position:relative;} h1.head_tt2nm {border-bottom:1px solid #e3e3e3; padding-bottom:7px; margin-bottom:12px;} .result_page2nm {padding-top:0px; position:absolute; right: 0px !important; left: auto; top: -5px;} .result_page2nm .img_exam {float:left; padding:0 30px 10px 0} .result_page2nm .tit_exam{font:24px arial; color:#1f262d; padding:0px 0 10px 0 } .result_page2nm .link_exam a{font:17px arial; color:#469b1b} .infa_rzo_div {border:1px solid #DAE1F7; background:#F2F2F2; padding:10px 10px; position:relative; margin-bottom: 20px; min-height:13px} .infa_rzo_div_tel {position:absolute; top:-1px; right:-1px; color:#5f4141; font-size:12px; background:url(/common/img/backgr_tel_rzo.png) no-repeat left top; width:240px; line-height: 12px; padding:2px 0px; text-align:center; height:29px;} .infa_rzo_div_tel span {display:block; color:#d64747; font-size:14px; font-weight: bold; padding-top: 3px;} .infa_rzo_div_tit {color:#d64747; font-size:14px; padding-bottom:10px; line-height: 14px; font-weight: bold;} .infa_rzo_div_text {color:#1b1d1b; font-size:12px; line-height: 16px;} .infa_rzo_div1 .infa_rzo_div_tel {display:none} .infa_rzo_div2 {border:none; background:none;} .infa_rzo_div2 .infa_rzo_div_tit {display:none} .infa_rzo_div2 .infa_rzo_div_text {display:none} .infa_rzo_div3 {display:none} .check_res {width:100%} .check_res .check_left {width:170px; vertical-align: middle; font:21px; color:#1f262d; padding-right:10px} .check_res .check_right {padding:10px 0px; width: 390px;} .check_res .check_right input{ /*height:25px; */ font-size: 24px; width:448px; border:1px solid #c7c8ca;/*#dfe0e0; */ padding:1px 5px; /*border-radius: 8px;*/ background: #f7f8f8; } .check_res .check_right input#login_code, .check_res .check_right input#login_doc_number{ width:175px; } .fields_2{ width:460px; } .fields_2 .fields_td{ width:175px; vertical-align: bottom; text-align: left; } .fields_2 .delimeter { text-align: center; vertical-align: middle; text-transform: uppercase; color: #6d6e71; font-weight: bold; font-size: 22px; } .field_label{ font-size: 15px; color: #6d6e71; padding-bottom: 10px; } .check_res .check_right input.auth_submit{ float: right; color: #f3f3f4; background: #727376; text-transform: capitalize; width: auto; padding: 5px 10px; font-size: 30px; cursor: pointer; } .check_res .check_right input.auth_submit:hover{ background: #828386; } /*.check_res .check_right input#login_doc_number{ float: right; margin-right: 26px; }*/ .check_res .check_right select{ padding: 3px 5px; width: 460px; border:1px solid #dfe0e0; /*border-radius: 8px;*/ background: #f7f8f8; font:16px arial; color:#242525; font-size: 14px; } .check_res .chek16 {padding-top: 14px;} #divvote16 {padding: 10px;width: 550px;} .hiddenvote16 {display: none;position: relative;} .check_res16 {} .check_res16 .check_res {width: 550px;} .check_res16 .check_left {padding-left: 30px;} .label16 {font-size: 20px;padding-bottom: 15px;} .btn_kod16 {font-size: 15px; height: 44px; width: 228px;} .getkod16 {padding-left: 170px;padding-top: 10px;padding-bottom: 30px;} .txt_kod16 {font-size: 15px;padding-left: 115px;padding-bottom: 15px;} .txt_kod16 .txt16_2 {color: red; font-weight: bold;} .txt_dang {font-style: italic;font-size: 12px;padding-left: 30px;padding-right: 30px;} .borderkod16 {border: 1px solid #ccc; padding-bottom: 15px;} .check_res16 .check_right {width: 200px;} .check_res16 .check_left {width: 100px;} .look { background: url("/common/img/look_but.gif") no-repeat left bottom; float: right; height: 44px; margin: 15px 104px 0 0; width: 147px; } .look:hover { background: url("/common/img/look_but.gif") no-repeat left top; float: right; height: 44px; margin: 15px 104px 0 0; width: 147px; cursor:pointer; } .look2nm {float: left; margin: 15px 104px 0px 160px;} .look2nm:hover {float: left; margin: 15px 104px 0px 160px;} .look4nm {float: left; margin: 15px 104px 0px 182px;} .look4nm:hover {float: left; margin: 15px 104px 0px 182px;} /* карты округов */ #tooltip { background: #ec1c24; position: absolute; z-index: 3000; color:#fff !important; padding: 11px 14px; font-size:14px; /*height:14px;*/ /*overflow:hidden;*/ box-shadow: none; } #tooltip .url {display:none !important;} #tooltip:before { left:135px; bottom:-26px; content:"\2666"; font-family: monospace; font-size:50px; line-height:52px; text-align:center; position:absolute; overflow:hidden; -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select: none; user-select: none; clip: rect(26px, 15px, 38px, 0px); color:#ec1c24; } #tooltip h3 { color:#fff !important; font-size:14px; padding:0px; font-family: verdana; line-height: 14px; } .none_reg_d { display:none !important; } /* карты округов */ .karta_russia { padding-top:10px; padding-left:95px; BACKGROUND: #fff; } .maps div { background: url(/common/upload/img/bg_maps.png); width: 640px; height: 320px; margin-bottom: 20px; } .maps table { width: 630px; } .maps table td { padding: 0 12px; border: 0; } .maps h2 { margin: 9px 0 4px 0; font-weight: bold; } .maps p { margin: 0 0 14px 0; } /* /карты округов */ /* регионы */ .regions table td { border: 0; } .regions div { margin-bottom: 25px; } .regions td { width: 200px; } .regions p { margin: 0 0 7px 0; } /* /регионы */ /* форма обратной связи */ .form table td { border: 0; padding: 5px 10px 0 10px; } .form { background-color: #e5e5e5; margin-bottom: 15px; padding: 9px 20px 24px 24px; } .form td { padding: 5px 10px 0 10px; } .form td span { display: block; margin-top: 5px; } .form .inp { width: 500px; font: 100% Arial, sans-serif; padding: 3px; } .form .ta { width: 500px; font: 100% Arial, sans-serif; padding: 3px; } .form .sel { font: 100% Arial, sans-serif; padding: 3px; } /* /форма обратной связи */ /* карта */ .terr { position: absolute; margin: 0 0 0 25px; } #regions { width:570px; background:url(/common/img/russia.gif) no-repeat; margin-left: 5px; } #russia { width:570px; background:url(/common/img/act.gif) no-repeat; } .map { background-position: 3000px 0 !important; } .o-sz { background-position: 0px 1px !important; -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter: alpha(opacity=80); opacity: 0.8; } .o-c { background-position: -2140px -1px !important; -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter: alpha(opacity=80); opacity: 0.8; } .o-p { background-position: -2656px 4px !important; -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter: alpha(opacity=80); opacity: 0.8; } .o-y { background-position: -3234px 1px !important; -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter: alpha(opacity=80); opacity: 0.8; } .o-k { background-position: -3805px 0 !important; -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter: alpha(opacity=80); opacity: 0.8; } .o-s { background-position: -1049px 2px !important; -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter: alpha(opacity=80); opacity: 0.8; } .o-u { background-position: -525px 1px !important; -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter: alpha(opacity=80); opacity: 0.8; } .o-d { background-position: -1573px -2px !important; -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter: alpha(opacity=80); opacity: 0.8; } #cluetip-close img { border: 0; display:none } #cluetip-title { overflow: hidden; text-align:center; } #cluetip-title #cluetip-close { float: right; position: relative; } #cluetip-extra { display: none; } .cluetip-default { background: #fff; opacity: 1; filter: alpha(opacity=100); border-radius: 15px; -moz-border-radius: 15px; -webkit-border-radius: 15px; -khtml-border-radius: 15px; width: 600px !important; left:100px !important; } .cluetip-default li { padding:5px 0 } .cluetip-default #cluetip-outer { position: relative; margin: 0; height:380px !important; padding-left:0px; } .cluetip-default h3#cluetip-title { padding-bottom:24px; font-size: 24px; font-weight: bold; color: #303133; text-transform: uppercase; } .cluetip-default #cluetip-title a { font-size: 14px; } .cluetip-default #cluetip-inner { padding: 0; font-size: 12px; line-height: 14px; } .cluetip-default #cluetip-inner a { color:#303133; font:14px; text-decoration:underline; } .cluetip-default #cluetip-inner a:hover { color:#0772ba; text-decoration:underline; } .cluetip-default div#cluetip-close { text-align: right; margin: 0 5px 5px 0; } .cluetip-default #cluetip-inner table { margin-left: 0px !important; } .cluetip-default #cluetip-inner table td { width: 300px !important; padding-right: 0px; } .cluetip-default #cluetip-inner table td ul { margin: 0; padding:0; } .cluetip-default #cluetip-inner table td ul li { margin: 0; padding:0px; background:0; font-size:14px; line-height:16px; } .cluetip-default #cluetip-inner table td ul li a {padding:4px 0px 5px 18px; background:0; background:none; display:inline-block;} .cluetip-default #cluetip-inner table td ul li a:hover {background:url(/common/img/img_2013/regions_li_ege.gif) no-repeat left 5px;} /* /карта */ /*=================================== login ===============================*/ .login_worker{} .login_worker .td1{width:150px; font-size:21px; padding-top:6px; padding-bottom:22px;} .login_worker .td2 input{width:391px; border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:5px} .login_worker .td2 select{width:405px; border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:5px;} .login_worker .login_worker_bottom {background:url("/common/img/login_worker_submit.gif") no-repeat left top; border: none; height: 44px; width: 95px; cursor:pointer} .login_worker .login_worker_bottom:hover {background:url("/common/img/login_worker_submit.gif") no-repeat left bottom;} /*============================== appil ====================================*/ .poisk_appil {font-size:14px; margin-bottom:18px} .poisk_appil .td1{width:50px; padding-top:9px; padding-left:100px} .poisk_appil .td2 input{border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:5px; width:200px; margin-top: 3px; color:#000;} .poisk_appil .td3 select{border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:4px; width:200px; margin-left:10px; margin-top: 3px; color:#000;} .poisk_appil .login_worker_poisk{background:url("/common/img/login_worker_poisk2.png") no-repeat left top; border: none; height: 38px; width: 86px; cursor:pointer; margin-left:10px;} .appil_resultat {width:100%; /*text-align:center;*/} .appil_resultat th{background:#dae1f7; padding:11px 19px 11px 19px; border:1px solid #a9abad; font-weight: normal; text-align:center;} .appil_resultat .th1{ padding: 6px 15px 15px;} .appil_resultat td{background:#fff; text-align:left; padding:10px 19px; border:1px solid #a9abad; text-align:center;} .appil_resultat td.td1nm_kriter, .appil_resultat td.td2nm_kriter, .appil_resultat td.td3nm_kriter{ padding: 5px 5px; height: auto; border-top: 0; border-bottom: 0; } .appil_resultat td.td2nm, .appil_resultat td.td3nm, .appil_resultat td.td1{ border-bottom: 0; } .ege_rezult_b .td3nm{ font-size: 15px; } .appil_resultat .alt th{ /*font-size: 15px;*/ font-weight: bold; } .appil_resultat .td_last{} .appil_resultat .appil_tab_a {padding:4px} .appil_resultat .appil_tab_a:hover {padding:3px; background:#fff; /*border-radius:5px;*/ text-decoration:none; border:1px solid #000} .poisk_appil_bottom td {padding-right:10px} .page_bottom_nums {width:100%} .page_bottom_nums .td2 img{padding-top:10px; right:0px; position: absolute;} .appil_table_block {/*background: #92e639; border-radius: 10px 10px 10px 10px; margin-bottom: 15px; padding: 6px 0;*/} .appil_prew {background:url("/common/img/appil_prew.png") no-repeat left top; width:95px; height:44px; display:block; cursor: pointer;} .appil_prew:hover {background:url("/common/img/appil_prew.png") no-repeat left bottom;} .appil_new {background:url("/common/img/appil_new.png") no-repeat left top; width:193px; height:44px; display:block; cursor: pointer;} .appil_new:hover {background:url("/common/img/appil_new.png") no-repeat left bottom;} .appil_open {background:url("/common/img/appil_open.png") no-repeat left top; width:213px; height:44px; display:block; border: none; cursor: pointer;} .appil_open:hover {background:url("/common/img/appil_open.png") no-repeat left bottom;} .appil_expor {background: url("/common/img/appil_expor.png") no-repeat left top; width:120px; height:48px; display:block; border: none; cursor: pointer;} .appil_expor:hover {background:url("/common/img/appil_expor.png") no-repeat left bottom;} /*================================ appil new =====================================*/ .div_border {padding:15px 30px; padding-bottom:20px; border:2px solid #dcdcdc; /*border-radius:5px;*/ margin-bottom:15px} .div_border .applicant {width:100%; font-size:16px} .div_border .applicant td{padding-right:5px; padding-top:7px; font-size: 15px; font-weight: bold;} .div_border .applicant td input{border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:3px; padding-left:8px; width:185px; color:#000;} .div_border .applicant td input:disabled {background:#d0d0d0;} .div_border .applicant td select:disabled {background:#d0d0d0;} .div_border .red_sp {color:red} .div_border .black_sp {font-size:18px; font-weight: bold; padding-bottom:5px; display:block} .div_border .docs {width:100%; font-size:16px} .div_border .docs td{padding-right:5px; padding-top:5px} .div_border .docs td input{border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:3px; padding-left:8px; width:298px; color:#969797} .div_border .educational {width:100%; font-size:16px} .div_border .educational td {padding-right:5px; padding-top:7px; font-size:15px; font-weight: bold;} .div_border .educational td input {border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:3px; padding-left:8px; width:298px; font-weight: normal; color:#000;/*969797*/} .div_border .educational td input:disabled {background:#d0d0d0;} .div_border .educational td select:disabled {background:#d0d0d0;} .div_border .educational td .apel_new_in_nm .input_chx_kv:disabled {background:#d0d0d0;} .div_border .educational td select {border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:2px; padding-left:8px; width:315px; font-weight: normal; color:#000} .div_border .educational .td3 {padding-top:10px; padding-left:10px;} .div_border .educational .td3 input {width:15px; margin-left:5px; padding:0px; backgroun:none margin-top:3px; border-radius:none} .div_border .educational .td3 span{position: absolute;} #set-new-appil .div_border {padding:15px 30px; padding-bottom:20px; border:2px solid #dcdcdc; /*border-radius:5px;*/ margin-bottom:15px} #set-new-appil .div_border .applicant {width:100%; font-size:16px} #set-new-appil .div_border .applicant td{padding-right:5px; padding-top:7px; font-size: 15px; font-weight: bold;} #set-new-appil .div_border .applicant td input{border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:3px; padding-left:8px; width:185px; color:#000} #set-new-appil .div_border .applicant td select {color:#000;} #set-new-appil .div_border .red_sp {color:red; font-size: 16px;} #set-new-appil .div_border .black_sp {font-size:18px; font-weight: bold; padding-bottom:5px; display:block} #set-new-appil .div_border .docs {width:100%; font-size:16px} #set-new-appil .div_border .docs td{padding-right:5px; padding-top:5px} #set-new-appil .div_border .docs td input{border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:3px; padding-left:8px; width:298px; color:#000} #set-new-appil .div_border .docs td select {color:#000;} #set-new-appil .div_border td input:disabled {background:#d0d0d0;} #set-new-appil .div_border td select:disabled {background:#d0d0d0;} #set-new-appil .div_border td .apel_new_in_nm .input_chx_kv:disabled {background:#d0d0d0;} #set-new-appil .div_border .educational {width:100%; font-size:16px} #set-new-appil .div_border .educational td{padding-right:5px; padding-top:7px; font-size: 15px; font-weight: bold;} #set-new-appil .div_border .educational td input {border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:3px; padding-left:8px; width:298px; color:#000} #set-new-appil .div_border .educational td select {border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:2px; padding-left:8px; width:315px; color:#000} #set-new-appil .div_border .educational .td3 {padding-top:10px; padding-left:10px;} #set-new-appil .div_border .educational .td3 input {width:15px; margin-left:5px; padding:0px; backgroun:none margin-top:3px; border-radius:none} #set-new-appil .div_border .educational .td3 span{position: absolute;} #set-new-appil .div_border .educational td input:disabled {background:#d0d0d0;} #set-new-appil .div_border .educational td select:disabled {background:#d0d0d0;} #set-new-appil .div_border .educational td .apel_new_in_nm .input_chx_kv:disabled {background:#d0d0d0;} .div_border .educational td .app_w_err_red .apel_new_in_nm input {/*border:1px solid red !important;*/} .div_border .educational td .apel_new_in_nm .app_w_err_red_sp {display:block; float:left;} .div_border .educational td .apel_new_in_nm .div_chexb_pd {padding-left:5px; float:left; line-height: 13px;} .div_border .educational td .app_w_err_red .apel_new_in_nm .app_w_err_red_sp {border:1px solid red !important;} .new_appel_save {background:url("/common/img/new_appel_save.gif") no-repeat left top; width:137px; height:44px; display:block; border:none; cursor:pointer;} .new_appel_save:hover {background:url("/common/img/new_appel_save.gif") no-repeat left bottom;} .new_appel_epz {background:url("/common/img/new_appel_epz.gif") no-repeat left top; width:155px; height:44px; display:block; margin-left:10px} #appel_epz a { display: inline-block; margin-right: 20px; } .new_appel_epz:hover {background:url("/common/img/new_appel_epz.gif") no-repeat left bottom;} .new_appel_print {background:url("/common/img/new_appel_print.gif") no-repeat left top; width:112px; height:44px; display:block; margin-left:10px} .new_appel_print:hover {background:url("/common/img/new_appel_print.gif") no-repeat left bottom;} .appil_prew {background:url("/common/img/appil_prew.png") no-repeat left top; width:95px; height:44px; display:block; position:absolute; right:0px;} .appil_prew:hover {background:url("/common/img/appil_prew.png") no-repeat left bottom;} .line_apill {border-bottom:none; height: 10px; font-size: 24px; margin-bottom: 20px; padding-top:5px; position: absolute; right: 0; top: -2px; font-family: calibri;} .appil_history {padding-bottom:10px} .appil_a_strukture {padding:10px 0px} .appil_a_strukture_fl_r {float:right;} .appil_a_strukture a {display:block; float:left; text-decoration:underline} .appil_a_strukture a:hover {text-decoration:none} .appil_a_strukture span{color: #0071BB; display: block; float: left; font: bold 30px trebuchet MS; margin-top: -17px;} /* .ege_rezult_name{background:#92E639; height:20px; padding-left:5px; color:#fff; font-size: 14px; padding-top: 2px;} */ .ege_rezult_a td{width:26px; height:18px; text-align:center; padding: 0px; font-size: 13px; padding: 3px 3px;} .ege_rezult_b {width:100%} .ege_rezult_b td{height:18px; text-align:left; padding-left:10px; padding-right:10px} .ege_rezult_b .td1 {width:6px; text-align:center;} /*================================= appil buttom =============================*/ .appil_add_but {background: url("/common/img/appil_add.png") no-repeat left top; display: block; height: 44px; width: 220px; border:none;} .appil_add_but:hover { background: url("/common/img/appil_add.png") no-repeat left bottom;} .appil_add_but:disabled {cursor: default; opacity: 0.8; background: url("/common/img/appil_add.png") no-repeat left top;} .appil_add_but_grey {background: url("/common/img/appil_add_grey.png") no-repeat left top; display: block; height: 44px; width: 220px; border:none; cursor: default;} .appil_history_but {background: url("/common/img/appil_history.png") no-repeat left top; display: block; height: 44px; width: 220px;} .appil_history_but:hover { background: url("/common/img/appil_history.png") no-repeat left bottom;} .appil_cansel_but {background: url("/common/img/appil_cansel.png") no-repeat left top; display: block; height: 44px; width: 220px;} .appil_cansel_but:hover { background: url("/common/img/appil_cansel.png") no-repeat left bottom;} .appil_buttom_da {background: url("/common/img/buttom_da.png") no-repeat left top; display: block; height: 44px; width: 67px; float:left} .appil_buttom_da:hover { background: url("/common/img/buttom_da.png") no-repeat left bottom;} .appil_buttom_net {background: url("/common/img/buttom_net.png") no-repeat left top; display: block; height: 44px; width: 67px; margin-left:90px;} .appil_buttom_net:hover { background: url("/common/img/buttom_net.png") no-repeat left bottom;} #inline_content2 {padding:20px; padding-bottom:0px;} #inline_content2 .text_inline_content2{padding-left:16px; font-size:20px; font-weight: bold;} .new_text_okno {padding:30px; font-size:16px; font-weight: bold;} /*=============================== likes ================================*/ .likes_div {padding:5px 0px; padding-bottom:10px} .likes_div .fb_but {padding-right:30px;} .likes_div .tweet_but {padding-right:30px;} .likes_div .vk_but {} /*================================= comment_comment =========================*/ .comment_add textarea {width:660px} .comment_name_title {border-bottom: 1px solid #E3E3E3; font-style: normal; padding: 10px 10px 10px 0px; margin-left:0px; margin-bottom:20px; text-transform: uppercase;} .comment_add {margin-bottom:20px; } .comment_item {position:relative; padding:10px; padding-bottom:0px} .comment_data { display: inline-block; color:#fff; margin-bottom: 6px; margin-right: 20px; padding: 2px 6px; background:#0071BB;} .name_img {padding-bottom:5px; padding-left:6px} .name_img img{width:25px; height:25px} .comment_name {position:absolute; left: 51px; top: 44px;} .comment_anons {padding: 0 19px 0px 6px;} .comment_buttom {background:url("/common/img/ege_new/comment_buttom.png") no-repeat left top; width:120px; height:29px; border:none; margin-top:10px; cursor:pointer} .alert { padding: 18px 0 0 150px; font:16px Trebuchet MS; font-weight:bold; color: #df0821; } .good-request { font:16px Trebuchet MS; font-weight:bold; color: #348b00; } p.good-request { width: 290px; display: inline-block; line-height: 12px; } #send_pass { width: 80px; height: 30px; background: url(/common/img/btn_submit.png) no-repeat 0 0 !important; border: none; margin-left: 10px; font-size:0px; margin-top: 10px;} #answer_serv { font-size: 11px; font-weight: 900; } #answer_serv .good { color: #348b00; } #answer_serv .wrong { color: #df0821; } /*================================= proc =========================*/ .proc_op_1 {padding:90px 14px 30px 35px; font-size:12px; width: 525px;} .proc_select {position:absolute; right:0; top:38px; width:250px;} .proc_select .div1 {padding-bottom:10px; font-size:12px;} .buttom_dem_kim_zad_div {width:400px; padding-top:25px} .EGE .buttom_dem_kim_zad_sel {width: 165px; display:inline-block; padding:10px 15px 5px 15px; float:left; /*border-radius:10px;*/ font-size:17px; color:#fff; font-weight:bold; text-decoration:none; box-shadow:2px 2px 4px #828282; position:relative; background:url(/common/img/ege_new/menu2_yell.gif) repeat-x left top #f39a09; color:#fff; z-index:60;} .EGE .buttom_dem_kim_zad_sel2 {float:right;} .EGE .buttom_dem_kim_zad_sel:hover {color:#fff; background:url(/common/img/ege_new/menu2_yell2.gif) repeat-x left top #f5a92e;} /* === ????????? ? ??????? ????????? === */ .table.exp .td1 {vertical-align: middle;} .table.exp .td2, .table.exp .td3, .table.exp .th2, .table.exp .th3{text-align:center; vertical-align: middle;} .table.exp .date_ex {padding-right:10px} .table.exp .name_ex {font-weight:bold} .table.sett .th2, .table.sett .th3{width:1%; text-align:center;} .table.sett .th4 {padding-left:40px; width: 255px;} .table.sett .td1 {vertical-align: middle;} .table.sett .td2, .table.sett .td3{text-align:center; vertical-align: middle;} .table.sett .td4{vertical-align: middle; padding: 5px 0;} .table.sett .td4 input{padding:2px 5px; margin:3px 0} #wawes {padding-bottom: 15px; padding-left:0} #wawes {padding-bottom: 15px; padding-left:0} #wawes ul li {display:inline} .table.sett .date_ex {padding-right:10px} .table.sett .name_ex {font-weight:bold} .table.sett .cal_span1 {padding-right:15px} .div_apel_fl_red {float:left; padding:6px; background:#f1dbd9; border:1px solid #d8958f; width: 348px; margin-bottom:10px;} .div_apel_fl_red a {color:#3d5c8a; text-decoration:underline;} .div_apel_fl_red a:hover {text-decoration:none; color:#3d5c8a;} .div_resul_pometki {font-style: italic; text-align:right; font-size: 12px;} .div_resul_pometki12 {padding-right:416px;} .pometki_red {color:red} .pometki_green {color:green} .appil_table_block_new_mar {margin-bottom:6px;} .div_resul_pometki2 {padding-bottom:3px;} .appil_resultat th.th_no_b_nm {background:#DAE1F7; border:1px solid #A9ABAD;} .appil_resultat th.th_no_b_nm2 {background:#DAE1F7; border:1px solid #A9ABAD; padding: 10px 5px 10px;} .ege_rezult_b_nb td {width:auto;} .ege_rezult_b_nb td {/*background:#D5E7CF;*/} .ege_rezult_b_nb .td2nm {text-align:left} .ege_rezult_b_nb .td2nm .td2nm_kriter {/*padding-bottom:7px;*/ font-style: italic; font-size: 12px; line-height: 14px; color:#0071BB; } .ege_rezult_b_nb .td2nm .td2nm_kriter span {display:inline-block; font-size: 14px; width:26px;} .ege_rezult_b_nb .td3nm {text-align:center} .ege_rezult_b_nb .td3nm .td2nm_kriter {padding-bottom:7px; font-style: italic; color: #0071BB; font-size: 12px; line-height: 14px;} .ege_rezult_b_nb .td3nm .td3nm_fn_s {font-size:15px;} .ege_rezult_b_nb .td4nm {text-align:right;} .ege_rezult_b_nb .th_none_apl_zeb {padding:0px; height:0px;} .ege_rezult_b_nb .td_w_bol {font-weight: bold; font-size: 15px; color:#0b2302;} .ege_rezult_b_nb .td_w_bol_text {font-weight: bold; background:#D5E7CF;} .ege_rezult_b_nb .alt .td_w_bol_text {font-weight: bold; background:#DAE1F7;} .td2nm .td2nm_kriter:first-child{ /*margin-top: 10px;*/ } .td3nm .td2nm_kriter:first-child{ /*margin-top: 10px;*/ } .ege_rezult_b_nb .td15_pr {width:45px;} .kn_blank_otvet_apel {background:url(/common/img/kn_blank_otvet.png) no-repeat left top; display: inline-block; height: 46px; width: 243px;} .kn_blank_otvet_apel:hover {background:url(/common/img/kn_blank_otvet.png) no-repeat left -55px;} .div_border .educational td .apel_new_in_nm {} .div_border .educational td .apel_new_in_nm .input_chx_kv {width: 14px; /* margin-right: 6px;*/ background:none; padding:0px; border: 1px solid #DCDCDC; border-radius: 0px;} .knopka_ico_apgek_gray {width:100%; height:29px; background:url(/common/img/ege_new/akt_gek_gray.png) no-repeat center center; cursor:pointer;} .knopka_ico_apgek_green {width:100%; height:29px; background:url(/common/img/ege_new/akt_gek_blue.png) no-repeat center center; cursor:pointer;} .knopka_ico_apgek_cl_cl {padding:20px 20px 0px 20px; width:408px;} .div_border_ap_set .green_sp {font-size:18px; color:green; padding-bottom:10px; display:block; text-align: center; font-weight: bold;} .div_border_ap_set .blue_sp {color:#0071bb;} .div_border_ap_set .applicant {width:100%; font-size:16px} .div_border_ap_set .applicant td {padding-right:5px;} .div_border_ap_set .applicant td input {border:2px solid #dcdcdc; background:#f3f6f7; /*border-radius:5px;*/ padding:3px; padding-left:8px; width:178px; color:#000; margin-bottom: 12px;} .div_border_ap_set .applicant .td1 { font-weight: bold; padding-top:3px; padding-bottom:12px;} .div_border_ap_set .applicant .td1 span {font-weight: normal;} .div_border_ap_set .applicant .td1 input {width:388px;} .div_border_ap_set .applicant .td2 {padding-left:5px;} .div_border_ap_set .applicant .td3 input {width:240px;} .div_border_ap_set .applicant .td4 input {width:194px;} .div_border_ap_set .applicant .td4 a {display:block; position:absolute; right:10px; top:3px;} .div_border_ap_set .applicant .td4 .td4_div {position:relative} .div_border_ap_set .applicant .td4 img {width:22px;} .button_ap_mr_div .button_ap_mr { margin-left: 14px;} .knopka_ico_apgek_cl_cl .new_st_kn {padding: 12px 26px;} .knopka_ico_apgek_pod {position:relative; /*width:28px; height:34px;*/} .knopka_ico_apgek_pod_2 {position:relative; width:auto; height:auto;} .knopka_ico_apgek_pod1 {position:absolute; left:30px; top:36px; display:none; border:1px solid #b6bab3; background:/*#ebf1df*/#dae1f7; padding:5px; font-size:12px; width: 154px;z-index: 101;} .knopka_ico_apgek_pod2 {position:absolute; left:50%; margin-left:10px; top:0 ; display:none; border:1px solid #b6bab3; background:/*#ebf1df*/#dae1f7; padding:5px; font-size:12px; width: 154px;z-index: 101;} .knopka_ico_apgek_pod:hover .knopka_ico_apgek_pod1 {display:block} .appil_a_strukture_div_w {width:500px;} .appil_a_strukture_div_w_11 {width:100%;} .div_res_ap_gek_inf {float:right; width: 396px; text-align:right; font-size: 12px; line-height: 16px; padding-right: 6px; padding-top: 26px;} .div_res_ap_gek_inf a {color:#0070c0;} .div_res_ap_gek_inf a:hover {color:#0070c0;} .div_res_ap_gek_inf2 {width: 396px; font-size: 12px; line-height: 16px; padding: 5px 0px 12px 0px;} .div_res_ap_gek_inf2 a {color:#0070c0; text-align:right;} .div_res_ap_gek_inf2 a:hover {color:#0070c0;} .apel_bl_otv_ss a {color: #0070C0; text-decoration:underline;} .apel_bl_otv_ss a:hover {color: #0070C0; text-decoration:none;} .table_block .tabl_udal_resul_ap .td2 {width:50px;} .table_block .tabl_udal_resul_ap .th3 {text-align:left; width:auto;} .table_block .tabl_udal_resul_ap .td3 {text-align:left; width:auto;} .table_block .tabl_udal_resul_ap .th4 {text-align:center; width:auto;} .table_block .tabl_udal_resul_ap .td4 {text-align:center; width:auto;} .div_border_udal_rez {border:none; padding:0px;} .div_border_udal_rez select { background: none repeat scroll 0 0 #F3F6F7; border: 2px solid #DCDCDC; /*border-radius: 5px 5px 5px 5px;*/ color: #969797; padding: 2px 2px 2px 8px; width: 185px; color:#000; } .div_border_udal_rez .applicant .button { background: url("/common/img/ege_new/menu2_green.gif") repeat-x scroll left top transparent; border: medium none; /*border-radius: 5px 5px 5px 5px;*/ color: #FFFFFF; cursor: pointer; font: bold 15px arial; padding: 7px 15px; text-decoration: none; text-shadow: 1px 1px 0 #1F262D; float: right; } .wh_space_now_cs {white-space: nowrap;} .main_block_menu_apel {height: 25px; border-bottom:none;} .palk_all {color:#0071bb;} .main_block_menu_apel a.selected {margin-right:10px; background:#ec1c24;} .main_block_menu_apel a { display:inline-block; padding:14px 22px 12px 22px; float:left; font-size:14px; line-height:14px; color:#303133; position:relative; text-transform: uppercase; margin-right:7px; } .main_block_menu_apel a:hover, .main_block_menu_apel a.current { background:#0071bb; color:#fff; z-index:55; } #main_block_2_body > div{ /*display: none;*/ } .main_block_menu_apel .a2 {margin-left:10px;} .main_block_menu_apel .div1 {padding-left:0px; border:none} .div_border_net_bordera_pad {border:none; padding:0px;} .div_border_net_bordera_pad .educational td input {width: 350px; margin-bottom:3px;} .div_border_net_bordera_pad .educational td select {width: 366px; margin-bottom:3px;} .div_border_net_bordera_pad .green_sp {color:green; display: inline-block; padding: 10px 0px;} .div_border_net_bordera_pad .blue_sp {color:#0071bb;} .div_border_net_bordera_pad .gray_sp_text {color:#000;} .div_border_net_bordera_pad .pods_inp_te {color:#969797; font-size:12px; font-style: italic; line-height: 12px; padding-bottom: 3px;} .div_border_net_bordera_pad textarea { background: #F3F6F7; border: 2px solid #DCDCDC; /*border-radius: 5px 5px 5px 5px;*/ color: #000; padding: 3px 3px 3px 8px; width: 640px; height:100px; margin-bottom:3px;} .ul_menu_apel_all {width: 220px;} .ul_menu_apel_all li.ico_menu_apel1 { background: url("/common/img/ico_menu_apel.png") no-repeat left 4px; border-top: 1px solid #A5A5A5; padding-top: 3px;} .ul_menu_apel_all li.ico_menu_apel1_b {border:none;} .ul_menu_apel_all li.ico_menu_apel2 { background: url("/common/img/ico_menu_apel.png") no-repeat left -85px;} .ul_menu_apel_all li.ico_menu_apel_d { background: url("/common/img/ico_doc_ap.gif") no-repeat 3px 2px;} .ul_menu_apel_all12 {width: 226px;} .content .ul_menu_apel_all13 {width:auto; padding:0px 0px 5px 0px;} .content .ul_menu_apel_all13 li {background:none; padding-left:0px;} .kn_grenn_m_b {margin-bottom:10px;} .kn_grenn_m_r {margin-right:10px;} .kn_grenn_iskat { background: url("/common/img/mnog_knop_ap.png") no-repeat -146px top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 105px; } .kn_grenn_iskat:hover {background: url("/common/img/mnog_knop_ap.png") no-repeat -146px -57px;} .kn_grenn_ochistit {background: url("/common/img/mnog_knop_ap.png") no-repeat left top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 128px; } .kn_grenn_ochistit:hover {background: url("/common/img/mnog_knop_ap.png") no-repeat left -57px;} .kn_grenn_new_user {background: url("/common/img/mnog_knop_ap.png") no-repeat -280px top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 214px; } .kn_grenn_new_user:hover {background: url("/common/img/mnog_knop_ap.png") no-repeat -280px -57px;} .kn_grenn_edit_user {background: url("/common/img/mnog_knop_ap.png") no-repeat -514px top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 162px; } .kn_grenn_edit_user:hover {background: url("/common/img/mnog_knop_ap.png") no-repeat -514px -57px;} .kn_grenn_edit_delete_user {background: url("/common/img/mnog_knop_ap.png") no-repeat -1039px top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 110px;} .kn_grenn_edit_delete_user:hover {background: url("/common/img/mnog_knop_ap.png") no-repeat -1039px -57px;} .kn_grenn_edit_save {background: url("/common/img/mnog_knop_ap.png") no-repeat -1167px top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 126px;} .kn_grenn_edit_save:hover {background: url("/common/img/mnog_knop_ap.png") no-repeat -1167px -57px;} .kn_grenn_edit_back {background: url("/common/img/mnog_knop_ap.png") no-repeat -1321px top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 96px;} .kn_grenn_edit_back:hover {background: url("/common/img/mnog_knop_ap.png") no-repeat -1321px -57px;} .kn_grenn_edit_show {background: url("/common/img/mnog_knop_ap.png") no-repeat -1438px top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 118px;} .kn_grenn_edit_show:hover {background: url("/common/img/mnog_knop_ap.png") no-repeat -1438px -57px;} .kn_grenn_edit_dobav {background: url("/common/img/mnog_knop_ap.png") no-repeat -906px top !important; border: none !important; cursor: pointer; display: inline-block; height: 44px; width: 122px !important; padding:0px !important;} .kn_grenn_edit_dobav:hover {background: url("/common/img/mnog_knop_ap.png") no-repeat -906px -57px !important;} .kn_grenn_edit_dobav_right {float:right; margin-top:10px;} .kn_grenn_edit_delete_spisok {background: url("/common/img/mnog_knop_ap.png") no-repeat -692px top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 192px;} .kn_grenn_edit_delete_spisok:hover {background: url("/common/img/mnog_knop_ap.png") no-repeat -692px -57px;} .kn_grenn_edit_scrut_rezul_uchast {background: url("/common/img/kn_grenn_edit_scrut_rezul_uchast.png") no-repeat left top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 309px;} .kn_grenn_edit_scrut_rezul_uchast:hover {background: url("/common/img/kn_grenn_edit_scrut_rezul_uchast.png") no-repeat left -64px;} .kn_grenn_edit_scrut_rezul_uchast2 {background: url("/common/img/kn_grenn_edit_scrut_rezul_uchast2.png") no-repeat left top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 215px;} .kn_grenn_edit_scrut_rezul_uchast2:hover {background: url("/common/img/kn_grenn_edit_scrut_rezul_uchast2.png") no-repeat left -64px;} .kn_grenn_pokazat {background: url("/common/img/mnog_knop_ap.png") no-repeat -1438px top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 127px;} .kn_grenn_pokazat:hover {background: url("/common/img/mnog_knop_ap.png") no-repeat -1438px -57px;} .kn_grenn_edit_apil_otmena {background: url("/common/img/apil_otmena.png") no-repeat left top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 114px;} .kn_grenn_edit_apil_otmena:hover {background: url("/common/img/apil_otmena.png") no-repeat left -54px;} .kn_grenn_edit_ok {background: url("/common/img/kn_grenn_edit_ok.png") no-repeat left top; border: none; cursor: pointer; display: inline-block; height: 31px; width: 48px;} .kn_grenn_edit_ok:hover {background: url("/common/img/kn_grenn_edit_ok.png") no-repeat left -35px;} .kn_grenn_edit_seting {background: url("/common/img/kn_grenn_edit_seting.png") no-repeat left top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 137px;} .kn_grenn_edit_seting:hover {background: url("/common/img/kn_grenn_edit_seting.png") no-repeat left -52px;} .kn_grenn_edit_delit {background: url("/common/img/kn_grenn_edit_delit.png") no-repeat left top; border: none; cursor: pointer; display: inline-block; height: 29px; width: 76px;} .kn_grenn_edit_delit:hover {background: url("/common/img/kn_grenn_edit_delit.png") no-repeat left -34px;} .kn_grenn_edit_apil_export {background: url("/common/img/apil_export.png") no-repeat left top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 118px;} .kn_grenn_edit_apil_export:hover {background: url("/common/img/apil_export.png") no-repeat left -60px;} .div_border_net_bordera_pad .educational td input.kn_grenn_edit_ok {background: url("/common/img/kn_grenn_edit_ok.png") no-repeat left top; border: none; cursor: pointer; display: inline-block; height: 31px; width: 48px;} .div_border_net_bordera_pad .educational td input.kn_grenn_edit_ok:hover {background: url("/common/img/kn_grenn_edit_ok.png") no-repeat left -35px;} .kn_grenn_edit_apil_prodol {background: url("/common/img/kn_ap_otm_prod.png") no-repeat -139px top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 146px;} .kn_grenn_edit_apil_prodol:hover {background: url("/common/img/kn_ap_otm_prod.png") no-repeat -139px -59px;} .kn_grenn_edit_apil_prodol:disabled {cursor: default; opacity: 0.8; background: url("/common/img/kn_ap_otm_prod.png") no-repeat -139px top;} .kn_grenn_edit_apil_mar_r {margin-right: 25px;} .kn_grenn_edit_apil_neaktivna {cursor: default; opacity: 0.4;} .form_div_apel_soglash {width:450px; font-size:14px;} .form_div_apel_soglash .form_div_apel_soglash_t {padding:20px;} .form_div_apel_soglash .form_div_apel_soglash_in {padding:0px 20px;} .form_div_apel_soglash .form_div_apel_soglash_sp {display: block; padding-right: 20px; width: 130px; padding-bottom: 15px; float:left; padding-top: 14px;} .form_div_apel_soglash .form_div_apel_soglash_sp input {margin-right:10px} .form_div_apel_soglash .form_div_apel_soglash_sp label {} .form_div_apel_soglash .form_div_apel_soglash_centr {text-align:center;} .form_div_apel_soglash .form_div_apel_soglash_centr .form_div_apel_soglash_sp {padding-left: 142px;} .form_div_apel_soglash .form_div_apel_soglash_centr .appil_add_but {display:inline-block;} .height_but_men_ap {height:12px; width: 500px;} .page_num_apel .nums a:hover {text-decoration:none;} .div_class_er_red {color:red; padding-bottom:5px; font-size:14px;} .div_class_pl_green {color:green; padding-bottom:5px; font-size:14px;} .div_border_net_bordera_pad .educational td input.kn_grenn_edit_show {background: url("/common/img/mnog_knop_ap.png") no-repeat -1438px top; border: none; cursor: pointer; display: inline-block; height: 44px; width: 118px;} .div_border_net_bordera_pad .educational td input.kn_grenn_edit_show:hover {background: url("/common/img/mnog_knop_ap.png") no-repeat -1438px -57px;} .div_border_net_bordera_pad .educational .kn_grenn_edit_show_td {width:380px} .div_border_net_bordera_pad .educational .kn_grenn_edit_show_td2 .kn_grenn_edit_show {margin-top:9px;} .menu_left_ul_wnm {width:500px;} .menu_left_ul_wnm li {display:block;} .table_block_nm_heig {padding: 10px 0px 10px 0px;} .table_block_nm_heig .table th {padding: 0px 0px 5px 20px; font-size: 15px;} #settings .table_block_nm_heig .table th { padding: 0 !important; text-align:center; font-weight: bold; font-size: 13px; border-bottom: medium none; border-top: 1px solid #a9abad; } #settings .table_block_nm_heig .table tbody th { border-top: medium none; border-bottom: 1px solid #a9abad; } .mass_checkbox{ margin: 5px 0 5px 5px; } .table_block_nm_heig .table .th1 {padding: 0px 0px 5px 20px;} .table_block_nm_heig .table .th3 {width:120px; padding: 0px 0px 5px 0px;} .table_block_nm_heig .table .th4 {width:280px; padding: 0px 0px 5px 0px; text-align:center;} .table_block_nm_heig .table .th5 {width:30px; padding: 0px 20px 5px 20px;} .table_block_nm_heig .table .th5_nn {width:30px; padding: 0px 5px 5px 0px; text-align:center;} .table_block_nm_heig .td1 {line-height: 17px;} /* ================== auth ==================== */ .client1_top_bl_vn {display:block; position:relative; background:#d2d2d1 url(/common/img/ege_new/menu_top_bl_bg.gif) repeat-x left top; padding:20px 30px 7px 35px; /*border-radius:10px; */ box-shadow:0px 1px 3px #939393; width:292px;} .client1_top_bl_vn a {color:#1f262d; text-decoration:none; line-height:15px;} .client1_top_bl_vn a:hover {text-decoration:underline;} .client1_top_bl_vn .div1 {font:14px Trebuchet MS; font-weight:bold; float:left; padding-bottom:7px;} .client1_top_bl_vn .div2 {float:right; padding-top:3px; padding-right:5px;} .client1_top_bl_vn .inp1 {border:1px solid #c3c3c3; border-top:1px solid #7c7c7c; padding:3px 5px; color:#a3a4a5; width:127px; font:11px/normal arial; background:#fff; margin-right:8px;} .client1_top_bl_vn .inp2 {border:1px solid #c3c3c3; border-top:1px solid #7c7c7c; padding:3px 5px 3px 19px; color:#a3a4a5; width:109px; font:11px/normal arial; background:#fff url(/common/img/ege_new/zamok.gif) no-repeat 5px 4px; margin-bottom:5px;} .client1_top_bl_vn .btn1 {background:url(/common/img/ege_new/btn_enter.png) no-repeat left top; width:67px; height:29px; padding-bottom:5px; font:11px Trebuchet MS; font-weight:bold; border:none; cursor:pointer; color:#5b5b5b; margin-right:-5px;} .client1_top_bl_vn .div5 {font:12px Trebuchet MS; font-weight:bold; } .client1_top_bl_vn .div5 span {font-size:16px; line-height:16px;} .client1_top_bl_vn .div5 span {font-size:16px; line-height:16px;} .client1_top_bl_vn .auth_tbl .td4 a span { font-size: 12px;} .client1_top_bl_vn .auth_tbl .auth_tbl .td4 span.plus {top:0px;} .client1_top_bl_vn {padding: 20px 30px 20px 30px;} .client1_top_bl_vn .client1_top_bl_vn_red {color:red; padding-left: 4px; padding-top: 4px;} .client1_top_bl_vn .inp_eror_bor_aut {border:1px solid red} /*=================*/ .sett_answ {padding-top: 25px;} .sett_answ .div1 {font-size: 17px;} .sett_answ_c .td2, .sett_answ_c .td4 {text-align: center;} .sett_answ .sett_answ_plus {cursor: pointer;width: 20px;height: 20px; margin-left: 75px; background: url(/common/img/sett_answ_plus.png) 0 0 no-repeat;} .sett_answ .sett_answ_plus:hover {background: url(/common/img/sett_answ_plus.png) 0 -21px no-repeat;} .sett_answ .btn1{cursor: pointer;margin-top: 20px;width: 192px;height: 44px;background: url(/common/img/sett_answ_addstr.png) no-repeat;} .sett_answ .btn1:hover{background: url(/common/img/sett_answ_addstr.png) 0 -47px no-repeat;} .sett_answ .btn2{cursor: pointer;margin-top: 5px;width: 192px;height: 44px;background: url(/common/img/sett_answ_deletestr.png) no-repeat;} .sett_answ .btn2:hover{background: url(/common/img/sett_answ_deletestr.png) 0 -47px no-repeat;} .sett_answ .btn3{cursor: pointer;margin-top: 20px;width: 137px;height: 44px;background: url(/common/img/sett_answ_save.png) no-repeat;} .sett_answ .btn3:hover{background: url(/common/img/sett_answ_save.png) 0 -47px no-repeat;} .sett_answ_addkrit {border:1px solid gray;width: 700px;padding: 20px 10px 100px 10px;} .sett_answ_addkrit .sett_answ_addkrit_btnl {float: left;} .sett_answ_addkrit .sett_answ_addkrit_btnr {float: right;padding-top: 15px;} .sett_answ_addkrit_btn {padding: 10px 10px;} .sett_answ_addkrit_btnl .btn1{cursor: pointer;width: 192px;height: 44px;background: url(/common/img/sett_answ_addstr.png) no-repeat;} .sett_answ_addkrit_btnl .btn1:hover{background: url(/common/img/sett_answ_addstr.png) 0 -47px no-repeat;} .sett_answ_addkrit_btnl .btn2{cursor: pointer;margin-top: 10px;width: 192px;height: 44px;background: url(/common/img/sett_answ_deletestr.png) no-repeat;} .sett_answ_addkrit_btnl .btn2:hover{background: url(/common/img/sett_answ_deletestr.png) 0 -47px no-repeat;} .sett_answ_addkrit_btnr .btn3{cursor: pointer;margin-right: 10px;float: right;width: 137px;height: 44px;background: url(/common/img/sett_answ_save.png) no-repeat;} .sett_answ_addkrit_btnr .btn3:hover{background: url(/common/img/sett_answ_save.png) 0 -47px no-repeat;} .sett_answ_addkrit_btnr .btn4{cursor: pointer;float: right;width: 111px;height: 44px;background: url(/common/img/sett_answ_done.png) no-repeat;} .sett_answ_addkrit_btnr .btn4:hover{background: url(/common/img/sett_answ_done.png) 0 -46px no-repeat;} .div_all_pos_rel {position:relative;} .div_all_pos_rel .but_nazad_fag_r {position:absolute; right:0px; top:0px; font-size: 18px; text-decoration: underline; top: -40px;} .div_all_pos_rel .but_nazad_fag_r:hover {text-decoration: none;} .tab_doc_apel {margin-bottom:10px;} .tab_doc_apel .td1 {color:#0071bb; padding-bottom:5px;} .tab_doc_apel .td2 {width:78px; padding-left:10px; vertical-align: middle; padding-bottom:2px;} .tab_doc_apel .td3 {vertical-align: middle; padding:3px 5px; border:1px solid #000;} .div_border_nn {border:none;} .error {color:red; border:1px solid red !important;} #settings .error {border:none !important;} .b_fon_siz_sogl {font-size:16px;} .tab_ap_rez_34 {} .tab_ap_rez_34 .td1 {padding-right:40px;} .tab_ap_rez_34 .td2 {width:322px; font-size: 14px; line-height: 18px;} .sp_zvezd_red {color:red; font-size: 14px;} .form_quest .td_right .QapTcha{margin:4px 0 3px 0 } .form_quest .td_right .QapTcha .Icons {margin-top: 3px;} .vote_form { background-color: #F7FAFA; border: 1px solid #CDCDCD; /*border-radius: 4px 4px 4px 4px; */ padding: 20px; width: 630px; } .form_quest .td_left { padding: 0 10px 10px 0; text-align: right; } .div_form_quest { padding-top: 5px; position: relative; } .form_quest .td_right { padding: 0 0 10px; width: 435px; } .form_quest .td_right input { /*border-radius: 4px;*/ width:400px; height:19px; vertical-align:top; padding:3px 10px 5px 10px; border:1px solid #e3e3eb; border-top:1px solid #acadb2; } .form_quest .td_right textarea { /*border-radius: 4px; */ width:405px; height:120px; vertical-align:top; padding:3px 5px 5px 10px; border:1px solid #e3e3eb; border-top:1px solid #acadb2; } .form_quest .td_right select { width:435px; height:27px; vertical-align:top; padding:3px 10px 5px 10px; border:1px solid #e3e3eb; border-top:1px solid #acadb2; } input.button[disabled]{z-index:0} .subutton { background: none; border:none; /*border-radius: 5px 5px 5px 5px; */ cursor: pointer; text-decoration: none; width:112px; height:33px; position:absolute; z-index:100 } .ios .subutton {background: url("/common/img/ege_new/onepic.png") no-repeat 0 0;} .android .subutton {background: url("/common/img/ege_new/onepic.png") no-repeat 0 0;} .qaptext {font-size:13px; color:red; display:none} /* video new */ .main_cont2_tbl {width:100%;} .main_cont2_tbl .main_cont2_td_1 {width:780px;} .main_cont2_tbl .main_cont2_td_2 {padding-top:3px;} #videon_tab {position:relative; height: 310px; padding-left:31px; width: 708px; overflow: hidden;} #videon {position:relative;} .videon_news { position: relative; /*leave this value alone*/ border: 0px solid black; overflow: scroll; /*leave this value alone*/ width: 708px; /*Width of Carousel Viewer itself*/ height: 310px; /*Height should enough to fit largest content's height*/ margin-left:0px; } .videon_belt { position: absolute; /*leave this value alone*/ left: 0; top: 0; } .main_videon_line { float: left; /*leave this value alone*/ overflow: hidden; /*clip content that go outside dimensions of holding panel DIV*/ margin: 0px; /*margin around each panel*/ width: 708px; /*Width of each panel holding each content. If removed, widths should be individually defined on each content DIV then. */ } .videon_news .videon_item {width:160px; float:left; margin-right:17px; position:relative;} .videon_news .videon_item .strelka_video {position:absolute; width:90px; height:90px; display:none;} .videon_news .videon_item .scrin_video {width:160px; height:128px; overflow: hidden; margin-bottom:18px;} .videon_news .videon_item .scrin_video img {width:160px;} .videon_news .videon_item .text {height: 154px; overflow: hidden;} .videon_news .videon_item .text .div1 {line-height:16px; padding-bottom:10px;} .vid_tab_tit {height:34px; font-size:14px; color:#303133; position:relative; font-weight:bold; text-transform: uppercase;} /* */ .banner_all_p {} .banner_all_p .stan_ban {display:inline-block; width:190px; height:281px; background:url(/common/img/img_2013/banner_gia.gif) no-repeat left top; position:relative; font-family: calibri; color:#3e3f41;} .banner_all_p a {color:#3e3f41; text-decoration:underline;} .banner_all_p a:hover {text-decoration:none;} .banner_all_p .tex_st_b1 {position:absolute; left:24px; top:23px; line-height: 43px; font-size:36px; font-weight:bold; text-transform: uppercase;} .banner_all_p .tex_st_b2 {position:absolute; left:24px; top:190px; font-size:14px; width: 145px;} .GIA .banner_all_p .stan_ban {background:url(/common/img/img_2013/banner_ege.gif) no-repeat left top;} .GIA .banner_all_p .tex_st_b2 {font-size:18px; top: 154px;} .GIA .banner_all_p .tex_st_b1 {top:32px;} /* buttom */ .new_st_kn {min-width: 64px; width:auto; font-weight: bold; text-decoration:none; display:inline-block; color:#303133; background:#f2f2f2; padding:12px 40px; font-size:12px; line-height:14px; font-weight:block; text-align:center; text-transform: uppercase; border: none; box-shadow: none; outline: none; cursor:pointer;} .new_st_kn:hover {background:#0071bb; color:#fff;} #second #content .new_st_kn {min-width: 64px; width:auto; font-weight: bold; text-decoration:none; display:inline-block; color:#303133; background:#f2f2f2; padding:12px 40px; font-size:12px; line-height:14px; font-weight:block; text-align:center; text-transform: uppercase; border: none; box-shadow: none; outline: none; cursor:pointer;} #second #content .new_st_kn:hover {background:#0071bb; color:#fff;} #second #content .new_st_kn_m {padding:6px 20px 5px 20px;} #second #content .new_st_kn_p2 {padding:12px 20px;} #second #content .new_st_kn_dis {cursor:default; background:#c7c7c7; color:#303133;} #second #content .new_st_kn_dis:hover {background:#c7c7c7; color:#303133; cursor:default;} #second .new_st_kn:disabled {cursor:default !important; color:#303133 !important; background:#c7c7c7 !important;} #second #content .new_st_kn_naz {position: absolute; right: 0; display: block; bottom:11px;} #footer .new_st_kn2 {margin:0 auto; margin-top:15px; width: 159px; font-weight: bold; text-decoration:none; display:block; color:#fff; background:#0071bb; padding:12px 0px; font-size:12px; line-height:14px; font-weight:block; text-align:center; text-transform: uppercase; border: none; box-shadow: none; outline: none; cursor:pointer;} #footer .new_st_kn2:hover {background:#1989d3; color:#fff;} .GIA #footer .new_st_kn2 {background:#ff8e00;} .GIA #footer .new_st_kn2:hover {background:#fca12f;} .GIA .new_st_kn:hover {background:#ff8e00;} #second.GIA #content .new_st_kn:hover {background:#ff8e00;} .EGE .new_st_kn {color:#303133;} .EGE .new_st_kn:hover {color:#fff;} .new_stkn_mg {margin-left:330px; margin-top:40px;} .otp_otvet {height:150px; width:640px;} .otp_otvet1 {padding: 30px 20px 0 176px; height:120px; background:url("/common/img/img_2013/logo.gif") no-repeat 30px 56px;} .otp_otvet2 {font-size:14px; margin: 0px 39px; margin-top:-68px; padding-left:140px;} /* main gal */ #vagnoe_tab {position:relative; width: 560px; height: 380px; background:url("/common/img/img_2013/back_gal_ege.jpg") no-repeat left top;} .GIA #vagnoe_tab {background:url("/common/img/img_2013/back_gal_gia.jpg") no-repeat left top;} .main_vagnoe { position: relative; /*leave this value alone*/ border: 0px solid black; overflow: scroll; /*leave this value alone*/ width: 560px; /*Width of Carousel Viewer itself*/ height: 380px; /*Height should enough to fit largest content's height*/ margin-left:0px; } .main_vagnoe .vagnoe_belt { position: absolute; /*leave this value alone*/ left: 0; top: 0; } .main_vagnoe .main_vagnoe_line { float: left; /*leave this value alone*/ overflow: hidden; /*clip content that go outside dimensions of holding panel DIV*/ margin: 0px; /*margin around each panel*/ width: 956px; /*Width of each panel holding each content. If removed, widths should be individually defined on each content DIV then. */ } #vagnoe-paginate {position:absolute; right:28px; top:293px; width:60px; height:10px;} #vagnoe-paginate img {margin:0px 2px 0px 3px; float:left;} .main_vagnoe .vagnoe_item {width: 529px; height: 312px; padding-top:68px; padding-left:31px; color:#fff;} .main_vagnoe .vagnoe_item a {color:#fff; text-decoration:none;} .main_vagnoe .vagnoe_item .vagnoe_it_tit1 {height: 75px; width:100%;} .main_vagnoe .vagnoe_item .vagnoe_it_tit {float:left; text-transform: uppercase; padding-bottom:14px; border-bottom:3px solid #ec1c24; font-family: calibri; font-size: 30px; font-weight: bold; line-height: 24px; margin-bottom:34px; display: inline-block;} .main_vagnoe .vagnoe_item .vagnoe_it_tit a:hover {color:#ec1c24;} .main_vagnoe .vagnoe_item .vagnoe_it_tex {font-size:14px; line-height:20px; width:440px; height:114px; padding-bottom:20px;} .main_vagnoe .vagnoe_item .vagnoe_it_tex a {color:#EC1C24;} .main_vagnoe .vagnoe_item .vagnoe_it_tex a:hover {text-decoration: underline;} .main_vagnoe .vagnoe_item .vagnoe_it_kn a {text-transform: uppercase; display:block; border:1px solid #fff; font-size: 14px; padding:12px 0px 12px 30px; width:106px; line-height: 12px; background:url("/common/img/img_2013/str_podrobn.gif") no-repeat 11px 10px;} .main_vagnoe .vagnoe_item .vagnoe_it_kn a:hover {background:url("/common/img/img_2013/str_podrobn.gif") no-repeat 11px 10px #EC1C24;} .GIA .main_vagnoe .vagnoe_item {height: 322px; padding-top:58px;} .GIA .main_vagnoe .vagnoe_item .vagnoe_it_tit1 {height: 104px;} .GIA .main_vagnoe .vagnoe_item .vagnoe_it_tit {line-height: 37px; border-bottom:3px solid #ff8e00; margin-bottom:0px;} .GIA .main_vagnoe .vagnoe_item .vagnoe_it_tit a:hover {color:#ff8e00;} .GIA .main_vagnoe .vagnoe_item .vagnoe_it_kn a:hover {background:url("/common/img/img_2013/str_podrobn.gif") no-repeat 11px 10px #ff8e00;} /* status menu */ .status_menu {padding:18px 29px 18px 31px; background:#f2f2f2; border-bottom:1px solid #bebfc1; color:#949699; line-height: 14px;} .status_menu a {color:#303133; background:url("/common/img/img_2013/str_status_menu.gif") no-repeat right 5px; padding-right:11px;} .status_menu span {padding-left:2px;} .abc .tit {font-weight:bold;} /* h4 */ h4 { position:relative; display:inline-block; padding:9px 18px 9px 17px; margin-bottom:18px; border: 2px solid #ed1c24; line-height:14px; font-size:12px; font-family: verdana; } h4:before, h4:after { left:78%; bottom:-27px; content:"\2666"; font-family: monospace; font-size:50px; line-height:52px; text-align:center; position:absolute; overflow:hidden; -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select: none; user-select: none; } h4:before { color:#ed1c24; clip: rect(25px, 15px, 38px, 0px); } h4:after { bottom:-25px; color:#fff; clip: rect(27px, 15px, 38px, 0px); border-right:2px solid #ed1c24; width:13px; } #print h4 {border:2px solid #000} #print h4:before {color:#000;} #print h4:after {border-right:2px solid #000;} /* form guest new */ .vote_form_new {background:none; width:486px; border:none; padding:0px 0px 50px 0px; font-family: verdana; font-size: 14px;} .form_quest_new {margin-top:10px;} .form_quest_new .td_right .QapTcha {margin: 5px 0px 20px 0px;} .form_quest_new .td_right {width:486px;} .form_quest_new .td_right .imp_write {color:#949699; margin-top:10px; margin-bottom:0px;} .form_quest_new .td_right input {width:448px; padding:10px 18px 10px 17px; font-family: verdana; font-size: 14px; color:#303133; border:1px solid #a9abad; background:#f2f2f2;} .form_quest_new .td_right input[type='checkbox'] {width:19px;} .form_quest_new .td_right input[type='radio'] {width:19px;} .form_quest_new .td_right textarea {width:448px; height:142px; padding:12px 18px 13px 17px; font-family: verdana; font-size: 14px; color:#303133; border:1px solid #a9abad; background:#f2f2f2;} .form_quest_new .td_right .QapTcha .Icons {margin-top: 0px;} .form_quest_new .button_wa_b {color:#fff} .form_quest_new .button_wa_b:disabled {color:#bbcee8; background:#7da7d8;} .form_quest_new .td_right br{ } .form_quest_new .subutton {width:486px; height: 50px;} .form_quest_new .td_right .red_zv1.red_zv_g {background:url("/common/img/img_2013/red_zvezd_g.jpg") no-repeat 65px 12px #f2f2f2;} .form_quest_new .td_right .red_zv2.red_zv_g {background:url("/common/img/img_2013/red_zvezd_g.jpg") no-repeat 143px 13px #f2f2f2;} .form_quest_new .td_right .red_zv1.red_zvezd {background:url("/common/img/img_2013/red_zvezd.jpg") no-repeat 65px 12px #f2f2f2;} .form_quest_new .td_right .red_zv2.red_zvezd {background:url("/common/img/img_2013/red_zvezd.jpg") no-repeat 143px 13px #f2f2f2;} .form_quest_new .td_right .net_zvez {background:#f2f2f2 !important; background-image:none !important;} .tab_spis_vid {} .tab_spis_vid1 {padding-right: 10px; padding-bottom:30px;} .tab_spis_div {width:125px; overflow: hidden; max-height:176px;} .tab_spis_div img {width:125px;} .tab_spis_vid .text {padding-right:5px;} .vid_tab_stan {} .vid_tab_stan .vid_tab_stan1 {padding-right: 10px; padding-bottom:30px;} .vid_tab_stan .vid_tab_stan2 {padding-right:5px;} #print .color_green {color:#000;} #print .div_apel_fl_red {background:#D0D0D0; border:1px solid #D0D0D0;} #print .ege_rezult_b_nb .td_w_bol_text {background:#D0D0D0;} #print .infa_rzo_div_tit {color:#000;} #print .infa_rzo_div_tel span {color:#000;} #print .ege_rezult_b_nb .td2nm .td2nm_kriter {color:#000;} #print .ege_rezult_b_nb .td3nm .td2nm_kriter {color:#000;} #print .new_st_kn {background: #F2F2F2;} #print .sp_zvezd_red {color:#000;} #print .pometki_red {color:#000;} #print .pometki_green {color:#000;} #print .infa_rzo_div_tel {background:#D0D0D0; color:#000;} .ico_za_ch {display:block; width:100px; position: absolute; top: 24px; right: 226px; height:100px; text-decoration:none; background:url("/common/img/img_2013/ico_za_ch_ege.gif") no-repeat left top;} .ico_za_ch:hover {opacity: 0.9; filter: alpha(opacity:90);} .disabled_link{ /*text-decoration: underline;*/ cursor: pointer; } .subm_wrapper{ text-align: right; /*margin-top: -40px;*/ } .manage_users{ color: #000; text-decoration: none; } .deactivation_disclaimer{ position: absolute; bottom: 10px; } .operator_region{ display: inline-block; margin: -10px 0 10px; text-decoration: none; color: #949699; } .faq_cont ul li{ background: none !important; list-style: disc !important; } .faq_cont ul{ list-style: disc !important; } .infa_rzo_div_tel2 { position:absolute; top:-1px; right:-1px; color:#5f4141; font-size:12px; background:url(/common/img/backgr_tel_rzo2.png) no-repeat left top; width:auto; line-height: 12px; padding:2px 30px; text-align:center; height:29px; } .button_wa_b {width:100%; padding-left:0xp; padding-right:0xp; background:#0071bb; font-size: 14px; padding:15px 0px;} .button_wa_b:hover {background:#1989d3; color:#fff;} .check_res .button_wa_b {width:100%; padding-left:0xp; padding-right:0xp; background:#0071bb !important; font-size: 14px; padding:15px 0px;} .check_res .button_wa_b:hover {background:#1989d3 !important; color:#fff;} .check_res .button_wa_b:disabled {background:#7da7d8 !important; color:#bbcee8 !important;} .tr_field_header{ font-weight: bold; } .tr_field_header td{ padding: 10px 0 5px; } .tr_field_content{ } .tr_field_content td{ } .tr_buttons{ } .tr_buttons td{ padding: 10px 0 5px; } .tr_buttons td .button_submit{ padding: 15px 10px; font-size: 14px; background: #0071bb; color: #fff; } .tr_buttons td .button_submit:hover{ background:#1989d3; color:#fff; } .form_quest_new .td_right .field_option{ padding: 5px 0 5px 5px; } .form_quest_new .td_right .field_option input[type='text']{ margin-left: -5px; margin-top: 10px; } .anketa_form .form_quest_new .td_right input[type='text']{ padding: 5px 15px; } ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/png Content-Location: http://ege.edu.ru/common/img/img_2015/grey_menu.png Content-Transfer-Encoding: Base64 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 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/png Content-Location: http://ege.edu.ru/common/img/img_2015/slider_bg.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAjEAAAFBCAYAAACGpf6oAAAACXBIWXMAAAsTAAAL EwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5Jf xUYAAak0SURBVHja7P3rmiS5cSQMuyOiqg/Tc+BBFKnVXs13Se9N72pXK1EcznRX ZcC/HxFAuDvMAURW9XAoVj1Pz/ShKjMyDoC5ubkZ0//v//uJRIhIiIiJ6PgfJ6pf 240oH7+2G9H2RPT8+fj1E9Hn/yJ6/rK/Bi9EKe0/z3z8fzle6HgP5vO163vrL1Y/ m+w/SW6/X47/SD5+yfG658s170vl9YmI1LGi95Hjz+Uc5G1/fU5E6fi89dyxei+2 B2mOCZwDyce/lddd93PH6vXqedWvL+pzZ/u6ks/r15xncM7NMRM41+p65eN8541I tvP40nL+Yt7Pb/kq90a9xuU9RZ0HOj+HbOffZ/1e6homcJ8Q2+te/r2cJ31N9PnP 2/mrfE5O7Xlh3j9fve7pvKb19dRxUz4+13act81eK3NPsnsO3D2lLvv5GuV9wL3W nPvjtetzmvSD4l5DnSPzTAi4p5O9P1ld65TMEmCeR072Fzrmso6k5Xxuy/fWc8bx fUvgtmZ9DvVfULsWwHWK+u8J70luf87cWqkcVFmI7WuLWuf8tfH3nf572fZ1oNx3 Atajeu2Wdj30n88/E8ztPafXhrJmmufPva++3/VaoO9HZnAJgnWrrhcZfAbwOmhv 0eu63s+a6xg8c3VtLvfR5p4nsmsYL0TrA9HjN0Qff0P04Yf99w/viNb3ROs7ouVh //6yP5DYz+nPkV6HyvqzPR/7+dP+++2Z6PaF6MtfiZ7+SvT8876n3z7v9w0d5xLd 7+X5TOvxOZb9GNfH41jX47ldzv1hWY/jT/vv656QOo+XwOu9EqcPRLl9+DTwSIlI gptNL7x6gULPukQ3oLt3IOig+AYjsTcngxeEAIYdYFKbUPk8RER8PEz15PG5vpgN xj1UZv05/oxu9Hruknvg2L2H3iAW96DQfqP5RS+4HO1C6o7ZvIRbcAtoLL8vPyto YWG82LB+2NzNqc8BJwvwwo3DHTu5601g0dHHItQer354kgZjYjdovcihzTKl49Jk Ilr2l9lysMkld/978KLPoZzHJPkEChksxnVTYgwyzLOoiw05f7HaROu1zGq/De5R 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 Wk8AAAAASUVORK5CYII= ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/png Content-Location: http://ege.edu.ru/common/img/img_2015/right_block1.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAANwAAACfCAYAAACSlrdDAAAACXBIWXMAAAsTAAAL EwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5Jf xUYAAAFkSURBVHja7NOxDQAgEAOxPIszetiADip7hJNu2u4kE+C1Lg3gH8OB4cBw gOHAcIDhwHBgOMBwYDjAcGA4MBxgODAcYDgwHGA4MBwYDjAcGA4wHBgODAcYDgwH GA4MBxgODAeGAwwHhgMMB4YDwwGGA8MBhgPDAYYDw4HhAMOB4QDDgeHAcIDhwHCA 4cBwYDjAcGA4wHBgOMBwYDgwHGA4MBxgODAcGA4wHBgOMBwYDjAcGA4MBxgODAcY DgwHhgMMB4YDDAeGAwwHhgPDAYYDwwGGA8OB4QDDgeEAw4HhwHCA4cBwgOHAcIDh wHBgOMBwYDjAcGA4MBxgODAcYDgwHGA4MBwYDjAcGA4wHBgODAcYDgwHGA4MBxgO DAeGAwwHhgMMB4YDwwGGA8MBhgPDgeEAw4HhAMOB4QDDgeHAcIDhwHCA4cBwYDjA cGA4wHBgOMBwYDgwHGA4MBxwdQAAAP//AwDzLgW693Y4ZgAAAABJRU5ErkJggg== ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/png Content-Location: http://ege.edu.ru/common/img/img_2015/pen.png Content-Transfer-Encoding: Base64 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 rkJggg== ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/png Content-Location: http://ege.edu.ru/common/img/img_2015/header_left.png Content-Transfer-Encoding: Base64 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 F2xu8llfXJAGABcuXIDf7zcvQSIzlCG89NJLKJfLSCQSaGtrw/379/GNb3wDkUik iVnH7mp7exvvvfceXnvtNTx8+BBnz55FPB7HSy+9ZF56pHh/8MEHmJmZsWKdHTKL bBaxnEe3694IL0sY1x5Gg40b4BkwCcOw4qHYrFgs2g5zWjzTE0tNJd35jttVuJRl vS4X3uro6EAkEkFvby+2traQTCYtUPMGqwrcS+HquhnoZk7+/2eeecaSCys4L8cD 1d1oUlRoyg0OPMi0meHMgVocPkyvnT7shlih6bBSu0syntSGxe/3WyLidRCOYwVF qIvLqqiZIaSpHQyTsjIQ/X4/ZmZm0NXVhcXFRcOVGaionmZXSxoyNRqkliYSCWvZ e3p6bIjKn82lZKzkmHjIpuIgmEGVq2/7+/sxMzOD69ev2/BXYRFCs9vb20YJ5dlS I0yfz2d28bu7u0aX5XVQIf5lNpyeVq27FjAKF7LC5jyCXWB/f7/dO31HdLCv7wkN QLWwIWWfFTPnafqOqkODGiy6K6u/qi/1tmPBzIKEy/XcRMJrJbysxZ/aU3E2Wq1W Ua1Wsb29jf7+fmPPUQfHf7O7u4vt7W2sra01FTunQWL1et2EumSBsoAnIrO7u4ti sYhcLoeFhQWsrKwgEokgkUjg4cOHePDgQZM/HTvwjY0NvPnmm3jzzTexvr6Ob33r W/j93/99vPXWW/ijP/ojQy6+/e1v4+LFi0Y395J3KKpk0KC6o7pzAVegpiwrFfcp pMaXn/ADDzHdZJlU/H5/k0JcISNXfKnJT+EgNyky4OuAl4e4s7MT8XgcjUbDllSx A9Dg7sJiXlvgtFtoNBqYnZ3Fr/7qr1pV8UUdqTkD0qpON38yCTBgkJHCz1itVm0Q q5iqClNVyKjDfIWx2N4TGtB1CcoS4mfw+XyYnJxEf38/1tfXUSgUbPuoMgGVJUZ2 jcJ/DNo0EWU1z0qIiZGfnQWMVtvd3d0Ih8P2/0kH1+Vaw8PDNhtR2rwKPYk137p1 C3fu3MH09DTGxsZM40TVNiEEJvZqtYpkMomxsTHT4DA4MZHE43EsLCwgk8nYugAO mumdRgeEr6KKZyCkuzU1LTrw5vvB3T0jIyNmfaK6LJUw6IqFg4MDFAqFJsiNSU1h TFW7e73L/D1lR35VnZwmGSY6UrDpmkyURY1fq9Wqdck8ozoTZlLWM84No41GwyjJ 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 jTHFobmuwmZCTCaT9kyZuAgbasfyZZyXNTB7nUnOvLyK0IODA+zs7JhP29NPP41f +IVfwODgYJPITxeWsbsm3bvRaBgporu7G6VSCel02oqdpaUl25vjJpe+vj6juiuT VNcbu7NLMgt1URbPeqPRMEq9Unk1DhCWPjk5wblz5/Dss8/i8ccfx8zMjMF6Gg+8 zG45LlDCTiaTwe3bt/HjH/8Yb775pvnQsQhSjzO3G9XYy05ncnISjz76KK5evYpz 5855EgzcuYr+ntf6FiXceMkuvNClTyQYl9mkw2m+6GTleEE/vDiqma9du4aVlRXE YjFEIpEmk0CdV6hlideMwsvM0k0qbrfjpT/hQdcXisGKh4nJgz+TyZRVhmsp7pVc lJZJaEEJBTqv0vmBFxzorljmA9UWm4GSGLnf7zelcl9fn8GRhCUYcPW64/G4Gfzx 8/X09DStJXC57qVSCRsbG7bLnNdDLJyDdr7QtIUnK6lUKiGfz9vLRBji8uXLCIfD uHnzJu7cuYNMJoNMJmMW+oRGBgYGzJYoGAyanxnXHrM61d0suspYRZKs+nw+n1WZ DHSsJHW+RE8u6kbC4TBmZ2dx//593Lp1C6urq+js7LRZZTKZRC6XQ6FQQDgcth0p 4XDYzlhXVxcKhYK9d9xnz8qZHmn1et0s5l1izecZ7nsVZU3qa+nO9Z1yTVEPDw9R Lpfx/PPP41d+5VcQjUatO9BFfrTSoRs2xaKEe/b397G1tYWdnR3TqmxubhoUx86O FiZuZ89nrN2XWhu581DO49T1mvBnqVQyA1OFgJgoh4eH8cQTT+DJJ5+0zY883+q2 oZIOd6cOYcJKpYKlpSW88cYbeOWVV7C8vNyEzujw3itOa7zlEP/xxx/H888/jwsX LhiL052lfprVi2swrD6JenZcHzmvM9eUYE6rqvkC0sBQyQCuUp0flgtukskkhoaG MDAwYK2qYqVu6+XVEWjmdjPoaRRfrwTkDs35EtOMUAO23RyBUngz3eG/64isNG4K nLijQV9mspJ0vSy9f2jAp9im/izXekbX0JIxRv+rVCpl8wRCXrS3UMEkaaKrq6tN okEOpTn01/vOjXi5XM4o5vy+uVzOBHY6SCZJgpUoEyfZblSXA8D58+eRSCRsVsJE Q3iGbt1zc3OYnp5u6l4ikYjNGLyGveqnRZo3n6/6u1FAx0DkmpOSkcjuKhaLob+/ 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 BirMpwCleBgpB09cTwQOhg09No2uk97e3rbZ2VkrFAqvLD3z2HRqKqhKfO4adEsn Q1D8GrxWWI1F1TfKU+urrkkpy7rRUjtOz73B0014JA5OVJiJwHsuk8nYyMiIwaIJ 95M9vlC8sfCWOxoWS0IjhoV/KP54xuIFDTWyRTGH1yqXy/b8+XNbXFy0jo4OOzg4 sLm5Odvb27Ph4WHr7e212tpa29vbs0KhYKdPn7ahoaEwZ+XO30ssqsj39hV57ug8 Jz1KN+NBR9UWaXkwmL4vL5lUY5ol6XO8M+ZBUtXcS7Srrzan8pKlx8RUm5tqbLX/ ew+1dbu7u0tm9vLFixeHzMBhuAZJgg8Os2pwYFBJsu8UV1aAfkqlUsCXodJHMkGb jjeKdvzly5eBwgz1MmC9+vr60NVwF6PUXKY484FjuEhFnOrLpUlGYRPeAe6RCmK+ ZggigBoZKy+Xy+HPWDCn3kQ6mNbDpl5puh4YP/Pg4MAeP35sQ0ND1tbWVjHPQYcK ajur+5k2DmgHsCU74Co0yA8gJy9lo2ki5MJAE4+3AwjngQ1UPRorPwN8DXWmhDOr mhpl7e3v79vW1patrq7a8+fPg2KeNSqApNm7DfeZq33umPBzseoASAFbMjHFnj8r sy8Br2GhWLFYtLW1NZubmwvD+mfPnlkul7Nz585ZV1eX7ezsBHbYyMiItbW1vbLb iJMGPgMzxbhj0W5Tg2NsTbHHjvICqWdQmWT1osxYTT4eXJo0xE8SYlZjmR0lSWhy 8WaunvlvTKOTNG+JEQqkizl2eHj4/P8NAOzVMDPS6KDSAAAAAElFTkSuQmCC ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/png Content-Location: http://ege.edu.ru/common/img/img_2015/logo_spec.png Content-Transfer-Encoding: Base64 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 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline Content-Type: image/gif Content-Location: http://ege.edu.ru/common/img/img_2015/ico_soc_snew_bw.gif Content-Transfer-Encoding: Base64 R0lGODlhsQA8AOYAALCwsOrq6tLS0pWVlfv7+7+/v3t7e9zc3G1tba6uruXl5d7e 3vPz89ra2oSEhL6+vn9/f9vb27e3t6+vr7+/v9PT05eXl4aGhr+/v2dnZ319fZWV laCgoMXFxdLS0s/Pz8XFxYKCgpOTk5+fn6WlpZ+fn729vcvLy6WlpbKysoiIiJKS kqOjo8fHx66uru/v73p6erS0tHl5eebm5qmpqcTExLm5ue/v78fHx8vLy/j4+MHB wdPT07q6uo+Pj7e3t9ra2ubm5mBgYJaWluDg4Pf392ZmZpCQkJGRkbGxsZubm4KC goqKinBwcHh4eJGRkYyMjMnJyd3d3YmJiZiYmKioqG1tbbKysuvr68rKyqKiotzc 3NPT021tbZ6enunp6YqKire3t+Tk5KWlpZ2dncTExMLCwrCwsKqqqpCQkMjIyNLS 0lxcXOPj43JyctTU1J+fn5eXl5+fn2JiYmNjY7W1tYSEhJGRkenp6YyMjNHR0e7u 7oKCgouLi////////yH5BAEAAH8ALAAAAACxADwAAAf/gH9/RQKFhoeIhjOCjI2O f3hVTA6UlZaWTEM4j5yMRVhEEaKjpKREWEWdqgQEfq6vsLF+rKq1jQQSfXy7vL2+ vH0SBH83Al9SyMnKy1JtyLaCRBwA1NXW19VVFNCCDBFERbLifkWhDNyCrOPrrqno nBIDPRL09fb39S4oJn/Gif+I2gjAAo0ah4MIEypECICDGGhFIjBgN86bO2gTWWnc yHEjuXPvHPXR9avkr1x7PkgByNJQBFt7OFRRQrOmzZs1D2KABoriulPc9uyZ1bEo xyIKQjrio8tFDiALgkiV2oLXgBc7eEngowAEoi/tWhZSY0sBzSFo06pFi4QmByVo /5XUgQbO57hy3BQEIFCkL4MfezoQmVVEY9/DRRoobcSnxwsg84K4epHDRK8Bfqru 2qqggIAooKX4+bKFHOjTqEGTraUAyZAnsGPLfqIJCwMGWJTAnmsrgiwsFIIHx1Gh layX0BQoIHCbQRE0KTYoONFgTwMiCpo397CYER8/OXipWOAKhS/MmvlwLgCa/Y0b YUiUlhLlc5QC7PNvYs3kCZP/AAboQAWwFDHEJElA41ssFSDQxIMQyrAgLMiVBY52 DXQBHQsbPLABGj9ox8Ae3HX3x3cDXDbZeZlpxVUMBdggYxFfkEDCGrHcgJ+MMe6n igKXBOnAE+GQgwcRTzigQf+CvclSQYQQNiHDcXkRwUAAWO4RQBcdgPEAGCyAicaV WQZQYnffkcQLeX6gcNULcPqhA5wv6MDVFTLKeEONJISxxp9rlHZDnjL62AmQGiSq 6KIaDGEcABoomSiTtUz4ypNSulLHgwgY90qFrFWnnF5bfrkBBCx0geoeowagwJmL oeiLBK648Gacc8JppwI0xOBrDHvaKKywpdnwKw2GcqKABk406+yzbjBh3BBuuNGs G5SqYqkrmE7pR7dUJueBAthhp8AGaqgBwQYeQADGD+TGSwSsSn3ngi8olKdiepzR 4K+/wQ5Lho1bEGDDv1rsxJoTVlTrsMNOaGMcBQBUwXD/Btl24htH3QbHxIM4cOQH qD96QEQD13lgghk9tNyDGS3w8IYeKNd8gokn+gEEvnKqyQd6LiqgxdBDB0tGGFsk vUUbfsxA9NAK/+hEBhlYYXXDVjsxUSxYuEF1xpxsvBGmUTZxhxgik3wodR540IAL I6AwQgghjDDCCiiYkYUebbd9s4nftdkLD35Ytm/QXmjhxeI3tEEGGWXEcoDiiy8e 9aFTU6255m5sTaHmYD/iG2IEkP2fDBAWd9jIeZ3QtwcjmBGAeSFkgULdcdfw+t9o uqKDCQMMsEOL52GFuBcWJI/FF4+T4KkfN9CQ/PSXK5v55ppbwQEFE1fxBOgK+qFd /xHgtsLBg0gwdxvryXXgwQnw281D7HovwPL8LagBP/w487GDDrFIj0k2wxXkJe8I XCAACQbWpzCEoQwEwML0kle9RyjgetijGhs0YBwmsGFzoXOEb4QiFAZ0S30UeJAM CEBC9pWlAyfogAxXMAIeoCALONQbDxawjxjKkHex0kUfrjKLAc6KK3GwwBGWeAU/ bOFxUHwcjrSwxCVW0BEXzCD2OOiKJ9ABhOHDEpZMqELmEAF1ZiuCGF3ImgfIUIZ2 y8ENcdiDLPCgByMwAQbe2IH+qck45jEiARUQhyNA4ZBQ4IITbTSwgbWBABZA5BGu 2IgsalFzXPSDF8HYpFEpYP8PZGuCg1LHKuWw8UdufIAqV7CCLIzgDS0wwxte9oYR JECVquwj4NQEBFcQ4F6C5EwhEXkBBLbjMK3gAiIPSUlGWPKSdMjkJsHXyVY1qGwI kEEFGODJUx5KlT/4wQOmQLdyhmAF5kzBA8LpRj+qAAVOgYUASyJMKFzgnvjUAgi4 wE9+XsGe+IRCMwWxLK9dMgMOMM73OBfCRviGCBDFDgNwQFGKVkAMfthDRCHqTWWB M5wTkAMcpkDSkk5BDgkIJzt1iaYgECAIOaCHZFyxswHWE5/4XIJOd6pTnBZzoH9Q QMUWkhAAPKqo27AFOE5WM+yI0VVMrdl18JIccabgqin/UKlWVYrVq7YTcDzwGR9a 8IqsmGQre0giT9fK1p0akqWd2AMAKFCFutr1rkZ1RcXqSg24dgIU1pGqYAeLMo0S BBp7SEEHzoCGCZxhApCNbGQbG9kHKNaPJXFBK+x0Vj4Q4Ad2UGIVR0vaKkYyDwGw xWfHEBxsUIN7s6DYXAEwhqTYIiJXasDrdrvbBgTAItz4LAs6gMviGre4HfgBC2zb nZGc1RVi1Uof/hAAFhjgutjNrnaxmwcPDMMW1fUBFcZL3vKad7w+8C43vFEXu5RD Iu+o7gbmS9/62re+6jVRLoLHX/7mSwf9DfA+BBGYFEj2wAj+QQO+i9gOIPjAj42s /4IZDBEsHPfCuUSFUgr84A5PGGd/wEV0BckUYYD4xChOsYpXzOIWu/jFMI6xjGdM 4xrb+MY4zrGOd8zjHvv4x0AOspCHTOQiG/nISE6ykpfM5CY7+clQjrKUp0xlWzDg A/jJspa3jJ8oLAIdeOCAkMY8pGTdFhSlSPMoTnERdDCHhHCOc5zb3B0CAG8keM6z nvM8ABMM4wZe4cIHBk3oQht60AfgBhGGUIUxEPXRjk4qRiJQgQDI+dJaqgB80VEE THuahCAxkQlQgI9Sl9oFO/gDFwQAgla7+tWwdvUHQHDYWowBAGvJta45MAQiQCQC n/z0pRUQATqrwtJPTbayxf+opVAvJnh7jna047EHEMw61tiOtdocsQclcAAJ4A63 uMct7iEA9Q9YqICwPV2BWtdCo1patrzFSC6cDbEPTonKVKSSAzxfZQd4NkEfOgMC LR9AKGIoOJe1vJofgTtAEAeQA8QNIN7UggiWXvelA+Dr5IhqVGhowA88oCVSeXJU 9ApJMF6wAHq8YDI8ADie89XvkQhcAVfQMhf2wIUoaGnhWjYzFv9DZkowgQLfCAUS KNFQRkRAzhGog9SlTgEcZDzO27agbz3JgjB54AHUcd24Tp7yd/TBD2HFM5tcoGea B3zgOf+VGGZQghL4nAtZ/pXehV7JoleCAnAOwCQc0HT/QTw9zhiYgxEWz/gm4ADq eRlXRBXQgS50fQNgmICYyLXRsqPj7Cjg82TaDp634zwGV0i9GLhQ9zJgAc4HQH3q Uw9UIEmKUYpyQLAVUIEKKMkJhf/D4eGMASMgwEEIMH42IS+uqKKsCz+AQArWtS4W OL8BQFTK2QegZza5iU4vz1WdBk6DK/xLDAeoewnKEIUysH8PBzD/v2qfqGfZHwFM yPgYnMAsJyAg+MNHQsW3fAEAAMc3B1cnFFmHRW4jVR7QBdO3AV0ggesyWNmncm2i Z7TiB/EAfnJCJzowcF7gL1pAA6unfigoAj53BSVIA15Qe/53fDI4g1bgABnHBFVz /3wYoyByNoAyIBQ4YHxNwHxlwTZ90wBe8gATiAMQAAEht1sXaHZ+0AN65gK1kmdu Z3MiWDlecIIiUAIiEIZh6HMuuDgWUHsIIARXs4YNMw0ZVwcH4TVCAIDxliUD2AR1 kAQycHyA91R7sICV5D7w83Um4AKGeIgm0AI1AEP7wz8mcnYLUIVywn0zV3paqAAG lDwHwAVhaHen8QF/OEFnWBZpmD1VQzUIQARQZwVCsIO9UYdYMoDJp3xMUGl+CIjO BEM/BAcjwIt0w0px0wMmAHZvFIWfd4V41ksyV4k11wc3l0RVRAScKAJhUEJCwQWi VUVomAFC0I1U04pVo4pxhv8D3TiHPOhJASCLMoA6s2h1o/KHeeFGb7QCLrAAcIBO JjA3uLOIfGRvvrMDKIACZNWM/oYVpjdMh7SJnZiAB+AFyyRQpFiOEumNQwAAJASH TOCNdHhyPkhCd3B8+feOuEhQqbRKK9ACI+ACwvgGhlgDtoRc9tYCAAQLBCltzjhw cUBMOIAFYPiFDrR+WHAAD7mNEymRbIAAGecAbCCRdLhRCtCR2JEEyfeDEQWPVbVO 4XQ3LbAPJlCIiVgDKHBLKuVXKsd9wfNyBGCTenZzaQBQF0ADexAFYjiXZZBWOIWG RTmRTpCUS1mOdChVROCDrlIBe4h/ClAzVlkWW8VKKNn/lV5ZAy6wAgmQVeFElmZH iX1gHGynlpeYBhfAU48XBT0phh8QAGmwUxdAlHnZjXspFEpZjq5YKYGFMoGpfEag eMdnBDggVYnJGln1WGjASvlYAybQA5DpAi4pBylwBldlmZ+HmWwiYpzJlp+5U3bw eHswA9o5A6+HAzDAU3i5mkLABq25B6+pkTz4Og2QeIzHeDKAAa/SN735IxNgYI1F TuaUnyHAApLlnNwwRAPgAhKQAzQ5nQPnmTCQoAoaB1dQURRFA0ugoN9JfwfFjRqQ lOD4Nen5OkQgHMOhbrr1OvN5KMCJBmiwAXJgUir6ISbaWP4JDX0QBDoQBDEnATOl /zNqyZYRKqE82qMKmppl4Wi6lhYckHG4FhfbQxdm0ogN6ICNOIgclxeQ1XUsgAZd Z6VY2qJWSqUT8KK20Ac8gJkjQaCu0AI2KXBpBQU+uqY/agdeygC39mhvMQZG6m0y wQFeim4VgH1P2qd92gDtFhQgQqWEWqiGOgFokKeqcG97plk9I20CRwB1YABH4FOW 6lNQsAR5wFyd8FlUkA1VUDF7BQCvtwd1EKq0RQWpdVvAhn189KqvSh3EZmyc8Fkb 8AMG1mEQ9gMnuqrdAW3T5gpimmfxQF0bsF3Iql1gkF+1EF4+8KzQGq3SCq3MWgve UGkal2mbxg3ydV/eal/VqjoUwBNg/iUnbkKuA4ACqfYHHKarB/ZhQeFg7vquC/YO n4BhF9YBGhYS7TqvkAWvJmJnw8qZI9FnBBAIADs= ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=style_ege_2015.css Content-Type: text/css; name=style_ege_2015.css Content-Location: http://ege.edu.ru/common/css/style_ege_2015.css Content-Transfer-Encoding: 8bit /** Generated by FG **/ /*@font-face { font-family: 'Helvetica'; src: url('fonts/948646.eot'); src: local('O'), url('fonts/948646.woff') format('woff'), url('fonts/948646.ttf') format('truetype'), url('fonts/948646.svg') format('svg'); font-weight: normal; font-style: normal; }*/ @font-face { font-family: 'Helvetica'; src: url('fonts/HelveticaNeueCyr-Medium.eot'); src: local('O'), url('fonts/HelveticaNeueCyr-Medium.woff') format('woff'), url('fonts/HelveticaNeueCyr-Medium.ttf') format('truetype'), url('fonts/HelveticaNeueCyr-Medium.svg') format('svg'); font-weight: normal; font-style: normal; } body { color: #1f262d; font-size: 12px; line-height: normal !important; /*font-family: Helvetica,Sans-Serif !important;*/ background: url("/common/img/img_2013/back_main.jpg") repeat-x left top #bcc7e6; } .main_top *, .ege_site_header *, .menu_top *, .infa_main *{ font-family: Helvetica,Sans-Serif !important; } .menu_top { height: 32px !important; margin-bottom: 0px; background: url("/common/img/img_2015/grey_menu.png") no-repeat center -10px !important; position: relative; z-index: 100; } .menu_top .menu1 { padding: 8px 10px 2px 10px !important; height: 23px !important; display: block; text-align: left !important; font-size: 15px !important; font-weight: normal !important; color: #000 !important; text-decoration: none; text-transform: uppercase; position: relative; } .menu_view { position: absolute; left: 0px; top: 32px !important; z-index: 1000; background: #f2f2f2; padding: 28px 31px 28px 31px; visibility: hidden; /* min-height: 240px; */ width: 938px; } #vagnoe_tab { position: relative; width: 560px; height: 320px !important; background: url("/common/img/img_2015/slider_bg.png") no-repeat left top !important; } .infa_mtd2_div { position: relative; width: 440px; height: 320px !important; background: url("/common/img/img_2013/infa_sprava.jpg") no-repeat left top; text-transform: uppercase; font-size: 18px; font-family: calibri; font-weight: normal !important; line-height: 24px; } #vagnoe-paginate { position: absolute; left: 37px !important; right: auto !important; top: 260px !important; width: auto !important; height: 10px; } .menu_top_tbl { width: auto !important; } .menu_m_1 .menu1 { padding-left: 20px !important; text-align: left !important; } .main_vagnoe .vagnoe_item { width: 529px; height: 312px; padding-top: 20px !important; padding-left: 40px !important; color: #fff; } .main_vagnoe .vagnoe_item .vagnoe_it_link a{ text-decoration: underline; font-size: 14px; } .main_vagnoe .vagnoe_item .vagnoe_it_tex{ height: auto !important; padding-bottom: 5px !important; line-height: 1.2em !important; font-size: 12px !important; font-weight: normal !important; } .main_vagnoe .vagnoe_item .vagnoe_it_tit1 { height: 65px !important; width: 100%; } .main_vagnoe .vagnoe_item .vagnoe_it_tit { float: left; text-transform: uppercase; padding-bottom: 5px !important; border-bottom: none !important; font-family: Helvetica,Sans-Serif !important; font-size: 30px; font-weight: normal !important; line-height: 25px !important; margin-bottom: 0px !important; display: inline-block; margin-top: 12px; } .infa_mtd2_div { position: relative; width: 440px; height: 380px; background: url("/common/img/img_2013/infa_sprava.jpg") no-repeat left top; text-transform: uppercase; font-size: 16px !important; font-family: Helvetica,Sans-Serif !important; font-weight: normal !important; line-height: 24px; } .infa_mtd2_d_1{ position: absolute; width: 50%; height: 50%; left: 0; top: 0; background: url('/common/img/img_2015/right_block1.png') center center; } .infa_mtd2_d_2{ position: absolute; width: 50%; height: 50%; left: 0; bottom: 0; vertical-align: middle; } .infa_mtd2_d_3{ position: absolute; width: 50%; height: 50%; right: 0; top: 0; background: #e30613; } .infa_mtd2_d_4{ position: absolute; width: 50%; height: 50%; right: 0; bottom: 0; vertical-align: middle; background: url('/common/img/img_2015/pen.png') center center; } .infa_mtd2_d_1 a { display: block; padding: 40px 25px; color: #0069b4 !important; line-height: 1.2em; } .infa_mtd2_d_2 a { margin-top: 80px; display: block; padding: 0px 25px; color: #fff !important; line-height: 1.2em; } .infa_mtd2_d_3 a { padding: 40px 25px; display: block; color: #fff !important; font-weight: normal !important; line-height: 1.2em; } .infa_mtd2_d_4 a { margin-top: 80px; display: block; padding: 0px 25px; color: #e30613 !important; line-height: 1.2em; } .ege_site_header{ background: url('/common/img/img_2015/header_left.png') no-repeat 0 -10px; height: 200px; } .ege_site_header .header_slogan { position: absolute; left: 375px; top: 110px; color: #e30613; text-transform: uppercase; font-weight: normal !important; width: 200px; font-size: 11px; text-align: center; } .ege_site_header .header_slogan .header_slogan2{ color: #000; } .ege_site_header .header_spec_link { position: absolute; top: 95px; width: 162px; height: 95px; background: url('/common/img/img_2015/logo_spec.png') no-repeat; right: 250px; } .ege_site_header .header_logo_main { position: absolute; top: 95px; right: 45px; } .menu_top .menu_m .sel:before{ display: none; } .top_right_soc .soc_se0 { background: url("/common/img/img_2015/livejournal_ico_bw.gif") no-repeat 0px 0px !important; } .top_right_soc .soc_se1 { background: url("/common/img/img_2015/ico_soc_snew_bw.gif") no-repeat 0px 0px !important; } .top_right_soc .soc_se2 { background: url("/common/img/img_2015/ico_soc_snew_bw.gif") no-repeat -35px 0px !important; } .top_right_soc .soc_se3 { background: url("/common/img/img_2015/ico_soc_snew_bw.gif") no-repeat -71px 0px !important; } .top_right_soc .soc_se4 { background: url("/common/img/img_2015/ico_soc_snew_bw.gif") no-repeat -108px 0px !important; } ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=mootools.js Content-Type: application/x-javascript; name=mootools.js Content-Location: http://ege.edu.ru/common/js/mootools.js Content-Transfer-Encoding: Base64 dmFyIE1vb1Rvb2xzPXt2ZXJzaW9uOiIxLjIuNCIsYnVpbGQ6IjBkOTExMzI0MWE5 MGI5Y2Q1NjQzYjkyNjc5NTg1MmEyMDI2NzEwZDQifTt2YXIgTmF0aXZlPWZ1bmN0 aW9uKGspe2s9a3x8e307dmFyIGE9ay5uYW1lO3ZhciBpPWsubGVnYWN5O3ZhciBi PWsucHJvdGVjdDt2YXIgYz1rLmltcGxlbWVudDt2YXIgaD1rLmdlbmVyaWNzO3Zh ciBmPWsuaW5pdGlhbGl6ZTt2YXIgZz1rLmFmdGVySW1wbGVtZW50fHxmdW5jdGlv bigpe307dmFyIGQ9Znx8aTtoPWghPT1mYWxzZTtkLmNvbnN0cnVjdG9yPU5hdGl2 ZTtkLiRmYW1pbHk9e25hbWU6Im5hdGl2ZSJ9O2lmKGkmJmYpe2QucHJvdG90eXBl PWkucHJvdG90eXBlfWQucHJvdG90eXBlLmNvbnN0cnVjdG9yPWQ7aWYoYSl7dmFy IGU9YS50b0xvd2VyQ2FzZSgpO2QucHJvdG90eXBlLiRmYW1pbHk9e25hbWU6ZX07 TmF0aXZlLnR5cGl6ZShkLGUpfXZhciBqPWZ1bmN0aW9uKG4sbCxvLG0pe2lmKCFi fHxtfHwhbi5wcm90b3R5cGVbbF0pe24ucHJvdG90eXBlW2xdPW99aWYoaCl7TmF0 aXZlLmdlbmVyaWNpemUobixsLGIpfWcuY2FsbChuLGwsbyk7cmV0dXJuIG59O2Qu YWxpYXM9ZnVuY3Rpb24obixsLHApe2lmKHR5cGVvZiBuPT0ic3RyaW5nIil7dmFy IG89dGhpcy5wcm90b3R5cGVbbl07aWYoKG49bykpe3JldHVybiBqKHRoaXMsbCxu LHApfX1mb3IodmFyIG0gaW4gbil7dGhpcy5hbGlhcyhtLG5bbV0sbCl9cmV0dXJu IHRoaXN9O2QuaW1wbGVtZW50PWZ1bmN0aW9uKG0sbCxvKXtpZih0eXBlb2YgbT09 InN0cmluZyIpe3JldHVybiBqKHRoaXMsbSxsLG8pfWZvcih2YXIgbiBpbiBtKXtq KHRoaXMsbixtW25dLGwpfXJldHVybiB0aGlzfTtpZihjKXtkLmltcGxlbWVudChj KX1yZXR1cm4gZH07TmF0aXZlLmdlbmVyaWNpemU9ZnVuY3Rpb24oYixjLGEpe2lm KCghYXx8IWJbY10pJiZ0eXBlb2YgYi5wcm90b3R5cGVbY109PSJmdW5jdGlvbiIp e2JbY109ZnVuY3Rpb24oKXt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2Fs bChhcmd1bWVudHMpO3JldHVybiBiLnByb3RvdHlwZVtjXS5hcHBseShkLnNoaWZ0 KCksZCl9fX07TmF0aXZlLmltcGxlbWVudD1mdW5jdGlvbihkLGMpe2Zvcih2YXIg Yj0wLGE9ZC5sZW5ndGg7YjxhO2IrKyl7ZFtiXS5pbXBsZW1lbnQoYyl9fTtOYXRp dmUudHlwaXplPWZ1bmN0aW9uKGEsYil7aWYoIWEudHlwZSl7YS50eXBlPWZ1bmN0 aW9uKGMpe3JldHVybigkdHlwZShjKT09PWIpfX19OyhmdW5jdGlvbigpe3ZhciBh PXtBcnJheTpBcnJheSxEYXRlOkRhdGUsRnVuY3Rpb246RnVuY3Rpb24sTnVtYmVy Ok51bWJlcixSZWdFeHA6UmVnRXhwLFN0cmluZzpTdHJpbmd9O2Zvcih2YXIgaCBp biBhKXtuZXcgTmF0aXZlKHtuYW1lOmgsaW5pdGlhbGl6ZTphW2hdLHByb3RlY3Q6 dHJ1ZX0pfXZhciBkPXsiYm9vbGVhbiI6Qm9vbGVhbiwibmF0aXZlIjpOYXRpdmUs b2JqZWN0Ok9iamVjdH07Zm9yKHZhciBjIGluIGQpe05hdGl2ZS50eXBpemUoZFtj XSxjKX12YXIgZj17QXJyYXk6WyJjb25jYXQiLCJpbmRleE9mIiwiam9pbiIsImxh c3RJbmRleE9mIiwicG9wIiwicHVzaCIsInJldmVyc2UiLCJzaGlmdCIsInNsaWNl Iiwic29ydCIsInNwbGljZSIsInRvU3RyaW5nIiwidW5zaGlmdCIsInZhbHVlT2Yi XSxTdHJpbmc6WyJjaGFyQXQiLCJjaGFyQ29kZUF0IiwiY29uY2F0IiwiaW5kZXhP ZiIsImxhc3RJbmRleE9mIiwibWF0Y2giLCJyZXBsYWNlIiwic2VhcmNoIiwic2xp Y2UiLCJzcGxpdCIsInN1YnN0ciIsInN1YnN0cmluZyIsInRvTG93ZXJDYXNlIiwi dG9VcHBlckNhc2UiLCJ2YWx1ZU9mIl19O2Zvcih2YXIgZSBpbiBmKXtmb3IodmFy IGI9ZltlXS5sZW5ndGg7Yi0tOyl7TmF0aXZlLmdlbmVyaWNpemUoYVtlXSxmW2Vd W2JdLHRydWUpfX19KSgpO3ZhciBIYXNoPW5ldyBOYXRpdmUoe25hbWU6Ikhhc2gi LGluaXRpYWxpemU6ZnVuY3Rpb24oYSl7aWYoJHR5cGUoYSk9PSJoYXNoIil7YT0k dW5saW5rKGEuZ2V0Q2xlYW4oKSl9Zm9yKHZhciBiIGluIGEpe3RoaXNbYl09YVti XX1yZXR1cm4gdGhpc319KTtIYXNoLmltcGxlbWVudCh7Zm9yRWFjaDpmdW5jdGlv bihiLGMpe2Zvcih2YXIgYSBpbiB0aGlzKXtpZih0aGlzLmhhc093blByb3BlcnR5 KGEpKXtiLmNhbGwoYyx0aGlzW2FdLGEsdGhpcyl9fX0sZ2V0Q2xlYW46ZnVuY3Rp b24oKXt2YXIgYj17fTtmb3IodmFyIGEgaW4gdGhpcyl7aWYodGhpcy5oYXNPd25Q cm9wZXJ0eShhKSl7YlthXT10aGlzW2FdfX1yZXR1cm4gYn0sZ2V0TGVuZ3RoOmZ1 bmN0aW9uKCl7dmFyIGI9MDtmb3IodmFyIGEgaW4gdGhpcyl7aWYodGhpcy5oYXNP d25Qcm9wZXJ0eShhKSl7YisrfX1yZXR1cm4gYn19KTtIYXNoLmFsaWFzKCJmb3JF YWNoIiwiZWFjaCIpO0FycmF5LmltcGxlbWVudCh7Zm9yRWFjaDpmdW5jdGlvbihj LGQpe2Zvcih2YXIgYj0wLGE9dGhpcy5sZW5ndGg7YjxhO2IrKyl7Yy5jYWxsKGQs dGhpc1tiXSxiLHRoaXMpfX19KTtBcnJheS5hbGlhcygiZm9yRWFjaCIsImVhY2gi KTtmdW5jdGlvbiAkQShiKXtpZihiLml0ZW0pe3ZhciBhPWIubGVuZ3RoLGM9bmV3 IEFycmF5KGEpO3doaWxlKGEtLSl7Y1thXT1iW2FdfXJldHVybiBjfXJldHVybiBB cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChiKX1mdW5jdGlvbiAkYXJndW1lbnRz KGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHNbYV19fWZ1bmN0 aW9uICRjaGsoYSl7cmV0dXJuICEhKGF8fGE9PT0wKX1mdW5jdGlvbiAkY2xlYXIo YSl7Y2xlYXJUaW1lb3V0KGEpO2NsZWFySW50ZXJ2YWwoYSk7cmV0dXJuIG51bGx9 ZnVuY3Rpb24gJGRlZmluZWQoYSl7cmV0dXJuKGEhPXVuZGVmaW5lZCl9ZnVuY3Rp b24gJGVhY2goYyxiLGQpe3ZhciBhPSR0eXBlKGMpOygoYT09ImFyZ3VtZW50cyJ8 fGE9PSJjb2xsZWN0aW9uInx8YT09ImFycmF5Iik/QXJyYXk6SGFzaCkuZWFjaChj LGIsZCl9ZnVuY3Rpb24gJGVtcHR5KCl7fWZ1bmN0aW9uICRleHRlbmQoYyxhKXtm b3IodmFyIGIgaW4gKGF8fHt9KSl7Y1tiXT1hW2JdfXJldHVybiBjfWZ1bmN0aW9u ICRIKGEpe3JldHVybiBuZXcgSGFzaChhKX1mdW5jdGlvbiAkbGFtYmRhKGEpe3Jl dHVybigkdHlwZShhKT09ImZ1bmN0aW9uIik/YTpmdW5jdGlvbigpe3JldHVybiBh fX1mdW5jdGlvbiAkbWVyZ2UoKXt2YXIgYT1BcnJheS5zbGljZShhcmd1bWVudHMp O2EudW5zaGlmdCh7fSk7cmV0dXJuICRtaXhpbi5hcHBseShudWxsLGEpfWZ1bmN0 aW9uICRtaXhpbihlKXtmb3IodmFyIGQ9MSxhPWFyZ3VtZW50cy5sZW5ndGg7ZDxh O2QrKyl7dmFyIGI9YXJndW1lbnRzW2RdO2lmKCR0eXBlKGIpIT0ib2JqZWN0Iil7 Y29udGludWV9Zm9yKHZhciBjIGluIGIpe3ZhciBnPWJbY10sZj1lW2NdO2VbY109 KGYmJiR0eXBlKGcpPT0ib2JqZWN0IiYmJHR5cGUoZik9PSJvYmplY3QiKT8kbWl4 aW4oZixnKTokdW5saW5rKGcpfX1yZXR1cm4gZX1mdW5jdGlvbiAkcGljaygpe2Zv cih2YXIgYj0wLGE9YXJndW1lbnRzLmxlbmd0aDtiPGE7YisrKXtpZihhcmd1bWVu dHNbYl0hPXVuZGVmaW5lZCl7cmV0dXJuIGFyZ3VtZW50c1tiXX19cmV0dXJuIG51 bGx9ZnVuY3Rpb24gJHJhbmRvbShiLGEpe3JldHVybiBNYXRoLmZsb29yKE1hdGgu cmFuZG9tKCkqKGEtYisxKStiKX1mdW5jdGlvbiAkc3BsYXQoYil7dmFyIGE9JHR5 cGUoYik7cmV0dXJuKGEpPygoYSE9ImFycmF5IiYmYSE9ImFyZ3VtZW50cyIpP1ti XTpiKTpbXX12YXIgJHRpbWU9RGF0ZS5ub3d8fGZ1bmN0aW9uKCl7cmV0dXJuICtu ZXcgRGF0ZX07ZnVuY3Rpb24gJHRyeSgpe2Zvcih2YXIgYj0wLGE9YXJndW1lbnRz Lmxlbmd0aDtiPGE7YisrKXt0cnl7cmV0dXJuIGFyZ3VtZW50c1tiXSgpfWNhdGNo KGMpe319cmV0dXJuIG51bGx9ZnVuY3Rpb24gJHR5cGUoYSl7aWYoYT09dW5kZWZp bmVkKXtyZXR1cm4gZmFsc2V9aWYoYS4kZmFtaWx5KXtyZXR1cm4oYS4kZmFtaWx5 Lm5hbWU9PSJudW1iZXIiJiYhaXNGaW5pdGUoYSkpP2ZhbHNlOmEuJGZhbWlseS5u YW1lfWlmKGEubm9kZU5hbWUpe3N3aXRjaChhLm5vZGVUeXBlKXtjYXNlIDE6cmV0 dXJuImVsZW1lbnQiO2Nhc2UgMzpyZXR1cm4oL1xTLykudGVzdChhLm5vZGVWYWx1 ZSk/InRleHRub2RlIjoid2hpdGVzcGFjZSJ9fWVsc2V7aWYodHlwZW9mIGEubGVu Z3RoPT0ibnVtYmVyIil7aWYoYS5jYWxsZWUpe3JldHVybiJhcmd1bWVudHMifWVs c2V7aWYoYS5pdGVtKXtyZXR1cm4iY29sbGVjdGlvbiJ9fX19cmV0dXJuIHR5cGVv ZiBhfWZ1bmN0aW9uICR1bmxpbmsoYyl7dmFyIGI7c3dpdGNoKCR0eXBlKGMpKXtj YXNlIm9iamVjdCI6Yj17fTtmb3IodmFyIGUgaW4gYyl7YltlXT0kdW5saW5rKGNb ZV0pfWJyZWFrO2Nhc2UiaGFzaCI6Yj1uZXcgSGFzaChjKTticmVhaztjYXNlImFy cmF5IjpiPVtdO2Zvcih2YXIgZD0wLGE9Yy5sZW5ndGg7ZDxhO2QrKyl7YltkXT0k dW5saW5rKGNbZF0pfWJyZWFrO2RlZmF1bHQ6cmV0dXJuIGN9cmV0dXJuIGJ9dmFy IEJyb3dzZXI9JG1lcmdlKHtFbmdpbmU6e25hbWU6InVua25vd24iLHZlcnNpb246 MH0sUGxhdGZvcm06e25hbWU6KHdpbmRvdy5vcmllbnRhdGlvbiE9dW5kZWZpbmVk KT8iaXBvZCI6KG5hdmlnYXRvci5wbGF0Zm9ybS5tYXRjaCgvbWFjfHdpbnxsaW51 eC9pKXx8WyJvdGhlciJdKVswXS50b0xvd2VyQ2FzZSgpfSxGZWF0dXJlczp7eHBh dGg6ISEoZG9jdW1lbnQuZXZhbHVhdGUpLGFpcjohISh3aW5kb3cucnVudGltZSks cXVlcnk6ISEoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcil9LFBsdWdpbnM6e30sRW5n aW5lczp7cHJlc3RvOmZ1bmN0aW9uKCl7cmV0dXJuKCF3aW5kb3cub3BlcmEpP2Zh bHNlOigoYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIpPzk2MDooKGRvY3VtZW50Lmdl dEVsZW1lbnRzQnlDbGFzc05hbWUpPzk1MDo5MjUpKX0sdHJpZGVudDpmdW5jdGlv bigpe3JldHVybighd2luZG93LkFjdGl2ZVhPYmplY3QpP2ZhbHNlOigod2luZG93 LlhNTEh0dHBSZXF1ZXN0KT8oKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpPzY6 NSk6NCl9LHdlYmtpdDpmdW5jdGlvbigpe3JldHVybihuYXZpZ2F0b3IudGFpbnRF bmFibGVkKT9mYWxzZTooKEJyb3dzZXIuRmVhdHVyZXMueHBhdGgpPygoQnJvd3Nl ci5GZWF0dXJlcy5xdWVyeSk/NTI1OjQyMCk6NDE5KX0sZ2Vja286ZnVuY3Rpb24o KXtyZXR1cm4oIWRvY3VtZW50LmdldEJveE9iamVjdEZvciYmd2luZG93Lm1veklu bmVyU2NyZWVuWD09bnVsbCk/ZmFsc2U6KChkb2N1bWVudC5nZXRFbGVtZW50c0J5 Q2xhc3NOYW1lKT8xOToxOCl9fX0sQnJvd3Nlcnx8e30pO0Jyb3dzZXIuUGxhdGZv cm1bQnJvd3Nlci5QbGF0Zm9ybS5uYW1lXT10cnVlO0Jyb3dzZXIuZGV0ZWN0PWZ1 bmN0aW9uKCl7Zm9yKHZhciBiIGluIHRoaXMuRW5naW5lcyl7dmFyIGE9dGhpcy5F bmdpbmVzW2JdKCk7aWYoYSl7dGhpcy5FbmdpbmU9e25hbWU6Yix2ZXJzaW9uOmF9 O3RoaXMuRW5naW5lW2JdPXRoaXMuRW5naW5lW2IrYV09dHJ1ZTticmVha319cmV0 dXJue25hbWU6Yix2ZXJzaW9uOmF9fTtCcm93c2VyLmRldGVjdCgpO0Jyb3dzZXIu UmVxdWVzdD1mdW5jdGlvbigpe3JldHVybiAkdHJ5KGZ1bmN0aW9uKCl7cmV0dXJu IG5ldyBYTUxIdHRwUmVxdWVzdCgpfSxmdW5jdGlvbigpe3JldHVybiBuZXcgQWN0 aXZlWE9iamVjdCgiTVNYTUwyLlhNTEhUVFAiKX0sZnVuY3Rpb24oKXtyZXR1cm4g bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9KX07QnJvd3Nl ci5GZWF0dXJlcy54aHI9ISEoQnJvd3Nlci5SZXF1ZXN0KCkpO0Jyb3dzZXIuUGx1 Z2lucy5GbGFzaD0oZnVuY3Rpb24oKXt2YXIgYT0oJHRyeShmdW5jdGlvbigpe3Jl dHVybiBuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl0uZGVzY3Jp cHRpb259LGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCJTaG9j a3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaCIpLkdldFZhcmlhYmxlKCIkdmVyc2lv biIpfSl8fCIwIHIwIikubWF0Y2goL1xkKy9nKTtyZXR1cm57dmVyc2lvbjpwYXJz ZUludChhWzBdfHwwKyIuIithWzFdLDEwKXx8MCxidWlsZDpwYXJzZUludChhWzJd LDEwKXx8MH19KSgpO2Z1bmN0aW9uICRleGVjKGIpe2lmKCFiKXtyZXR1cm4gYn1p Zih3aW5kb3cuZXhlY1NjcmlwdCl7d2luZG93LmV4ZWNTY3JpcHQoYil9ZWxzZXt2 YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTthLnNldEF0dHJp YnV0ZSgidHlwZSIsInRleHQvamF2YXNjcmlwdCIpO2FbKEJyb3dzZXIuRW5naW5l LndlYmtpdCYmQnJvd3Nlci5FbmdpbmUudmVyc2lvbjw0MjApPyJpbm5lclRleHQi OiJ0ZXh0Il09Yjtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGEpO2RvY3VtZW50 LmhlYWQucmVtb3ZlQ2hpbGQoYSl9cmV0dXJuIGJ9TmF0aXZlLlVJRD0xO3ZhciAk dWlkPShCcm93c2VyLkVuZ2luZS50cmlkZW50KT9mdW5jdGlvbihhKXtyZXR1cm4o YS51aWR8fChhLnVpZD1bTmF0aXZlLlVJRCsrXSkpWzBdfTpmdW5jdGlvbihhKXty ZXR1cm4gYS51aWR8fChhLnVpZD1OYXRpdmUuVUlEKyspfTt2YXIgV2luZG93PW5l dyBOYXRpdmUoe25hbWU6IldpbmRvdyIsbGVnYWN5OihCcm93c2VyLkVuZ2luZS50 cmlkZW50KT9udWxsOndpbmRvdy5XaW5kb3csaW5pdGlhbGl6ZTpmdW5jdGlvbihh KXskdWlkKGEpO2lmKCFhLkVsZW1lbnQpe2EuRWxlbWVudD0kZW1wdHk7aWYoQnJv d3Nlci5FbmdpbmUud2Via2l0KXthLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlm cmFtZSIpfWEuRWxlbWVudC5wcm90b3R5cGU9KEJyb3dzZXIuRW5naW5lLndlYmtp dCk/d2luZG93WyJbW0RPTUVsZW1lbnQucHJvdG90eXBlXV0iXTp7fX1hLmRvY3Vt ZW50LndpbmRvdz1hO3JldHVybiAkZXh0ZW5kKGEsV2luZG93LlByb3RvdHlwZSl9 LGFmdGVySW1wbGVtZW50OmZ1bmN0aW9uKGIsYSl7d2luZG93W2JdPVdpbmRvdy5Q cm90b3R5cGVbYl09YX19KTtXaW5kb3cuUHJvdG90eXBlPXskZmFtaWx5OntuYW1l OiJ3aW5kb3cifX07bmV3IFdpbmRvdyh3aW5kb3cpO3ZhciBEb2N1bWVudD1uZXcg TmF0aXZlKHtuYW1lOiJEb2N1bWVudCIsbGVnYWN5OihCcm93c2VyLkVuZ2luZS50 cmlkZW50KT9udWxsOndpbmRvdy5Eb2N1bWVudCxpbml0aWFsaXplOmZ1bmN0aW9u KGEpeyR1aWQoYSk7YS5oZWFkPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQi KVswXTthLmh0bWw9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdO2lm KEJyb3dzZXIuRW5naW5lLnRyaWRlbnQmJkJyb3dzZXIuRW5naW5lLnZlcnNpb248 PTQpeyR0cnkoZnVuY3Rpb24oKXthLmV4ZWNDb21tYW5kKCJCYWNrZ3JvdW5kSW1h Z2VDYWNoZSIsZmFsc2UsdHJ1ZSl9KX1pZihCcm93c2VyLkVuZ2luZS50cmlkZW50 KXthLndpbmRvdy5hdHRhY2hFdmVudCgib251bmxvYWQiLGZ1bmN0aW9uKCl7YS53 aW5kb3cuZGV0YWNoRXZlbnQoIm9udW5sb2FkIixhcmd1bWVudHMuY2FsbGVlKTth LmhlYWQ9YS5odG1sPWEud2luZG93PW51bGx9KX1yZXR1cm4gJGV4dGVuZChhLERv Y3VtZW50LlByb3RvdHlwZSl9LGFmdGVySW1wbGVtZW50OmZ1bmN0aW9uKGIsYSl7 ZG9jdW1lbnRbYl09RG9jdW1lbnQuUHJvdG90eXBlW2JdPWF9fSk7RG9jdW1lbnQu UHJvdG90eXBlPXskZmFtaWx5OntuYW1lOiJkb2N1bWVudCJ9fTtuZXcgRG9jdW1l bnQoZG9jdW1lbnQpO0FycmF5LmltcGxlbWVudCh7ZXZlcnk6ZnVuY3Rpb24oYyxk KXtmb3IodmFyIGI9MCxhPXRoaXMubGVuZ3RoO2I8YTtiKyspe2lmKCFjLmNhbGwo ZCx0aGlzW2JdLGIsdGhpcykpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9LGZp bHRlcjpmdW5jdGlvbihkLGUpe3ZhciBjPVtdO2Zvcih2YXIgYj0wLGE9dGhpcy5s ZW5ndGg7YjxhO2IrKyl7aWYoZC5jYWxsKGUsdGhpc1tiXSxiLHRoaXMpKXtjLnB1 c2godGhpc1tiXSl9fXJldHVybiBjfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiB0 aGlzLmZpbHRlcigkZGVmaW5lZCl9LGluZGV4T2Y6ZnVuY3Rpb24oYyxkKXt2YXIg YT10aGlzLmxlbmd0aDtmb3IodmFyIGI9KGQ8MCk/TWF0aC5tYXgoMCxhK2QpOmR8 fDA7YjxhO2IrKyl7aWYodGhpc1tiXT09PWMpe3JldHVybiBifX1yZXR1cm4gLTF9 LG1hcDpmdW5jdGlvbihkLGUpe3ZhciBjPVtdO2Zvcih2YXIgYj0wLGE9dGhpcy5s ZW5ndGg7YjxhO2IrKyl7Y1tiXT1kLmNhbGwoZSx0aGlzW2JdLGIsdGhpcyl9cmV0 dXJuIGN9LHNvbWU6ZnVuY3Rpb24oYyxkKXtmb3IodmFyIGI9MCxhPXRoaXMubGVu Z3RoO2I8YTtiKyspe2lmKGMuY2FsbChkLHRoaXNbYl0sYix0aGlzKSl7cmV0dXJu IHRydWV9fXJldHVybiBmYWxzZX0sYXNzb2NpYXRlOmZ1bmN0aW9uKGMpe3ZhciBk PXt9LGI9TWF0aC5taW4odGhpcy5sZW5ndGgsYy5sZW5ndGgpO2Zvcih2YXIgYT0w O2E8YjthKyspe2RbY1thXV09dGhpc1thXX1yZXR1cm4gZH0sbGluazpmdW5jdGlv bihjKXt2YXIgYT17fTtmb3IodmFyIGU9MCxiPXRoaXMubGVuZ3RoO2U8YjtlKysp e2Zvcih2YXIgZCBpbiBjKXtpZihjW2RdKHRoaXNbZV0pKXthW2RdPXRoaXNbZV07 ZGVsZXRlIGNbZF07YnJlYWt9fX1yZXR1cm4gYX0sY29udGFpbnM6ZnVuY3Rpb24o YSxiKXtyZXR1cm4gdGhpcy5pbmRleE9mKGEsYikhPS0xfSxleHRlbmQ6ZnVuY3Rp b24oYyl7Zm9yKHZhciBiPTAsYT1jLmxlbmd0aDtiPGE7YisrKXt0aGlzLnB1c2go Y1tiXSl9cmV0dXJuIHRoaXN9LGdldExhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4odGhp cy5sZW5ndGgpP3RoaXNbdGhpcy5sZW5ndGgtMV06bnVsbH0sZ2V0UmFuZG9tOmZ1 bmN0aW9uKCl7cmV0dXJuKHRoaXMubGVuZ3RoKT90aGlzWyRyYW5kb20oMCx0aGlz Lmxlbmd0aC0xKV06bnVsbH0saW5jbHVkZTpmdW5jdGlvbihhKXtpZighdGhpcy5j b250YWlucyhhKSl7dGhpcy5wdXNoKGEpfXJldHVybiB0aGlzfSxjb21iaW5lOmZ1 bmN0aW9uKGMpe2Zvcih2YXIgYj0wLGE9Yy5sZW5ndGg7YjxhO2IrKyl7dGhpcy5p bmNsdWRlKGNbYl0pfXJldHVybiB0aGlzfSxlcmFzZTpmdW5jdGlvbihiKXtmb3Io dmFyIGE9dGhpcy5sZW5ndGg7YS0tO2Epe2lmKHRoaXNbYV09PT1iKXt0aGlzLnNw bGljZShhLDEpfX1yZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXt0aGlzLmxl bmd0aD0wO3JldHVybiB0aGlzfSxmbGF0dGVuOmZ1bmN0aW9uKCl7dmFyIGQ9W107 Zm9yKHZhciBiPTAsYT10aGlzLmxlbmd0aDtiPGE7YisrKXt2YXIgYz0kdHlwZSh0 aGlzW2JdKTtpZighYyl7Y29udGludWV9ZD1kLmNvbmNhdCgoYz09ImFycmF5Inx8 Yz09ImNvbGxlY3Rpb24ifHxjPT0iYXJndW1lbnRzIik/QXJyYXkuZmxhdHRlbih0 aGlzW2JdKTp0aGlzW2JdKX1yZXR1cm4gZH0saGV4VG9SZ2I6ZnVuY3Rpb24oYil7 aWYodGhpcy5sZW5ndGghPTMpe3JldHVybiBudWxsfXZhciBhPXRoaXMubWFwKGZ1 bmN0aW9uKGMpe2lmKGMubGVuZ3RoPT0xKXtjKz1jfXJldHVybiBjLnRvSW50KDE2 KX0pO3JldHVybihiKT9hOiJyZ2IoIithKyIpIn0scmdiVG9IZXg6ZnVuY3Rpb24o ZCl7aWYodGhpcy5sZW5ndGg8Myl7cmV0dXJuIG51bGx9aWYodGhpcy5sZW5ndGg9 PTQmJnRoaXNbM109PTAmJiFkKXtyZXR1cm4idHJhbnNwYXJlbnQifXZhciBiPVtd O2Zvcih2YXIgYT0wO2E8MzthKyspe3ZhciBjPSh0aGlzW2FdLTApLnRvU3RyaW5n KDE2KTtiLnB1c2goKGMubGVuZ3RoPT0xKT8iMCIrYzpjKX1yZXR1cm4oZCk/Yjoi IyIrYi5qb2luKCIiKX19KTtGdW5jdGlvbi5pbXBsZW1lbnQoe2V4dGVuZDpmdW5j dGlvbihhKXtmb3IodmFyIGIgaW4gYSl7dGhpc1tiXT1hW2JdfXJldHVybiB0aGlz fSxjcmVhdGU6ZnVuY3Rpb24oYil7dmFyIGE9dGhpcztiPWJ8fHt9O3JldHVybiBm dW5jdGlvbihkKXt2YXIgYz1iLmFyZ3VtZW50cztjPShjIT11bmRlZmluZWQpPyRz cGxhdChjKTpBcnJheS5zbGljZShhcmd1bWVudHMsKGIuZXZlbnQpPzE6MCk7aWYo Yi5ldmVudCl7Yz1bZHx8d2luZG93LmV2ZW50XS5leHRlbmQoYyl9dmFyIGU9ZnVu Y3Rpb24oKXtyZXR1cm4gYS5hcHBseShiLmJpbmR8fG51bGwsYyl9O2lmKGIuZGVs YXkpe3JldHVybiBzZXRUaW1lb3V0KGUsYi5kZWxheSl9aWYoYi5wZXJpb2RpY2Fs KXtyZXR1cm4gc2V0SW50ZXJ2YWwoZSxiLnBlcmlvZGljYWwpfWlmKGIuYXR0ZW1w dCl7cmV0dXJuICR0cnkoZSl9cmV0dXJuIGUoKX19LHJ1bjpmdW5jdGlvbihhLGIp e3JldHVybiB0aGlzLmFwcGx5KGIsJHNwbGF0KGEpKX0scGFzczpmdW5jdGlvbihh LGIpe3JldHVybiB0aGlzLmNyZWF0ZSh7YmluZDpiLGFyZ3VtZW50czphfSl9LGJp bmQ6ZnVuY3Rpb24oYixhKXtyZXR1cm4gdGhpcy5jcmVhdGUoe2JpbmQ6Yixhcmd1 bWVudHM6YX0pfSxiaW5kV2l0aEV2ZW50OmZ1bmN0aW9uKGIsYSl7cmV0dXJuIHRo aXMuY3JlYXRlKHtiaW5kOmIsYXJndW1lbnRzOmEsZXZlbnQ6dHJ1ZX0pfSxhdHRl bXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuY3JlYXRlKHtiaW5kOmIsYXJn dW1lbnRzOmEsYXR0ZW1wdDp0cnVlfSkoKX0sZGVsYXk6ZnVuY3Rpb24oYixjLGEp e3JldHVybiB0aGlzLmNyZWF0ZSh7YmluZDpjLGFyZ3VtZW50czphLGRlbGF5OmJ9 KSgpfSxwZXJpb2RpY2FsOmZ1bmN0aW9uKGMsYixhKXtyZXR1cm4gdGhpcy5jcmVh dGUoe2JpbmQ6Yixhcmd1bWVudHM6YSxwZXJpb2RpY2FsOmN9KSgpfX0pO051bWJl ci5pbXBsZW1lbnQoe2xpbWl0OmZ1bmN0aW9uKGIsYSl7cmV0dXJuIE1hdGgubWlu KGEsTWF0aC5tYXgoYix0aGlzKSl9LHJvdW5kOmZ1bmN0aW9uKGEpe2E9TWF0aC5w b3coMTAsYXx8MCk7cmV0dXJuIE1hdGgucm91bmQodGhpcyphKS9hfSx0aW1lczpm dW5jdGlvbihiLGMpe2Zvcih2YXIgYT0wO2E8dGhpczthKyspe2IuY2FsbChjLGEs dGhpcyl9fSx0b0Zsb2F0OmZ1bmN0aW9uKCl7cmV0dXJuIHBhcnNlRmxvYXQodGhp cyl9LHRvSW50OmZ1bmN0aW9uKGEpe3JldHVybiBwYXJzZUludCh0aGlzLGF8fDEw KX19KTtOdW1iZXIuYWxpYXMoInRpbWVzIiwiZWFjaCIpOyhmdW5jdGlvbihiKXt2 YXIgYT17fTtiLmVhY2goZnVuY3Rpb24oYyl7aWYoIU51bWJlcltjXSl7YVtjXT1m dW5jdGlvbigpe3JldHVybiBNYXRoW2NdLmFwcGx5KG51bGwsW3RoaXNdLmNvbmNh dCgkQShhcmd1bWVudHMpKSl9fX0pO051bWJlci5pbXBsZW1lbnQoYSl9KShbImFi cyIsImFjb3MiLCJhc2luIiwiYXRhbiIsImF0YW4yIiwiY2VpbCIsImNvcyIsImV4 cCIsImZsb29yIiwibG9nIiwibWF4IiwibWluIiwicG93Iiwic2luIiwic3FydCIs InRhbiJdKTtTdHJpbmcuaW1wbGVtZW50KHt0ZXN0OmZ1bmN0aW9uKGEsYil7cmV0 dXJuKCh0eXBlb2YgYT09InN0cmluZyIpP25ldyBSZWdFeHAoYSxiKTphKS50ZXN0 KHRoaXMpfSxjb250YWluczpmdW5jdGlvbihhLGIpe3JldHVybihiKT8oYit0aGlz K2IpLmluZGV4T2YoYithK2IpPi0xOnRoaXMuaW5kZXhPZihhKT4tMX0sdHJpbTpm dW5jdGlvbigpe3JldHVybiB0aGlzLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0s Y2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXBsYWNlKC9ccysvZywiICIp LnRyaW0oKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFj ZSgvLVxEL2csZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2hhckF0KDEpLnRvVXBwZXJD YXNlKCl9KX0saHlwaGVuYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFj ZSgvW0EtWl0vZyxmdW5jdGlvbihhKXtyZXR1cm4oIi0iK2EuY2hhckF0KDApLnRv TG93ZXJDYXNlKCkpfSl9LGNhcGl0YWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5yZXBsYWNlKC9cYlthLXpdL2csZnVuY3Rpb24oYSl7cmV0dXJuIGEudG9VcHBl ckNhc2UoKX0pfSxlc2NhcGVSZWdFeHA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5y ZXBsYWNlKC8oWy0uKis/XiR7fSgpfFtcXVwvXFxdKS9nLCJcXCQxIil9LHRvSW50 OmZ1bmN0aW9uKGEpe3JldHVybiBwYXJzZUludCh0aGlzLGF8fDEwKX0sdG9GbG9h dDpmdW5jdGlvbigpe3JldHVybiBwYXJzZUZsb2F0KHRoaXMpfSxoZXhUb1JnYjpm dW5jdGlvbihiKXt2YXIgYT10aGlzLm1hdGNoKC9eIz8oXHd7MSwyfSkoXHd7MSwy fSkoXHd7MSwyfSkkLyk7cmV0dXJuKGEpP2Euc2xpY2UoMSkuaGV4VG9SZ2IoYik6 bnVsbH0scmdiVG9IZXg6ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy5tYXRjaCgvXGR7 MSwzfS9nKTtyZXR1cm4oYSk/YS5yZ2JUb0hleChiKTpudWxsfSxzdHJpcFNjcmlw dHM6ZnVuY3Rpb24oYil7dmFyIGE9IiI7dmFyIGM9dGhpcy5yZXBsYWNlKC88c2Ny aXB0W14+XSo+KFtcc1xTXSo/KTxcL3NjcmlwdD4vZ2ksZnVuY3Rpb24oKXthKz1h cmd1bWVudHNbMV0rIlxuIjtyZXR1cm4iIn0pO2lmKGI9PT10cnVlKXskZXhlYyhh KX1lbHNle2lmKCR0eXBlKGIpPT0iZnVuY3Rpb24iKXtiKGEsYyl9fXJldHVybiBj fSxzdWJzdGl0dXRlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucmVwbGFjZShi fHwoL1xcP1x7KFtee31dKylcfS9nKSxmdW5jdGlvbihkLGMpe2lmKGQuY2hhckF0 KDApPT0iXFwiKXtyZXR1cm4gZC5zbGljZSgxKX1yZXR1cm4oYVtjXSE9dW5kZWZp bmVkKT9hW2NdOiIifSl9fSk7SGFzaC5pbXBsZW1lbnQoe2hhczpPYmplY3QucHJv dG90eXBlLmhhc093blByb3BlcnR5LGtleU9mOmZ1bmN0aW9uKGIpe2Zvcih2YXIg YSBpbiB0aGlzKXtpZih0aGlzLmhhc093blByb3BlcnR5KGEpJiZ0aGlzW2FdPT09 Yil7cmV0dXJuIGF9fXJldHVybiBudWxsfSxoYXNWYWx1ZTpmdW5jdGlvbihhKXty ZXR1cm4oSGFzaC5rZXlPZih0aGlzLGEpIT09bnVsbCl9LGV4dGVuZDpmdW5jdGlv bihhKXtIYXNoLmVhY2goYXx8e30sZnVuY3Rpb24oYyxiKXtIYXNoLnNldCh0aGlz LGIsYyl9LHRoaXMpO3JldHVybiB0aGlzfSxjb21iaW5lOmZ1bmN0aW9uKGEpe0hh c2guZWFjaChhfHx7fSxmdW5jdGlvbihjLGIpe0hhc2guaW5jbHVkZSh0aGlzLGIs Yyl9LHRoaXMpO3JldHVybiB0aGlzfSxlcmFzZTpmdW5jdGlvbihhKXtpZih0aGlz Lmhhc093blByb3BlcnR5KGEpKXtkZWxldGUgdGhpc1thXX1yZXR1cm4gdGhpc30s Z2V0OmZ1bmN0aW9uKGEpe3JldHVybih0aGlzLmhhc093blByb3BlcnR5KGEpKT90 aGlzW2FdOm51bGx9LHNldDpmdW5jdGlvbihhLGIpe2lmKCF0aGlzW2FdfHx0aGlz Lmhhc093blByb3BlcnR5KGEpKXt0aGlzW2FdPWJ9cmV0dXJuIHRoaXN9LGVtcHR5 OmZ1bmN0aW9uKCl7SGFzaC5lYWNoKHRoaXMsZnVuY3Rpb24oYixhKXtkZWxldGUg dGhpc1thXX0sdGhpcyk7cmV0dXJuIHRoaXN9LGluY2x1ZGU6ZnVuY3Rpb24oYSxi KXtpZih0aGlzW2FdPT11bmRlZmluZWQpe3RoaXNbYV09Yn1yZXR1cm4gdGhpc30s bWFwOmZ1bmN0aW9uKGIsYyl7dmFyIGE9bmV3IEhhc2g7SGFzaC5lYWNoKHRoaXMs ZnVuY3Rpb24oZSxkKXthLnNldChkLGIuY2FsbChjLGUsZCx0aGlzKSl9LHRoaXMp O3JldHVybiBhfSxmaWx0ZXI6ZnVuY3Rpb24oYixjKXt2YXIgYT1uZXcgSGFzaDtI YXNoLmVhY2godGhpcyxmdW5jdGlvbihlLGQpe2lmKGIuY2FsbChjLGUsZCx0aGlz KSl7YS5zZXQoZCxlKX19LHRoaXMpO3JldHVybiBhfSxldmVyeTpmdW5jdGlvbihi LGMpe2Zvcih2YXIgYSBpbiB0aGlzKXtpZih0aGlzLmhhc093blByb3BlcnR5KGEp JiYhYi5jYWxsKGMsdGhpc1thXSxhKSl7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1 ZX0sc29tZTpmdW5jdGlvbihiLGMpe2Zvcih2YXIgYSBpbiB0aGlzKXtpZih0aGlz Lmhhc093blByb3BlcnR5KGEpJiZiLmNhbGwoYyx0aGlzW2FdLGEpKXtyZXR1cm4g dHJ1ZX19cmV0dXJuIGZhbHNlfSxnZXRLZXlzOmZ1bmN0aW9uKCl7dmFyIGE9W107 SGFzaC5lYWNoKHRoaXMsZnVuY3Rpb24oYyxiKXthLnB1c2goYil9KTtyZXR1cm4g YX0sZ2V0VmFsdWVzOmZ1bmN0aW9uKCl7dmFyIGE9W107SGFzaC5lYWNoKHRoaXMs ZnVuY3Rpb24oYil7YS5wdXNoKGIpfSk7cmV0dXJuIGF9LHRvUXVlcnlTdHJpbmc6 ZnVuY3Rpb24oYSl7dmFyIGI9W107SGFzaC5lYWNoKHRoaXMsZnVuY3Rpb24oZixl KXtpZihhKXtlPWErIlsiK2UrIl0ifXZhciBkO3N3aXRjaCgkdHlwZShmKSl7Y2Fz ZSJvYmplY3QiOmQ9SGFzaC50b1F1ZXJ5U3RyaW5nKGYsZSk7YnJlYWs7Y2FzZSJh cnJheSI6dmFyIGM9e307Zi5lYWNoKGZ1bmN0aW9uKGgsZyl7Y1tnXT1ofSk7ZD1I YXNoLnRvUXVlcnlTdHJpbmcoYyxlKTticmVhaztkZWZhdWx0OmQ9ZSsiPSIrZW5j b2RlVVJJQ29tcG9uZW50KGYpfWlmKGYhPXVuZGVmaW5lZCl7Yi5wdXNoKGQpfX0p O3JldHVybiBiLmpvaW4oIiYiKX19KTtIYXNoLmFsaWFzKHtrZXlPZjoiaW5kZXhP ZiIsaGFzVmFsdWU6ImNvbnRhaW5zIn0pO3ZhciBFdmVudD1uZXcgTmF0aXZlKHtu YW1lOiJFdmVudCIsaW5pdGlhbGl6ZTpmdW5jdGlvbihhLGYpe2Y9Znx8d2luZG93 O3ZhciBrPWYuZG9jdW1lbnQ7YT1hfHxmLmV2ZW50O2lmKGEuJGV4dGVuZGVkKXty ZXR1cm4gYX10aGlzLiRleHRlbmRlZD10cnVlO3ZhciBqPWEudHlwZTt2YXIgZz1h LnRhcmdldHx8YS5zcmNFbGVtZW50O3doaWxlKGcmJmcubm9kZVR5cGU9PTMpe2c9 Zy5wYXJlbnROb2RlfWlmKGoudGVzdCgva2V5Lykpe3ZhciBiPWEud2hpY2h8fGEu a2V5Q29kZTt2YXIgbT1FdmVudC5LZXlzLmtleU9mKGIpO2lmKGo9PSJrZXlkb3du Iil7dmFyIGQ9Yi0xMTE7aWYoZD4wJiZkPDEzKXttPSJmIitkfX1tPW18fFN0cmlu Zy5mcm9tQ2hhckNvZGUoYikudG9Mb3dlckNhc2UoKX1lbHNle2lmKGoubWF0Y2go LyhjbGlja3xtb3VzZXxtZW51KS9pKSl7az0oIWsuY29tcGF0TW9kZXx8ay5jb21w YXRNb2RlPT0iQ1NTMUNvbXBhdCIpP2suaHRtbDprLmJvZHk7dmFyIGk9e3g6YS5w YWdlWHx8YS5jbGllbnRYK2suc2Nyb2xsTGVmdCx5OmEucGFnZVl8fGEuY2xpZW50 WStrLnNjcm9sbFRvcH07dmFyIGM9e3g6KGEucGFnZVgpP2EucGFnZVgtZi5wYWdl WE9mZnNldDphLmNsaWVudFgseTooYS5wYWdlWSk/YS5wYWdlWS1mLnBhZ2VZT2Zm c2V0OmEuY2xpZW50WX07aWYoai5tYXRjaCgvRE9NTW91c2VTY3JvbGx8bW91c2V3 aGVlbC8pKXt2YXIgaD0oYS53aGVlbERlbHRhKT9hLndoZWVsRGVsdGEvMTIwOi0o YS5kZXRhaWx8fDApLzN9dmFyIGU9KGEud2hpY2g9PTMpfHwoYS5idXR0b249PTIp O3ZhciBsPW51bGw7aWYoai5tYXRjaCgvb3ZlcnxvdXQvKSl7c3dpdGNoKGope2Nh c2UibW91c2VvdmVyIjpsPWEucmVsYXRlZFRhcmdldHx8YS5mcm9tRWxlbWVudDti cmVhaztjYXNlIm1vdXNlb3V0IjpsPWEucmVsYXRlZFRhcmdldHx8YS50b0VsZW1l bnR9aWYoIShmdW5jdGlvbigpe3doaWxlKGwmJmwubm9kZVR5cGU9PTMpe2w9bC5w YXJlbnROb2RlfXJldHVybiB0cnVlfSkuY3JlYXRlKHthdHRlbXB0OkJyb3dzZXIu RW5naW5lLmdlY2tvfSkoKSl7bD1mYWxzZX19fX1yZXR1cm4gJGV4dGVuZCh0aGlz LHtldmVudDphLHR5cGU6aixwYWdlOmksY2xpZW50OmMscmlnaHRDbGljazplLHdo ZWVsOmgscmVsYXRlZFRhcmdldDpsLHRhcmdldDpnLGNvZGU6YixrZXk6bSxzaGlm dDphLnNoaWZ0S2V5LGNvbnRyb2w6YS5jdHJsS2V5LGFsdDphLmFsdEtleSxtZXRh OmEubWV0YUtleX0pfX0pO0V2ZW50LktleXM9bmV3IEhhc2goe2VudGVyOjEzLHVw OjM4LGRvd246NDAsbGVmdDozNyxyaWdodDozOSxlc2M6Mjcsc3BhY2U6MzIsYmFj a3NwYWNlOjgsdGFiOjksImRlbGV0ZSI6NDZ9KTtFdmVudC5pbXBsZW1lbnQoe3N0 b3A6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb24oKS5wcmV2 ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXtpZih0aGlz LmV2ZW50LnN0b3BQcm9wYWdhdGlvbil7dGhpcy5ldmVudC5zdG9wUHJvcGFnYXRp b24oKX1lbHNle3RoaXMuZXZlbnQuY2FuY2VsQnViYmxlPXRydWV9cmV0dXJuIHRo aXN9LHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7aWYodGhpcy5ldmVudC5wcmV2 ZW50RGVmYXVsdCl7dGhpcy5ldmVudC5wcmV2ZW50RGVmYXVsdCgpfWVsc2V7dGhp cy5ldmVudC5yZXR1cm5WYWx1ZT1mYWxzZX1yZXR1cm4gdGhpc319KTtmdW5jdGlv biBDbGFzcyhiKXtpZihiIGluc3RhbmNlb2YgRnVuY3Rpb24pe2I9e2luaXRpYWxp emU6Yn19dmFyIGE9ZnVuY3Rpb24oKXtPYmplY3QucmVzZXQodGhpcyk7aWYoYS5f cHJvdG90eXBpbmcpe3JldHVybiB0aGlzfXRoaXMuX2N1cnJlbnQ9JGVtcHR5O3Zh ciBjPSh0aGlzLmluaXRpYWxpemUpP3RoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlz LGFyZ3VtZW50cyk6dGhpcztkZWxldGUgdGhpcy5fY3VycmVudDtkZWxldGUgdGhp cy5jYWxsZXI7cmV0dXJuIGN9LmV4dGVuZCh0aGlzKTthLmltcGxlbWVudChiKTth LmNvbnN0cnVjdG9yPUNsYXNzO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7cmV0 dXJuIGF9RnVuY3Rpb24ucHJvdG90eXBlLnByb3RlY3Q9ZnVuY3Rpb24oKXt0aGlz Ll9wcm90ZWN0ZWQ9dHJ1ZTtyZXR1cm4gdGhpc307T2JqZWN0LnJlc2V0PWZ1bmN0 aW9uKGEsYyl7aWYoYz09bnVsbCl7Zm9yKHZhciBlIGluIGEpe09iamVjdC5yZXNl dChhLGUpfXJldHVybiBhfWRlbGV0ZSBhW2NdO3N3aXRjaCgkdHlwZShhW2NdKSl7 Y2FzZSJvYmplY3QiOnZhciBkPWZ1bmN0aW9uKCl7fTtkLnByb3RvdHlwZT1hW2Nd O3ZhciBiPW5ldyBkO2FbY109T2JqZWN0LnJlc2V0KGIpO2JyZWFrO2Nhc2UiYXJy YXkiOmFbY109JHVubGluayhhW2NdKTticmVha31yZXR1cm4gYX07bmV3IE5hdGl2 ZSh7bmFtZToiQ2xhc3MiLGluaXRpYWxpemU6Q2xhc3N9KS5leHRlbmQoe2luc3Rh bnRpYXRlOmZ1bmN0aW9uKGIpe2IuX3Byb3RvdHlwaW5nPXRydWU7dmFyIGE9bmV3 IGI7ZGVsZXRlIGIuX3Byb3RvdHlwaW5nO3JldHVybiBhfSx3cmFwOmZ1bmN0aW9u KGEsYixjKXtpZihjLl9vcmlnaW4pe2M9Yy5fb3JpZ2lufXJldHVybiBmdW5jdGlv bigpe2lmKGMuX3Byb3RlY3RlZCYmdGhpcy5fY3VycmVudD09bnVsbCl7dGhyb3cg bmV3IEVycm9yKCdUaGUgbWV0aG9kICInK2IrJyIgY2Fubm90IGJlIGNhbGxlZC4n KX12YXIgZT10aGlzLmNhbGxlcixmPXRoaXMuX2N1cnJlbnQ7dGhpcy5jYWxsZXI9 Zjt0aGlzLl9jdXJyZW50PWFyZ3VtZW50cy5jYWxsZWU7dmFyIGQ9Yy5hcHBseSh0 aGlzLGFyZ3VtZW50cyk7dGhpcy5fY3VycmVudD1mO3RoaXMuY2FsbGVyPWU7cmV0 dXJuIGR9LmV4dGVuZCh7X293bmVyOmEsX29yaWdpbjpjLF9uYW1lOmJ9KX19KTtD bGFzcy5pbXBsZW1lbnQoe2ltcGxlbWVudDpmdW5jdGlvbihhLGQpe2lmKCR0eXBl KGEpPT0ib2JqZWN0Iil7Zm9yKHZhciBlIGluIGEpe3RoaXMuaW1wbGVtZW50KGUs YVtlXSl9cmV0dXJuIHRoaXN9dmFyIGY9Q2xhc3MuTXV0YXRvcnNbYV07aWYoZil7 ZD1mLmNhbGwodGhpcyxkKTtpZihkPT1udWxsKXtyZXR1cm4gdGhpc319dmFyIGM9 dGhpcy5wcm90b3R5cGU7c3dpdGNoKCR0eXBlKGQpKXtjYXNlImZ1bmN0aW9uIjpp ZihkLl9oaWRkZW4pe3JldHVybiB0aGlzfWNbYV09Q2xhc3Mud3JhcCh0aGlzLGEs ZCk7YnJlYWs7Y2FzZSJvYmplY3QiOnZhciBiPWNbYV07aWYoJHR5cGUoYik9PSJv YmplY3QiKXskbWl4aW4oYixkKX1lbHNle2NbYV09JHVubGluayhkKX1icmVhaztj YXNlImFycmF5IjpjW2FdPSR1bmxpbmsoZCk7YnJlYWs7ZGVmYXVsdDpjW2FdPWR9 cmV0dXJuIHRoaXN9fSk7Q2xhc3MuTXV0YXRvcnM9e0V4dGVuZHM6ZnVuY3Rpb24o YSl7dGhpcy5wYXJlbnQ9YTt0aGlzLnByb3RvdHlwZT1DbGFzcy5pbnN0YW50aWF0 ZShhKTt0aGlzLmltcGxlbWVudCgicGFyZW50IixmdW5jdGlvbigpe3ZhciBiPXRo aXMuY2FsbGVyLl9uYW1lLGM9dGhpcy5jYWxsZXIuX293bmVyLnBhcmVudC5wcm90 b3R5cGVbYl07aWYoIWMpe3Rocm93IG5ldyBFcnJvcignVGhlIG1ldGhvZCAiJyti KyciIGhhcyBubyBwYXJlbnQuJyl9cmV0dXJuIGMuYXBwbHkodGhpcyxhcmd1bWVu dHMpfS5wcm90ZWN0KCkpfSxJbXBsZW1lbnRzOmZ1bmN0aW9uKGEpeyRzcGxhdChh KS5lYWNoKGZ1bmN0aW9uKGIpe2lmKGIgaW5zdGFuY2VvZiBGdW5jdGlvbil7Yj1D bGFzcy5pbnN0YW50aWF0ZShiKX10aGlzLmltcGxlbWVudChiKX0sdGhpcyl9fTt2 YXIgQ2hhaW49bmV3IENsYXNzKHskY2hhaW46W10sY2hhaW46ZnVuY3Rpb24oKXt0 aGlzLiRjaGFpbi5leHRlbmQoQXJyYXkuZmxhdHRlbihhcmd1bWVudHMpKTtyZXR1 cm4gdGhpc30sY2FsbENoYWluOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuJGNoYWlu Lmxlbmd0aCk/dGhpcy4kY2hhaW4uc2hpZnQoKS5hcHBseSh0aGlzLGFyZ3VtZW50 cyk6ZmFsc2V9LGNsZWFyQ2hhaW46ZnVuY3Rpb24oKXt0aGlzLiRjaGFpbi5lbXB0 eSgpO3JldHVybiB0aGlzfX0pO3ZhciBFdmVudHM9bmV3IENsYXNzKHskZXZlbnRz Ont9LGFkZEV2ZW50OmZ1bmN0aW9uKGMsYixhKXtjPUV2ZW50cy5yZW1vdmVPbihj KTtpZihiIT0kZW1wdHkpe3RoaXMuJGV2ZW50c1tjXT10aGlzLiRldmVudHNbY118 fFtdO3RoaXMuJGV2ZW50c1tjXS5pbmNsdWRlKGIpO2lmKGEpe2IuaW50ZXJuYWw9 dHJ1ZX19cmV0dXJuIHRoaXN9LGFkZEV2ZW50czpmdW5jdGlvbihhKXtmb3IodmFy IGIgaW4gYSl7dGhpcy5hZGRFdmVudChiLGFbYl0pfXJldHVybiB0aGlzfSxmaXJl RXZlbnQ6ZnVuY3Rpb24oYyxiLGEpe2M9RXZlbnRzLnJlbW92ZU9uKGMpO2lmKCF0 aGlzLiRldmVudHN8fCF0aGlzLiRldmVudHNbY10pe3JldHVybiB0aGlzfXRoaXMu JGV2ZW50c1tjXS5lYWNoKGZ1bmN0aW9uKGQpe2QuY3JlYXRlKHtiaW5kOnRoaXMs ZGVsYXk6YSwiYXJndW1lbnRzIjpifSkoKX0sdGhpcyk7cmV0dXJuIHRoaXN9LHJl bW92ZUV2ZW50OmZ1bmN0aW9uKGIsYSl7Yj1FdmVudHMucmVtb3ZlT24oYik7aWYo IXRoaXMuJGV2ZW50c1tiXSl7cmV0dXJuIHRoaXN9aWYoIWEuaW50ZXJuYWwpe3Ro aXMuJGV2ZW50c1tiXS5lcmFzZShhKX1yZXR1cm4gdGhpc30scmVtb3ZlRXZlbnRz OmZ1bmN0aW9uKGMpe3ZhciBkO2lmKCR0eXBlKGMpPT0ib2JqZWN0Iil7Zm9yKGQg aW4gYyl7dGhpcy5yZW1vdmVFdmVudChkLGNbZF0pfXJldHVybiB0aGlzfWlmKGMp e2M9RXZlbnRzLnJlbW92ZU9uKGMpfWZvcihkIGluIHRoaXMuJGV2ZW50cyl7aWYo YyYmYyE9ZCl7Y29udGludWV9dmFyIGI9dGhpcy4kZXZlbnRzW2RdO2Zvcih2YXIg YT1iLmxlbmd0aDthLS07YSl7dGhpcy5yZW1vdmVFdmVudChkLGJbYV0pfX1yZXR1 cm4gdGhpc319KTtFdmVudHMucmVtb3ZlT249ZnVuY3Rpb24oYSl7cmV0dXJuIGEu cmVwbGFjZSgvXm9uKFtBLVpdKS8sZnVuY3Rpb24oYixjKXtyZXR1cm4gYy50b0xv d2VyQ2FzZSgpfSl9O3ZhciBPcHRpb25zPW5ldyBDbGFzcyh7c2V0T3B0aW9uczpm dW5jdGlvbigpe3RoaXMub3B0aW9ucz0kbWVyZ2UucnVuKFt0aGlzLm9wdGlvbnNd LmV4dGVuZChhcmd1bWVudHMpKTtpZighdGhpcy5hZGRFdmVudCl7cmV0dXJuIHRo aXN9Zm9yKHZhciBhIGluIHRoaXMub3B0aW9ucyl7aWYoJHR5cGUodGhpcy5vcHRp b25zW2FdKSE9ImZ1bmN0aW9uInx8ISgvXm9uW0EtWl0vKS50ZXN0KGEpKXtjb250 aW51ZX10aGlzLmFkZEV2ZW50KGEsdGhpcy5vcHRpb25zW2FdKTtkZWxldGUgdGhp cy5vcHRpb25zW2FdfXJldHVybiB0aGlzfX0pO3ZhciBFbGVtZW50PW5ldyBOYXRp dmUoe25hbWU6IkVsZW1lbnQiLGxlZ2FjeTp3aW5kb3cuRWxlbWVudCxpbml0aWFs aXplOmZ1bmN0aW9uKGEsYil7dmFyIGM9RWxlbWVudC5Db25zdHJ1Y3RvcnMuZ2V0 KGEpO2lmKGMpe3JldHVybiBjKGIpfWlmKHR5cGVvZiBhPT0ic3RyaW5nIil7cmV0 dXJuIGRvY3VtZW50Lm5ld0VsZW1lbnQoYSxiKX1yZXR1cm4gZG9jdW1lbnQuaWQo YSkuc2V0KGIpfSxhZnRlckltcGxlbWVudDpmdW5jdGlvbihhLGIpe0VsZW1lbnQu UHJvdG90eXBlW2FdPWI7aWYoQXJyYXlbYV0pe3JldHVybn1FbGVtZW50cy5pbXBs ZW1lbnQoYSxmdW5jdGlvbigpe3ZhciBjPVtdLGc9dHJ1ZTtmb3IodmFyIGU9MCxk PXRoaXMubGVuZ3RoO2U8ZDtlKyspe3ZhciBmPXRoaXNbZV1bYV0uYXBwbHkodGhp c1tlXSxhcmd1bWVudHMpO2MucHVzaChmKTtpZihnKXtnPSgkdHlwZShmKT09ImVs ZW1lbnQiKX19cmV0dXJuKGcpP25ldyBFbGVtZW50cyhjKTpjfSl9fSk7RWxlbWVu dC5Qcm90b3R5cGU9eyRmYW1pbHk6e25hbWU6ImVsZW1lbnQifX07RWxlbWVudC5D b25zdHJ1Y3RvcnM9bmV3IEhhc2g7dmFyIElGcmFtZT1uZXcgTmF0aXZlKHtuYW1l OiJJRnJhbWUiLGdlbmVyaWNzOmZhbHNlLGluaXRpYWxpemU6ZnVuY3Rpb24oKXt2 YXIgZj1BcnJheS5saW5rKGFyZ3VtZW50cyx7cHJvcGVydGllczpPYmplY3QudHlw ZSxpZnJhbWU6JGRlZmluZWR9KTt2YXIgZD1mLnByb3BlcnRpZXN8fHt9O3ZhciBj PWRvY3VtZW50LmlkKGYuaWZyYW1lKTt2YXIgZT1kLm9ubG9hZHx8JGVtcHR5O2Rl bGV0ZSBkLm9ubG9hZDtkLmlkPWQubmFtZT0kcGljayhkLmlkLGQubmFtZSxjPyhj LmlkfHxjLm5hbWUpOiJJRnJhbWVfIiskdGltZSgpKTtjPW5ldyBFbGVtZW50KGN8 fCJpZnJhbWUiLGQpO3ZhciBiPWZ1bmN0aW9uKCl7dmFyIGc9JHRyeShmdW5jdGlv bigpe3JldHVybiBjLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaG9zdH0pO2lmKCFn fHxnPT13aW5kb3cubG9jYXRpb24uaG9zdCl7dmFyIGg9bmV3IFdpbmRvdyhjLmNv bnRlbnRXaW5kb3cpO25ldyBEb2N1bWVudChjLmNvbnRlbnRXaW5kb3cuZG9jdW1l bnQpOyRleHRlbmQoaC5FbGVtZW50LnByb3RvdHlwZSxFbGVtZW50LlByb3RvdHlw ZSl9ZS5jYWxsKGMuY29udGVudFdpbmRvdyxjLmNvbnRlbnRXaW5kb3cuZG9jdW1l bnQpfTt2YXIgYT0kdHJ5KGZ1bmN0aW9uKCl7cmV0dXJuIGMuY29udGVudFdpbmRv d30pOygoYSYmYS5kb2N1bWVudC5ib2R5KXx8d2luZG93LmZyYW1lc1tkLmlkXSk/ YigpOmMuYWRkTGlzdGVuZXIoImxvYWQiLGIpO3JldHVybiBjfX0pO3ZhciBFbGVt ZW50cz1uZXcgTmF0aXZlKHtpbml0aWFsaXplOmZ1bmN0aW9uKGYsYil7Yj0kZXh0 ZW5kKHtkZHVwOnRydWUsY2FzaDp0cnVlfSxiKTtmPWZ8fFtdO2lmKGIuZGR1cHx8 Yi5jYXNoKXt2YXIgZz17fSxlPVtdO2Zvcih2YXIgYz0wLGE9Zi5sZW5ndGg7Yzxh O2MrKyl7dmFyIGQ9ZG9jdW1lbnQuaWQoZltjXSwhYi5jYXNoKTtpZihiLmRkdXAp e2lmKGdbZC51aWRdKXtjb250aW51ZX1nW2QudWlkXT10cnVlfWlmKGQpe2UucHVz aChkKX19Zj1lfXJldHVybihiLmNhc2gpPyRleHRlbmQoZix0aGlzKTpmfX0pO0Vs ZW1lbnRzLmltcGxlbWVudCh7ZmlsdGVyOmZ1bmN0aW9uKGEsYil7aWYoIWEpe3Jl dHVybiB0aGlzfXJldHVybiBuZXcgRWxlbWVudHMoQXJyYXkuZmlsdGVyKHRoaXMs KHR5cGVvZiBhPT0ic3RyaW5nIik/ZnVuY3Rpb24oYyl7cmV0dXJuIGMubWF0Y2go YSl9OmEsYikpfX0pO0RvY3VtZW50LmltcGxlbWVudCh7bmV3RWxlbWVudDpmdW5j dGlvbihhLGIpe2lmKEJyb3dzZXIuRW5naW5lLnRyaWRlbnQmJmIpe1sibmFtZSIs InR5cGUiLCJjaGVja2VkIl0uZWFjaChmdW5jdGlvbihjKXtpZighYltjXSl7cmV0 dXJufWErPSIgIitjKyc9IicrYltjXSsnIic7aWYoYyE9ImNoZWNrZWQiKXtkZWxl dGUgYltjXX19KTthPSI8IithKyI+In1yZXR1cm4gZG9jdW1lbnQuaWQodGhpcy5j cmVhdGVFbGVtZW50KGEpKS5zZXQoYil9LG5ld1RleHROb2RlOmZ1bmN0aW9uKGEp e3JldHVybiB0aGlzLmNyZWF0ZVRleHROb2RlKGEpfSxnZXREb2N1bWVudDpmdW5j dGlvbigpe3JldHVybiB0aGlzfSxnZXRXaW5kb3c6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy53aW5kb3d9LGlkOihmdW5jdGlvbigpe3ZhciBhPXtzdHJpbmc6ZnVuY3Rp b24oZCxjLGIpe2Q9Yi5nZXRFbGVtZW50QnlJZChkKTtyZXR1cm4oZCk/YS5lbGVt ZW50KGQsYyk6bnVsbH0sZWxlbWVudDpmdW5jdGlvbihiLGUpeyR1aWQoYik7aWYo IWUmJiFiLiRmYW1pbHkmJiEoL15vYmplY3R8ZW1iZWQkL2kpLnRlc3QoYi50YWdO YW1lKSl7dmFyIGM9RWxlbWVudC5Qcm90b3R5cGU7Zm9yKHZhciBkIGluIGMpe2Jb ZF09Y1tkXX19cmV0dXJuIGJ9LG9iamVjdDpmdW5jdGlvbihjLGQsYil7aWYoYy50 b0VsZW1lbnQpe3JldHVybiBhLmVsZW1lbnQoYy50b0VsZW1lbnQoYiksZCl9cmV0 dXJuIG51bGx9fTthLnRleHRub2RlPWEud2hpdGVzcGFjZT1hLndpbmRvdz1hLmRv Y3VtZW50PSRhcmd1bWVudHMoMCk7cmV0dXJuIGZ1bmN0aW9uKGMsZSxkKXtpZihj JiZjLiRmYW1pbHkmJmMudWlkKXtyZXR1cm4gY312YXIgYj0kdHlwZShjKTtyZXR1 cm4oYVtiXSk/YVtiXShjLGUsZHx8ZG9jdW1lbnQpOm51bGx9fSkoKX0pO2lmKHdp bmRvdy4kPT1udWxsKXtXaW5kb3cuaW1wbGVtZW50KHskOmZ1bmN0aW9uKGEsYil7 cmV0dXJuIGRvY3VtZW50LmlkKGEsYix0aGlzLmRvY3VtZW50KX19KX1XaW5kb3cu aW1wbGVtZW50KHskJDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoPT0x JiZ0eXBlb2YgYT09InN0cmluZyIpe3JldHVybiB0aGlzLmRvY3VtZW50LmdldEVs ZW1lbnRzKGEpfXZhciBmPVtdO3ZhciBjPUFycmF5LmZsYXR0ZW4oYXJndW1lbnRz KTtmb3IodmFyIGQ9MCxiPWMubGVuZ3RoO2Q8YjtkKyspe3ZhciBlPWNbZF07c3dp dGNoKCR0eXBlKGUpKXtjYXNlImVsZW1lbnQiOmYucHVzaChlKTticmVhaztjYXNl InN0cmluZyI6Zi5leHRlbmQodGhpcy5kb2N1bWVudC5nZXRFbGVtZW50cyhlLHRy dWUpKX19cmV0dXJuIG5ldyBFbGVtZW50cyhmKX0sZ2V0RG9jdW1lbnQ6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5kb2N1bWVudH0sZ2V0V2luZG93OmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXN9fSk7TmF0aXZlLmltcGxlbWVudChbRWxlbWVudCxEb2N1bWVu dF0se2dldEVsZW1lbnQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZG9jdW1lbnQuaWQo dGhpcy5nZXRFbGVtZW50cyhhLHRydWUpWzBdfHxudWxsLGIpfSxnZXRFbGVtZW50 czpmdW5jdGlvbihhLGQpe2E9YS5zcGxpdCgiLCIpO3ZhciBjPVtdO3ZhciBiPShh Lmxlbmd0aD4xKTthLmVhY2goZnVuY3Rpb24oZSl7dmFyIGY9dGhpcy5nZXRFbGVt ZW50c0J5VGFnTmFtZShlLnRyaW0oKSk7KGIpP2MuZXh0ZW5kKGYpOmM9Zn0sdGhp cyk7cmV0dXJuIG5ldyBFbGVtZW50cyhjLHtkZHVwOmIsY2FzaDohZH0pfX0pOyhm dW5jdGlvbigpe3ZhciBoPXt9LGY9e307dmFyIGk9e2lucHV0OiJjaGVja2VkIixv cHRpb246InNlbGVjdGVkIix0ZXh0YXJlYTooQnJvd3Nlci5FbmdpbmUud2Via2l0 JiZCcm93c2VyLkVuZ2luZS52ZXJzaW9uPDQyMCk/ImlubmVySFRNTCI6InZhbHVl In07dmFyIGM9ZnVuY3Rpb24obCl7cmV0dXJuKGZbbF18fChmW2xdPXt9KSl9O3Zh ciBnPWZ1bmN0aW9uKG4sbCl7aWYoIW4pe3JldHVybn12YXIgbT1uLnVpZDtpZihC cm93c2VyLkVuZ2luZS50cmlkZW50KXtpZihuLmNsZWFyQXR0cmlidXRlcyl7dmFy IHE9bCYmbi5jbG9uZU5vZGUoZmFsc2UpO24uY2xlYXJBdHRyaWJ1dGVzKCk7aWYo cSl7bi5tZXJnZUF0dHJpYnV0ZXMocSl9fWVsc2V7aWYobi5yZW1vdmVFdmVudHMp e24ucmVtb3ZlRXZlbnRzKCl9fWlmKCgvb2JqZWN0L2kpLnRlc3Qobi50YWdOYW1l KSl7Zm9yKHZhciBvIGluIG4pe2lmKHR5cGVvZiBuW29dPT0iZnVuY3Rpb24iKXtu W29dPSRlbXB0eX19RWxlbWVudC5kaXNwb3NlKG4pfX1pZighbSl7cmV0dXJufWhb bV09ZlttXT1udWxsfTt2YXIgZD1mdW5jdGlvbigpe0hhc2guZWFjaChoLGcpO2lm KEJyb3dzZXIuRW5naW5lLnRyaWRlbnQpeyRBKGRvY3VtZW50LmdldEVsZW1lbnRz QnlUYWdOYW1lKCJvYmplY3QiKSkuZWFjaChnKX1pZih3aW5kb3cuQ29sbGVjdEdh cmJhZ2Upe0NvbGxlY3RHYXJiYWdlKCl9aD1mPW51bGx9O3ZhciBqPWZ1bmN0aW9u KG4sbCxzLG0scCxyKXt2YXIgbz1uW3N8fGxdO3ZhciBxPVtdO3doaWxlKG8pe2lm KG8ubm9kZVR5cGU9PTEmJighbXx8RWxlbWVudC5tYXRjaChvLG0pKSl7aWYoIXAp e3JldHVybiBkb2N1bWVudC5pZChvLHIpfXEucHVzaChvKX1vPW9bbF19cmV0dXJu KHApP25ldyBFbGVtZW50cyhxLHtkZHVwOmZhbHNlLGNhc2g6IXJ9KTpudWxsfTt2 YXIgZT17aHRtbDoiaW5uZXJIVE1MIiwiY2xhc3MiOiJjbGFzc05hbWUiLCJmb3Ii OiJodG1sRm9yIixkZWZhdWx0VmFsdWU6ImRlZmF1bHRWYWx1ZSIsdGV4dDooQnJv d3Nlci5FbmdpbmUudHJpZGVudHx8KEJyb3dzZXIuRW5naW5lLndlYmtpdCYmQnJv d3Nlci5FbmdpbmUudmVyc2lvbjw0MjApKT8iaW5uZXJUZXh0IjoidGV4dENvbnRl bnQifTt2YXIgYj1bImNvbXBhY3QiLCJub3dyYXAiLCJpc21hcCIsImRlY2xhcmUi LCJub3NoYWRlIiwiY2hlY2tlZCIsImRpc2FibGVkIiwicmVhZG9ubHkiLCJtdWx0 aXBsZSIsInNlbGVjdGVkIiwibm9yZXNpemUiLCJkZWZlciJdO3ZhciBrPVsidmFs dWUiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiYWNjZXNzS2V5IiwiY2VsbFBhZGRp bmciLCJjZWxsU3BhY2luZyIsImNvbFNwYW4iLCJmcmFtZUJvcmRlciIsIm1heExl bmd0aCIsInJlYWRPbmx5Iiwicm93U3BhbiIsInRhYkluZGV4IiwidXNlTWFwIl07 Yj1iLmFzc29jaWF0ZShiKTtIYXNoLmV4dGVuZChlLGIpO0hhc2guZXh0ZW5kKGUs ay5hc3NvY2lhdGUoay5tYXAoU3RyaW5nLnRvTG93ZXJDYXNlKSkpO3ZhciBhPXti ZWZvcmU6ZnVuY3Rpb24obSxsKXtpZihsLnBhcmVudE5vZGUpe2wucGFyZW50Tm9k ZS5pbnNlcnRCZWZvcmUobSxsKX19LGFmdGVyOmZ1bmN0aW9uKG0sbCl7aWYoIWwu cGFyZW50Tm9kZSl7cmV0dXJufXZhciBuPWwubmV4dFNpYmxpbmc7KG4pP2wucGFy ZW50Tm9kZS5pbnNlcnRCZWZvcmUobSxuKTpsLnBhcmVudE5vZGUuYXBwZW5kQ2hp bGQobSl9LGJvdHRvbTpmdW5jdGlvbihtLGwpe2wuYXBwZW5kQ2hpbGQobSl9LHRv cDpmdW5jdGlvbihtLGwpe3ZhciBuPWwuZmlyc3RDaGlsZDsobik/bC5pbnNlcnRC ZWZvcmUobSxuKTpsLmFwcGVuZENoaWxkKG0pfX07YS5pbnNpZGU9YS5ib3R0b207 SGFzaC5lYWNoKGEsZnVuY3Rpb24obCxtKXttPW0uY2FwaXRhbGl6ZSgpO0VsZW1l bnQuaW1wbGVtZW50KCJpbmplY3QiK20sZnVuY3Rpb24obil7bCh0aGlzLGRvY3Vt ZW50LmlkKG4sdHJ1ZSkpO3JldHVybiB0aGlzfSk7RWxlbWVudC5pbXBsZW1lbnQo ImdyYWIiK20sZnVuY3Rpb24obil7bChkb2N1bWVudC5pZChuLHRydWUpLHRoaXMp O3JldHVybiB0aGlzfSl9KTtFbGVtZW50LmltcGxlbWVudCh7c2V0OmZ1bmN0aW9u KG8sbSl7c3dpdGNoKCR0eXBlKG8pKXtjYXNlIm9iamVjdCI6Zm9yKHZhciBuIGlu IG8pe3RoaXMuc2V0KG4sb1tuXSl9YnJlYWs7Y2FzZSJzdHJpbmciOnZhciBsPUVs ZW1lbnQuUHJvcGVydGllcy5nZXQobyk7KGwmJmwuc2V0KT9sLnNldC5hcHBseSh0 aGlzLEFycmF5LnNsaWNlKGFyZ3VtZW50cywxKSk6dGhpcy5zZXRQcm9wZXJ0eShv LG0pfXJldHVybiB0aGlzfSxnZXQ6ZnVuY3Rpb24obSl7dmFyIGw9RWxlbWVudC5Q cm9wZXJ0aWVzLmdldChtKTtyZXR1cm4obCYmbC5nZXQpP2wuZ2V0LmFwcGx5KHRo aXMsQXJyYXkuc2xpY2UoYXJndW1lbnRzLDEpKTp0aGlzLmdldFByb3BlcnR5KG0p fSxlcmFzZTpmdW5jdGlvbihtKXt2YXIgbD1FbGVtZW50LlByb3BlcnRpZXMuZ2V0 KG0pOyhsJiZsLmVyYXNlKT9sLmVyYXNlLmFwcGx5KHRoaXMpOnRoaXMucmVtb3Zl UHJvcGVydHkobSk7cmV0dXJuIHRoaXN9LHNldFByb3BlcnR5OmZ1bmN0aW9uKG0s bil7dmFyIGw9ZVttXTtpZihuPT11bmRlZmluZWQpe3JldHVybiB0aGlzLnJlbW92 ZVByb3BlcnR5KG0pfWlmKGwmJmJbbV0pe249ISFufShsKT90aGlzW2xdPW46dGhp cy5zZXRBdHRyaWJ1dGUobSwiIituKTtyZXR1cm4gdGhpc30sc2V0UHJvcGVydGll czpmdW5jdGlvbihsKXtmb3IodmFyIG0gaW4gbCl7dGhpcy5zZXRQcm9wZXJ0eSht LGxbbV0pfXJldHVybiB0aGlzfSxnZXRQcm9wZXJ0eTpmdW5jdGlvbihtKXt2YXIg bD1lW21dO3ZhciBuPShsKT90aGlzW2xdOnRoaXMuZ2V0QXR0cmlidXRlKG0sMik7 cmV0dXJuKGJbbV0pPyEhbjoobCk/bjpufHxudWxsfSxnZXRQcm9wZXJ0aWVzOmZ1 bmN0aW9uKCl7dmFyIGw9JEEoYXJndW1lbnRzKTtyZXR1cm4gbC5tYXAodGhpcy5n ZXRQcm9wZXJ0eSx0aGlzKS5hc3NvY2lhdGUobCl9LHJlbW92ZVByb3BlcnR5OmZ1 bmN0aW9uKG0pe3ZhciBsPWVbbV07KGwpP3RoaXNbbF09KGwmJmJbbV0pP2ZhbHNl OiIiOnRoaXMucmVtb3ZlQXR0cmlidXRlKG0pO3JldHVybiB0aGlzfSxyZW1vdmVQ cm9wZXJ0aWVzOmZ1bmN0aW9uKCl7QXJyYXkuZWFjaChhcmd1bWVudHMsdGhpcy5y ZW1vdmVQcm9wZXJ0eSx0aGlzKTtyZXR1cm4gdGhpc30saGFzQ2xhc3M6ZnVuY3Rp b24obCl7cmV0dXJuIHRoaXMuY2xhc3NOYW1lLmNvbnRhaW5zKGwsIiAiKX0sYWRk Q2xhc3M6ZnVuY3Rpb24obCl7aWYoIXRoaXMuaGFzQ2xhc3MobCkpe3RoaXMuY2xh c3NOYW1lPSh0aGlzLmNsYXNzTmFtZSsiICIrbCkuY2xlYW4oKX1yZXR1cm4gdGhp c30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24obCl7dGhpcy5jbGFzc05hbWU9dGhpcy5j bGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCIoXnxcXHMpIitsKyIoPzpcXHN8 JCkiKSwiJDEiKTtyZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24obCl7 cmV0dXJuIHRoaXMuaGFzQ2xhc3MobCk/dGhpcy5yZW1vdmVDbGFzcyhsKTp0aGlz LmFkZENsYXNzKGwpfSxhZG9wdDpmdW5jdGlvbigpe0FycmF5LmZsYXR0ZW4oYXJn dW1lbnRzKS5lYWNoKGZ1bmN0aW9uKGwpe2w9ZG9jdW1lbnQuaWQobCx0cnVlKTtp ZihsKXt0aGlzLmFwcGVuZENoaWxkKGwpfX0sdGhpcyk7cmV0dXJuIHRoaXN9LGFw cGVuZFRleHQ6ZnVuY3Rpb24obSxsKXtyZXR1cm4gdGhpcy5ncmFiKHRoaXMuZ2V0 RG9jdW1lbnQoKS5uZXdUZXh0Tm9kZShtKSxsKX0sZ3JhYjpmdW5jdGlvbihtLGwp e2FbbHx8ImJvdHRvbSJdKGRvY3VtZW50LmlkKG0sdHJ1ZSksdGhpcyk7cmV0dXJu IHRoaXN9LGluamVjdDpmdW5jdGlvbihtLGwpe2FbbHx8ImJvdHRvbSJdKHRoaXMs ZG9jdW1lbnQuaWQobSx0cnVlKSk7cmV0dXJuIHRoaXN9LHJlcGxhY2VzOmZ1bmN0 aW9uKGwpe2w9ZG9jdW1lbnQuaWQobCx0cnVlKTtsLnBhcmVudE5vZGUucmVwbGFj ZUNoaWxkKHRoaXMsbCk7cmV0dXJuIHRoaXN9LHdyYXBzOmZ1bmN0aW9uKG0sbCl7 bT1kb2N1bWVudC5pZChtLHRydWUpO3JldHVybiB0aGlzLnJlcGxhY2VzKG0pLmdy YWIobSxsKX0sZ2V0UHJldmlvdXM6ZnVuY3Rpb24obCxtKXtyZXR1cm4gaih0aGlz LCJwcmV2aW91c1NpYmxpbmciLG51bGwsbCxmYWxzZSxtKX0sZ2V0QWxsUHJldmlv dXM6ZnVuY3Rpb24obCxtKXtyZXR1cm4gaih0aGlzLCJwcmV2aW91c1NpYmxpbmci LG51bGwsbCx0cnVlLG0pfSxnZXROZXh0OmZ1bmN0aW9uKGwsbSl7cmV0dXJuIGoo dGhpcywibmV4dFNpYmxpbmciLG51bGwsbCxmYWxzZSxtKX0sZ2V0QWxsTmV4dDpm dW5jdGlvbihsLG0pe3JldHVybiBqKHRoaXMsIm5leHRTaWJsaW5nIixudWxsLGws dHJ1ZSxtKX0sZ2V0Rmlyc3Q6ZnVuY3Rpb24obCxtKXtyZXR1cm4gaih0aGlzLCJu ZXh0U2libGluZyIsImZpcnN0Q2hpbGQiLGwsZmFsc2UsbSl9LGdldExhc3Q6ZnVu Y3Rpb24obCxtKXtyZXR1cm4gaih0aGlzLCJwcmV2aW91c1NpYmxpbmciLCJsYXN0 Q2hpbGQiLGwsZmFsc2UsbSl9LGdldFBhcmVudDpmdW5jdGlvbihsLG0pe3JldHVy biBqKHRoaXMsInBhcmVudE5vZGUiLG51bGwsbCxmYWxzZSxtKX0sZ2V0UGFyZW50 czpmdW5jdGlvbihsLG0pe3JldHVybiBqKHRoaXMsInBhcmVudE5vZGUiLG51bGws bCx0cnVlLG0pfSxnZXRTaWJsaW5nczpmdW5jdGlvbihsLG0pe3JldHVybiB0aGlz LmdldFBhcmVudCgpLmdldENoaWxkcmVuKGwsbSkuZXJhc2UodGhpcyl9LGdldENo aWxkcmVuOmZ1bmN0aW9uKGwsbSl7cmV0dXJuIGoodGhpcywibmV4dFNpYmxpbmci LCJmaXJzdENoaWxkIixsLHRydWUsbSl9LGdldFdpbmRvdzpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLm93bmVyRG9jdW1lbnQud2luZG93fSxnZXREb2N1bWVudDpmdW5j dGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnR9LGdldEVsZW1lbnRCeUlk OmZ1bmN0aW9uKG8sbil7dmFyIG09dGhpcy5vd25lckRvY3VtZW50LmdldEVsZW1l bnRCeUlkKG8pO2lmKCFtKXtyZXR1cm4gbnVsbH1mb3IodmFyIGw9bS5wYXJlbnRO b2RlO2whPXRoaXM7bD1sLnBhcmVudE5vZGUpe2lmKCFsKXtyZXR1cm4gbnVsbH19 cmV0dXJuIGRvY3VtZW50LmlkKG0sbil9LGdldFNlbGVjdGVkOmZ1bmN0aW9uKCl7 cmV0dXJuIG5ldyBFbGVtZW50cygkQSh0aGlzLm9wdGlvbnMpLmZpbHRlcihmdW5j dGlvbihsKXtyZXR1cm4gbC5zZWxlY3RlZH0pKX0sZ2V0Q29tcHV0ZWRTdHlsZTpm dW5jdGlvbihtKXtpZih0aGlzLmN1cnJlbnRTdHlsZSl7cmV0dXJuIHRoaXMuY3Vy cmVudFN0eWxlW20uY2FtZWxDYXNlKCldfXZhciBsPXRoaXMuZ2V0RG9jdW1lbnQo KS5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHRoaXMsbnVsbCk7cmV0dXJu KGwpP2wuZ2V0UHJvcGVydHlWYWx1ZShbbS5oeXBoZW5hdGUoKV0pOm51bGx9LHRv UXVlcnlTdHJpbmc6ZnVuY3Rpb24oKXt2YXIgbD1bXTt0aGlzLmdldEVsZW1lbnRz KCJpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSIsdHJ1ZSkuZWFjaChmdW5jdGlvbiht KXtpZighbS5uYW1lfHxtLmRpc2FibGVkfHxtLnR5cGU9PSJzdWJtaXQifHxtLnR5 cGU9PSJyZXNldCJ8fG0udHlwZT09ImZpbGUiKXtyZXR1cm59dmFyIG49KG0udGFn TmFtZS50b0xvd2VyQ2FzZSgpPT0ic2VsZWN0Iik/RWxlbWVudC5nZXRTZWxlY3Rl ZChtKS5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIG8udmFsdWV9KTooKG0udHlwZT09 InJhZGlvInx8bS50eXBlPT0iY2hlY2tib3giKSYmIW0uY2hlY2tlZCk/bnVsbDpt LnZhbHVlOyRzcGxhdChuKS5lYWNoKGZ1bmN0aW9uKG8pe2lmKHR5cGVvZiBvIT0i dW5kZWZpbmVkIil7bC5wdXNoKG0ubmFtZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50 KG8pKX19KX0pO3JldHVybiBsLmpvaW4oIiYiKX0sY2xvbmU6ZnVuY3Rpb24obyxs KXtvPW8hPT1mYWxzZTt2YXIgcj10aGlzLmNsb25lTm9kZShvKTt2YXIgbj1mdW5j dGlvbih2LHUpe2lmKCFsKXt2LnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX1pZihCcm93 c2VyLkVuZ2luZS50cmlkZW50KXt2LmNsZWFyQXR0cmlidXRlcygpO3YubWVyZ2VB dHRyaWJ1dGVzKHUpO3YucmVtb3ZlQXR0cmlidXRlKCJ1aWQiKTtpZih2Lm9wdGlv bnMpe3ZhciB3PXYub3B0aW9ucyxzPXUub3B0aW9ucztmb3IodmFyIHQ9dy5sZW5n dGg7dC0tOyl7d1t0XS5zZWxlY3RlZD1zW3RdLnNlbGVjdGVkfX19dmFyIHg9aVt1 LnRhZ05hbWUudG9Mb3dlckNhc2UoKV07aWYoeCYmdVt4XSl7dlt4XT11W3hdfX07 aWYobyl7dmFyIHA9ci5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLHE9dGhpcy5n ZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpO2Zvcih2YXIgbT1wLmxlbmd0aDttLS07 KXtuKHBbbV0scVttXSl9fW4ocix0aGlzKTtyZXR1cm4gZG9jdW1lbnQuaWQocil9 LGRlc3Ryb3k6ZnVuY3Rpb24oKXtFbGVtZW50LmVtcHR5KHRoaXMpO0VsZW1lbnQu ZGlzcG9zZSh0aGlzKTtnKHRoaXMsdHJ1ZSk7cmV0dXJuIG51bGx9LGVtcHR5OmZ1 bmN0aW9uKCl7JEEodGhpcy5jaGlsZE5vZGVzKS5lYWNoKGZ1bmN0aW9uKGwpe0Vs ZW1lbnQuZGVzdHJveShsKX0pO3JldHVybiB0aGlzfSxkaXNwb3NlOmZ1bmN0aW9u KCl7cmV0dXJuKHRoaXMucGFyZW50Tm9kZSk/dGhpcy5wYXJlbnROb2RlLnJlbW92 ZUNoaWxkKHRoaXMpOnRoaXN9LGhhc0NoaWxkOmZ1bmN0aW9uKGwpe2w9ZG9jdW1l bnQuaWQobCx0cnVlKTtpZighbCl7cmV0dXJuIGZhbHNlfWlmKEJyb3dzZXIuRW5n aW5lLndlYmtpdCYmQnJvd3Nlci5FbmdpbmUudmVyc2lvbjw0MjApe3JldHVybiAk QSh0aGlzLmdldEVsZW1lbnRzQnlUYWdOYW1lKGwudGFnTmFtZSkpLmNvbnRhaW5z KGwpfXJldHVybih0aGlzLmNvbnRhaW5zKT8odGhpcyE9bCYmdGhpcy5jb250YWlu cyhsKSk6ISEodGhpcy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihsKSYxNil9LG1h dGNoOmZ1bmN0aW9uKGwpe3JldHVybighbHx8KGw9PXRoaXMpfHwoRWxlbWVudC5n ZXQodGhpcywidGFnIik9PWwpKX19KTtOYXRpdmUuaW1wbGVtZW50KFtFbGVtZW50 LFdpbmRvdyxEb2N1bWVudF0se2FkZExpc3RlbmVyOmZ1bmN0aW9uKG8sbil7aWYo bz09InVubG9hZCIpe3ZhciBsPW4sbT10aGlzO249ZnVuY3Rpb24oKXttLnJlbW92 ZUxpc3RlbmVyKCJ1bmxvYWQiLG4pO2woKX19ZWxzZXtoW3RoaXMudWlkXT10aGlz fWlmKHRoaXMuYWRkRXZlbnRMaXN0ZW5lcil7dGhpcy5hZGRFdmVudExpc3RlbmVy KG8sbixmYWxzZSl9ZWxzZXt0aGlzLmF0dGFjaEV2ZW50KCJvbiIrbyxuKX1yZXR1 cm4gdGhpc30scmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24obSxsKXtpZih0aGlzLnJl bW92ZUV2ZW50TGlzdGVuZXIpe3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihtLGws ZmFsc2UpfWVsc2V7dGhpcy5kZXRhY2hFdmVudCgib24iK20sbCl9cmV0dXJuIHRo aXN9LHJldHJpZXZlOmZ1bmN0aW9uKG0sbCl7dmFyIG89Yyh0aGlzLnVpZCksbj1v W21dO2lmKGwhPXVuZGVmaW5lZCYmbj09dW5kZWZpbmVkKXtuPW9bbV09bH1yZXR1 cm4gJHBpY2sobil9LHN0b3JlOmZ1bmN0aW9uKG0sbCl7dmFyIG49Yyh0aGlzLnVp ZCk7blttXT1sO3JldHVybiB0aGlzfSxlbGltaW5hdGU6ZnVuY3Rpb24obCl7dmFy IG09Yyh0aGlzLnVpZCk7ZGVsZXRlIG1bbF07cmV0dXJuIHRoaXN9fSk7d2luZG93 LmFkZExpc3RlbmVyKCJ1bmxvYWQiLGQpfSkoKTtFbGVtZW50LlByb3BlcnRpZXM9 bmV3IEhhc2g7RWxlbWVudC5Qcm9wZXJ0aWVzLnN0eWxlPXtzZXQ6ZnVuY3Rpb24o YSl7dGhpcy5zdHlsZS5jc3NUZXh0PWF9LGdldDpmdW5jdGlvbigpe3JldHVybiB0 aGlzLnN0eWxlLmNzc1RleHR9LGVyYXNlOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5j c3NUZXh0PSIifX07RWxlbWVudC5Qcm9wZXJ0aWVzLnRhZz17Z2V0OmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMudGFnTmFtZS50b0xvd2VyQ2FzZSgpfX07RWxlbWVudC5Q cm9wZXJ0aWVzLmh0bWw9KGZ1bmN0aW9uKCl7dmFyIGM9ZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgiZGl2Iik7dmFyIGE9e3RhYmxlOlsxLCI8dGFibGU+IiwiPC90YWJs ZT4iXSxzZWxlY3Q6WzEsIjxzZWxlY3Q+IiwiPC9zZWxlY3Q+Il0sdGJvZHk6WzIs Ijx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRyOlszLCI8dGFi bGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXX07YS50aGVh ZD1hLnRmb290PWEudGJvZHk7dmFyIGI9e3NldDpmdW5jdGlvbigpe3ZhciBlPUFy cmF5LmZsYXR0ZW4oYXJndW1lbnRzKS5qb2luKCIiKTt2YXIgZj1Ccm93c2VyLkVu Z2luZS50cmlkZW50JiZhW3RoaXMuZ2V0KCJ0YWciKV07aWYoZil7dmFyIGc9Yztn LmlubmVySFRNTD1mWzFdK2UrZlsyXTtmb3IodmFyIGQ9ZlswXTtkLS07KXtnPWcu Zmlyc3RDaGlsZH10aGlzLmVtcHR5KCkuYWRvcHQoZy5jaGlsZE5vZGVzKX1lbHNl e3RoaXMuaW5uZXJIVE1MPWV9fX07Yi5lcmFzZT1iLnNldDtyZXR1cm4gYn0pKCk7 aWYoQnJvd3Nlci5FbmdpbmUud2Via2l0JiZCcm93c2VyLkVuZ2luZS52ZXJzaW9u PDQyMCl7RWxlbWVudC5Qcm9wZXJ0aWVzLnRleHQ9e2dldDpmdW5jdGlvbigpe2lm KHRoaXMuaW5uZXJUZXh0KXtyZXR1cm4gdGhpcy5pbm5lclRleHR9dmFyIGE9dGhp cy5vd25lckRvY3VtZW50Lm5ld0VsZW1lbnQoImRpdiIse2h0bWw6dGhpcy5pbm5l ckhUTUx9KS5pbmplY3QodGhpcy5vd25lckRvY3VtZW50LmJvZHkpO3ZhciBiPWEu aW5uZXJUZXh0O2EuZGVzdHJveSgpO3JldHVybiBifX19RWxlbWVudC5Qcm9wZXJ0 aWVzLmV2ZW50cz17c2V0OmZ1bmN0aW9uKGEpe3RoaXMuYWRkRXZlbnRzKGEpfX07 TmF0aXZlLmltcGxlbWVudChbRWxlbWVudCxXaW5kb3csRG9jdW1lbnRdLHthZGRF dmVudDpmdW5jdGlvbihlLGcpe3ZhciBoPXRoaXMucmV0cmlldmUoImV2ZW50cyIs e30pO2hbZV09aFtlXXx8e2tleXM6W10sdmFsdWVzOltdfTtpZihoW2VdLmtleXMu Y29udGFpbnMoZykpe3JldHVybiB0aGlzfWhbZV0ua2V5cy5wdXNoKGcpO3ZhciBm PWUsYT1FbGVtZW50LkV2ZW50cy5nZXQoZSksYz1nLGk9dGhpcztpZihhKXtpZihh Lm9uQWRkKXthLm9uQWRkLmNhbGwodGhpcyxnKX1pZihhLmNvbmRpdGlvbil7Yz1m dW5jdGlvbihqKXtpZihhLmNvbmRpdGlvbi5jYWxsKHRoaXMsaikpe3JldHVybiBn LmNhbGwodGhpcyxqKX1yZXR1cm4gdHJ1ZX19Zj1hLmJhc2V8fGZ9dmFyIGQ9ZnVu Y3Rpb24oKXtyZXR1cm4gZy5jYWxsKGkpfTt2YXIgYj1FbGVtZW50Lk5hdGl2ZUV2 ZW50c1tmXTtpZihiKXtpZihiPT0yKXtkPWZ1bmN0aW9uKGope2o9bmV3IEV2ZW50 KGosaS5nZXRXaW5kb3coKSk7aWYoYy5jYWxsKGksaik9PT1mYWxzZSl7ai5zdG9w KCl9fX10aGlzLmFkZExpc3RlbmVyKGYsZCl9aFtlXS52YWx1ZXMucHVzaChkKTty ZXR1cm4gdGhpc30scmVtb3ZlRXZlbnQ6ZnVuY3Rpb24oYyxiKXt2YXIgYT10aGlz LnJldHJpZXZlKCJldmVudHMiKTtpZighYXx8IWFbY10pe3JldHVybiB0aGlzfXZh ciBmPWFbY10ua2V5cy5pbmRleE9mKGIpO2lmKGY9PS0xKXtyZXR1cm4gdGhpc31h W2NdLmtleXMuc3BsaWNlKGYsMSk7dmFyIGU9YVtjXS52YWx1ZXMuc3BsaWNlKGYs MSlbMF07dmFyIGQ9RWxlbWVudC5FdmVudHMuZ2V0KGMpO2lmKGQpe2lmKGQub25S ZW1vdmUpe2Qub25SZW1vdmUuY2FsbCh0aGlzLGIpfWM9ZC5iYXNlfHxjfXJldHVy bihFbGVtZW50Lk5hdGl2ZUV2ZW50c1tjXSk/dGhpcy5yZW1vdmVMaXN0ZW5lcihj LGUpOnRoaXN9LGFkZEV2ZW50czpmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSl7 dGhpcy5hZGRFdmVudChiLGFbYl0pfXJldHVybiB0aGlzfSxyZW1vdmVFdmVudHM6 ZnVuY3Rpb24oYSl7dmFyIGM7aWYoJHR5cGUoYSk9PSJvYmplY3QiKXtmb3IoYyBp biBhKXt0aGlzLnJlbW92ZUV2ZW50KGMsYVtjXSl9cmV0dXJuIHRoaXN9dmFyIGI9 dGhpcy5yZXRyaWV2ZSgiZXZlbnRzIik7aWYoIWIpe3JldHVybiB0aGlzfWlmKCFh KXtmb3IoYyBpbiBiKXt0aGlzLnJlbW92ZUV2ZW50cyhjKX10aGlzLmVsaW1pbmF0 ZSgiZXZlbnRzIil9ZWxzZXtpZihiW2FdKXt3aGlsZShiW2FdLmtleXNbMF0pe3Ro aXMucmVtb3ZlRXZlbnQoYSxiW2FdLmtleXNbMF0pfWJbYV09bnVsbH19cmV0dXJu IHRoaXN9LGZpcmVFdmVudDpmdW5jdGlvbihkLGIsYSl7dmFyIGM9dGhpcy5yZXRy aWV2ZSgiZXZlbnRzIik7aWYoIWN8fCFjW2RdKXtyZXR1cm4gdGhpc31jW2RdLmtl eXMuZWFjaChmdW5jdGlvbihlKXtlLmNyZWF0ZSh7YmluZDp0aGlzLGRlbGF5OmEs ImFyZ3VtZW50cyI6Yn0pKCl9LHRoaXMpO3JldHVybiB0aGlzfSxjbG9uZUV2ZW50 czpmdW5jdGlvbihkLGEpe2Q9ZG9jdW1lbnQuaWQoZCk7dmFyIGM9ZC5yZXRyaWV2 ZSgiZXZlbnRzIik7aWYoIWMpe3JldHVybiB0aGlzfWlmKCFhKXtmb3IodmFyIGIg aW4gYyl7dGhpcy5jbG9uZUV2ZW50cyhkLGIpfX1lbHNle2lmKGNbYV0pe2NbYV0u a2V5cy5lYWNoKGZ1bmN0aW9uKGUpe3RoaXMuYWRkRXZlbnQoYSxlKX0sdGhpcyl9 fXJldHVybiB0aGlzfX0pO0VsZW1lbnQuTmF0aXZlRXZlbnRzPXtjbGljazoyLGRi bGNsaWNrOjIsbW91c2V1cDoyLG1vdXNlZG93bjoyLGNvbnRleHRtZW51OjIsbW91 c2V3aGVlbDoyLERPTU1vdXNlU2Nyb2xsOjIsbW91c2VvdmVyOjIsbW91c2VvdXQ6 Mixtb3VzZW1vdmU6MixzZWxlY3RzdGFydDoyLHNlbGVjdGVuZDoyLGtleWRvd246 MixrZXlwcmVzczoyLGtleXVwOjIsZm9jdXM6MixibHVyOjIsY2hhbmdlOjIscmVz ZXQ6MixzZWxlY3Q6MixzdWJtaXQ6Mixsb2FkOjEsdW5sb2FkOjEsYmVmb3JldW5s b2FkOjIscmVzaXplOjEsbW92ZToxLERPTUNvbnRlbnRMb2FkZWQ6MSxyZWFkeXN0 YXRlY2hhbmdlOjEsZXJyb3I6MSxhYm9ydDoxLHNjcm9sbDoxfTsoZnVuY3Rpb24o KXt2YXIgYT1mdW5jdGlvbihiKXt2YXIgYz1iLnJlbGF0ZWRUYXJnZXQ7aWYoYz09 dW5kZWZpbmVkKXtyZXR1cm4gdHJ1ZX1pZihjPT09ZmFsc2Upe3JldHVybiBmYWxz ZX1yZXR1cm4oJHR5cGUodGhpcykhPSJkb2N1bWVudCImJmMhPXRoaXMmJmMucHJl Zml4IT0ieHVsIiYmIXRoaXMuaGFzQ2hpbGQoYykpfTtFbGVtZW50LkV2ZW50cz1u ZXcgSGFzaCh7bW91c2VlbnRlcjp7YmFzZToibW91c2VvdmVyIixjb25kaXRpb246 YX0sbW91c2VsZWF2ZTp7YmFzZToibW91c2VvdXQiLGNvbmRpdGlvbjphfSxtb3Vz ZXdoZWVsOntiYXNlOihCcm93c2VyLkVuZ2luZS5nZWNrbyk/IkRPTU1vdXNlU2Ny b2xsIjoibW91c2V3aGVlbCJ9fSl9KSgpO0VsZW1lbnQuUHJvcGVydGllcy5zdHls ZXM9e3NldDpmdW5jdGlvbihhKXt0aGlzLnNldFN0eWxlcyhhKX19O0VsZW1lbnQu UHJvcGVydGllcy5vcGFjaXR5PXtzZXQ6ZnVuY3Rpb24oYSxiKXtpZighYil7aWYo YT09MCl7aWYodGhpcy5zdHlsZS52aXNpYmlsaXR5IT0iaGlkZGVuIil7dGhpcy5z dHlsZS52aXNpYmlsaXR5PSJoaWRkZW4ifX1lbHNle2lmKHRoaXMuc3R5bGUudmlz aWJpbGl0eSE9InZpc2libGUiKXt0aGlzLnN0eWxlLnZpc2liaWxpdHk9InZpc2li bGUifX19aWYoIXRoaXMuY3VycmVudFN0eWxlfHwhdGhpcy5jdXJyZW50U3R5bGUu aGFzTGF5b3V0KXt0aGlzLnN0eWxlLnpvb209MX1pZihCcm93c2VyLkVuZ2luZS50 cmlkZW50KXt0aGlzLnN0eWxlLmZpbHRlcj0oYT09MSk/IiI6ImFscGhhKG9wYWNp dHk9IithKjEwMCsiKSJ9dGhpcy5zdHlsZS5vcGFjaXR5PWE7dGhpcy5zdG9yZSgi b3BhY2l0eSIsYSl9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJldHJpZXZl KCJvcGFjaXR5IiwxKX19O0VsZW1lbnQuaW1wbGVtZW50KHtzZXRPcGFjaXR5OmZ1 bmN0aW9uKGEpe3JldHVybiB0aGlzLnNldCgib3BhY2l0eSIsYSx0cnVlKX0sZ2V0 T3BhY2l0eTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgib3BhY2l0eSIpfSxz ZXRTdHlsZTpmdW5jdGlvbihiLGEpe3N3aXRjaChiKXtjYXNlIm9wYWNpdHkiOnJl dHVybiB0aGlzLnNldCgib3BhY2l0eSIscGFyc2VGbG9hdChhKSk7Y2FzZSJmbG9h dCI6Yj0oQnJvd3Nlci5FbmdpbmUudHJpZGVudCk/InN0eWxlRmxvYXQiOiJjc3NG bG9hdCJ9Yj1iLmNhbWVsQ2FzZSgpO2lmKCR0eXBlKGEpIT0ic3RyaW5nIil7dmFy IGM9KEVsZW1lbnQuU3R5bGVzLmdldChiKXx8IkAiKS5zcGxpdCgiICIpO2E9JHNw bGF0KGEpLm1hcChmdW5jdGlvbihlLGQpe2lmKCFjW2RdKXtyZXR1cm4iIn1yZXR1 cm4oJHR5cGUoZSk9PSJudW1iZXIiKT9jW2RdLnJlcGxhY2UoIkAiLE1hdGgucm91 bmQoZSkpOmV9KS5qb2luKCIgIil9ZWxzZXtpZihhPT1TdHJpbmcoTnVtYmVyKGEp KSl7YT1NYXRoLnJvdW5kKGEpfX10aGlzLnN0eWxlW2JdPWE7cmV0dXJuIHRoaXN9 LGdldFN0eWxlOmZ1bmN0aW9uKGcpe3N3aXRjaChnKXtjYXNlIm9wYWNpdHkiOnJl dHVybiB0aGlzLmdldCgib3BhY2l0eSIpO2Nhc2UiZmxvYXQiOmc9KEJyb3dzZXIu RW5naW5lLnRyaWRlbnQpPyJzdHlsZUZsb2F0IjoiY3NzRmxvYXQifWc9Zy5jYW1l bENhc2UoKTt2YXIgYT10aGlzLnN0eWxlW2ddO2lmKCEkY2hrKGEpKXthPVtdO2Zv cih2YXIgZiBpbiBFbGVtZW50LlNob3J0U3R5bGVzKXtpZihnIT1mKXtjb250aW51 ZX1mb3IodmFyIGUgaW4gRWxlbWVudC5TaG9ydFN0eWxlc1tmXSl7YS5wdXNoKHRo aXMuZ2V0U3R5bGUoZSkpfXJldHVybiBhLmpvaW4oIiAiKX1hPXRoaXMuZ2V0Q29t cHV0ZWRTdHlsZShnKX1pZihhKXthPVN0cmluZyhhKTt2YXIgYz1hLm1hdGNoKC9y Z2JhP1woW1xkXHMsXStcKS8pO2lmKGMpe2E9YS5yZXBsYWNlKGNbMF0sY1swXS5y Z2JUb0hleCgpKX19aWYoQnJvd3Nlci5FbmdpbmUucHJlc3RvfHwoQnJvd3Nlci5F bmdpbmUudHJpZGVudCYmISRjaGsocGFyc2VJbnQoYSwxMCkpKSl7aWYoZy50ZXN0 KC9eKGhlaWdodHx3aWR0aCkkLykpe3ZhciBiPShnPT0id2lkdGgiKT9bImxlZnQi LCJyaWdodCJdOlsidG9wIiwiYm90dG9tIl0sZD0wO2IuZWFjaChmdW5jdGlvbiho KXtkKz10aGlzLmdldFN0eWxlKCJib3JkZXItIitoKyItd2lkdGgiKS50b0ludCgp K3RoaXMuZ2V0U3R5bGUoInBhZGRpbmctIitoKS50b0ludCgpfSx0aGlzKTtyZXR1 cm4gdGhpc1sib2Zmc2V0IitnLmNhcGl0YWxpemUoKV0tZCsicHgifWlmKChCcm93 c2VyLkVuZ2luZS5wcmVzdG8pJiZTdHJpbmcoYSkudGVzdCgicHgiKSl7cmV0dXJu IGF9aWYoZy50ZXN0KC8oYm9yZGVyKC4rKVdpZHRofG1hcmdpbnxwYWRkaW5nKS8p KXtyZXR1cm4iMHB4In19cmV0dXJuIGF9LHNldFN0eWxlczpmdW5jdGlvbihiKXtm b3IodmFyIGEgaW4gYil7dGhpcy5zZXRTdHlsZShhLGJbYV0pfXJldHVybiB0aGlz fSxnZXRTdHlsZXM6ZnVuY3Rpb24oKXt2YXIgYT17fTtBcnJheS5mbGF0dGVuKGFy Z3VtZW50cykuZWFjaChmdW5jdGlvbihiKXthW2JdPXRoaXMuZ2V0U3R5bGUoYil9 LHRoaXMpO3JldHVybiBhfX0pO0VsZW1lbnQuU3R5bGVzPW5ldyBIYXNoKHtsZWZ0 OiJAcHgiLHRvcDoiQHB4Iixib3R0b206IkBweCIscmlnaHQ6IkBweCIsd2lkdGg6 IkBweCIsaGVpZ2h0OiJAcHgiLG1heFdpZHRoOiJAcHgiLG1heEhlaWdodDoiQHB4 IixtaW5XaWR0aDoiQHB4IixtaW5IZWlnaHQ6IkBweCIsYmFja2dyb3VuZENvbG9y OiJyZ2IoQCwgQCwgQCkiLGJhY2tncm91bmRQb3NpdGlvbjoiQHB4IEBweCIsY29s b3I6InJnYihALCBALCBAKSIsZm9udFNpemU6IkBweCIsbGV0dGVyU3BhY2luZzoi QHB4IixsaW5lSGVpZ2h0OiJAcHgiLGNsaXA6InJlY3QoQHB4IEBweCBAcHggQHB4 KSIsbWFyZ2luOiJAcHggQHB4IEBweCBAcHgiLHBhZGRpbmc6IkBweCBAcHggQHB4 IEBweCIsYm9yZGVyOiJAcHggQCByZ2IoQCwgQCwgQCkgQHB4IEAgcmdiKEAsIEAs IEApIEBweCBAIHJnYihALCBALCBAKSIsYm9yZGVyV2lkdGg6IkBweCBAcHggQHB4 IEBweCIsYm9yZGVyU3R5bGU6IkAgQCBAIEAiLGJvcmRlckNvbG9yOiJyZ2IoQCwg QCwgQCkgcmdiKEAsIEAsIEApIHJnYihALCBALCBAKSByZ2IoQCwgQCwgQCkiLHpJ bmRleDoiQCIsem9vbToiQCIsZm9udFdlaWdodDoiQCIsdGV4dEluZGVudDoiQHB4 IixvcGFjaXR5OiJAIn0pO0VsZW1lbnQuU2hvcnRTdHlsZXM9e21hcmdpbjp7fSxw YWRkaW5nOnt9LGJvcmRlcjp7fSxib3JkZXJXaWR0aDp7fSxib3JkZXJTdHlsZTp7 fSxib3JkZXJDb2xvcjp7fX07WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQi XS5lYWNoKGZ1bmN0aW9uKGcpe3ZhciBmPUVsZW1lbnQuU2hvcnRTdHlsZXM7dmFy IGI9RWxlbWVudC5TdHlsZXM7WyJtYXJnaW4iLCJwYWRkaW5nIl0uZWFjaChmdW5j dGlvbihoKXt2YXIgaT1oK2c7ZltoXVtpXT1iW2ldPSJAcHgifSk7dmFyIGU9ImJv cmRlciIrZztmLmJvcmRlcltlXT1iW2VdPSJAcHggQCByZ2IoQCwgQCwgQCkiO3Zh ciBkPWUrIldpZHRoIixhPWUrIlN0eWxlIixjPWUrIkNvbG9yIjtmW2VdPXt9O2Yu Ym9yZGVyV2lkdGhbZF09ZltlXVtkXT1iW2RdPSJAcHgiO2YuYm9yZGVyU3R5bGVb YV09ZltlXVthXT1iW2FdPSJAIjtmLmJvcmRlckNvbG9yW2NdPWZbZV1bY109Yltj XT0icmdiKEAsIEAsIEApIn0pOyhmdW5jdGlvbigpe0VsZW1lbnQuaW1wbGVtZW50 KHtzY3JvbGxUbzpmdW5jdGlvbihoLGkpe2lmKGIodGhpcykpe3RoaXMuZ2V0V2lu ZG93KCkuc2Nyb2xsVG8oaCxpKX1lbHNle3RoaXMuc2Nyb2xsTGVmdD1oO3RoaXMu c2Nyb2xsVG9wPWl9cmV0dXJuIHRoaXN9LGdldFNpemU6ZnVuY3Rpb24oKXtpZihi KHRoaXMpKXtyZXR1cm4gdGhpcy5nZXRXaW5kb3coKS5nZXRTaXplKCl9cmV0dXJu e3g6dGhpcy5vZmZzZXRXaWR0aCx5OnRoaXMub2Zmc2V0SGVpZ2h0fX0sZ2V0U2Ny b2xsU2l6ZTpmdW5jdGlvbigpe2lmKGIodGhpcykpe3JldHVybiB0aGlzLmdldFdp bmRvdygpLmdldFNjcm9sbFNpemUoKX1yZXR1cm57eDp0aGlzLnNjcm9sbFdpZHRo LHk6dGhpcy5zY3JvbGxIZWlnaHR9fSxnZXRTY3JvbGw6ZnVuY3Rpb24oKXtpZihi KHRoaXMpKXtyZXR1cm4gdGhpcy5nZXRXaW5kb3coKS5nZXRTY3JvbGwoKX1yZXR1 cm57eDp0aGlzLnNjcm9sbExlZnQseTp0aGlzLnNjcm9sbFRvcH19LGdldFNjcm9s bHM6ZnVuY3Rpb24oKXt2YXIgaT10aGlzLGg9e3g6MCx5OjB9O3doaWxlKGkmJiFi KGkpKXtoLngrPWkuc2Nyb2xsTGVmdDtoLnkrPWkuc2Nyb2xsVG9wO2k9aS5wYXJl bnROb2RlfXJldHVybiBofSxnZXRPZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXt2YXIg aD10aGlzO2lmKGIoaCkpe3JldHVybiBudWxsfWlmKCFCcm93c2VyLkVuZ2luZS50 cmlkZW50KXtyZXR1cm4gaC5vZmZzZXRQYXJlbnR9d2hpbGUoKGg9aC5wYXJlbnRO b2RlKSYmIWIoaCkpe2lmKGQoaCwicG9zaXRpb24iKSE9InN0YXRpYyIpe3JldHVy biBofX1yZXR1cm4gbnVsbH0sZ2V0T2Zmc2V0czpmdW5jdGlvbigpe2lmKHRoaXMu Z2V0Qm91bmRpbmdDbGllbnRSZWN0KXt2YXIgaj10aGlzLmdldEJvdW5kaW5nQ2xp ZW50UmVjdCgpLG09ZG9jdW1lbnQuaWQodGhpcy5nZXREb2N1bWVudCgpLmRvY3Vt ZW50RWxlbWVudCkscD1tLmdldFNjcm9sbCgpLGs9dGhpcy5nZXRTY3JvbGxzKCks aT10aGlzLmdldFNjcm9sbCgpLGg9KGQodGhpcywicG9zaXRpb24iKT09ImZpeGVk Iik7cmV0dXJue3g6ai5sZWZ0LnRvSW50KCkray54LWkueCsoKGgpPzA6cC54KS1t LmNsaWVudExlZnQseTpqLnRvcC50b0ludCgpK2sueS1pLnkrKChoKT8wOnAueSkt bS5jbGllbnRUb3B9fXZhciBsPXRoaXMsbj17eDowLHk6MH07aWYoYih0aGlzKSl7 cmV0dXJuIG59d2hpbGUobCYmIWIobCkpe24ueCs9bC5vZmZzZXRMZWZ0O24ueSs9 bC5vZmZzZXRUb3A7aWYoQnJvd3Nlci5FbmdpbmUuZ2Vja28pe2lmKCFmKGwpKXtu LngrPWMobCk7bi55Kz1nKGwpfXZhciBvPWwucGFyZW50Tm9kZTtpZihvJiZkKG8s Im92ZXJmbG93IikhPSJ2aXNpYmxlIil7bi54Kz1jKG8pO24ueSs9ZyhvKX19ZWxz ZXtpZihsIT10aGlzJiZCcm93c2VyLkVuZ2luZS53ZWJraXQpe24ueCs9YyhsKTtu LnkrPWcobCl9fWw9bC5vZmZzZXRQYXJlbnR9aWYoQnJvd3Nlci5FbmdpbmUuZ2Vj a28mJiFmKHRoaXMpKXtuLngtPWModGhpcyk7bi55LT1nKHRoaXMpfXJldHVybiBu fSxnZXRQb3NpdGlvbjpmdW5jdGlvbihrKXtpZihiKHRoaXMpKXtyZXR1cm57eDow LHk6MH19dmFyIGw9dGhpcy5nZXRPZmZzZXRzKCksaT10aGlzLmdldFNjcm9sbHMo KTt2YXIgaD17eDpsLngtaS54LHk6bC55LWkueX07dmFyIGo9KGsmJihrPWRvY3Vt ZW50LmlkKGspKSk/ay5nZXRQb3NpdGlvbigpOnt4OjAseTowfTtyZXR1cm57eDpo Lngtai54LHk6aC55LWoueX19LGdldENvb3JkaW5hdGVzOmZ1bmN0aW9uKGope2lm KGIodGhpcykpe3JldHVybiB0aGlzLmdldFdpbmRvdygpLmdldENvb3JkaW5hdGVz KCl9dmFyIGg9dGhpcy5nZXRQb3NpdGlvbihqKSxpPXRoaXMuZ2V0U2l6ZSgpO3Zh ciBrPXtsZWZ0OmgueCx0b3A6aC55LHdpZHRoOmkueCxoZWlnaHQ6aS55fTtrLnJp Z2h0PWsubGVmdCtrLndpZHRoO2suYm90dG9tPWsudG9wK2suaGVpZ2h0O3JldHVy biBrfSxjb21wdXRlUG9zaXRpb246ZnVuY3Rpb24oaCl7cmV0dXJue2xlZnQ6aC54 LWUodGhpcywibWFyZ2luLWxlZnQiKSx0b3A6aC55LWUodGhpcywibWFyZ2luLXRv cCIpfX0sc2V0UG9zaXRpb246ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuc2V0U3R5 bGVzKHRoaXMuY29tcHV0ZVBvc2l0aW9uKGgpKX19KTtOYXRpdmUuaW1wbGVtZW50 KFtEb2N1bWVudCxXaW5kb3ddLHtnZXRTaXplOmZ1bmN0aW9uKCl7aWYoQnJvd3Nl ci5FbmdpbmUucHJlc3RvfHxCcm93c2VyLkVuZ2luZS53ZWJraXQpe3ZhciBpPXRo aXMuZ2V0V2luZG93KCk7cmV0dXJue3g6aS5pbm5lcldpZHRoLHk6aS5pbm5lckhl aWdodH19dmFyIGg9YSh0aGlzKTtyZXR1cm57eDpoLmNsaWVudFdpZHRoLHk6aC5j bGllbnRIZWlnaHR9fSxnZXRTY3JvbGw6ZnVuY3Rpb24oKXt2YXIgaT10aGlzLmdl dFdpbmRvdygpLGg9YSh0aGlzKTtyZXR1cm57eDppLnBhZ2VYT2Zmc2V0fHxoLnNj cm9sbExlZnQseTppLnBhZ2VZT2Zmc2V0fHxoLnNjcm9sbFRvcH19LGdldFNjcm9s bFNpemU6ZnVuY3Rpb24oKXt2YXIgaT1hKHRoaXMpLGg9dGhpcy5nZXRTaXplKCk7 cmV0dXJue3g6TWF0aC5tYXgoaS5zY3JvbGxXaWR0aCxoLngpLHk6TWF0aC5tYXgo aS5zY3JvbGxIZWlnaHQsaC55KX19LGdldFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0 dXJue3g6MCx5OjB9fSxnZXRDb29yZGluYXRlczpmdW5jdGlvbigpe3ZhciBoPXRo aXMuZ2V0U2l6ZSgpO3JldHVybnt0b3A6MCxsZWZ0OjAsYm90dG9tOmgueSxyaWdo dDpoLngsaGVpZ2h0OmgueSx3aWR0aDpoLnh9fX0pO3ZhciBkPUVsZW1lbnQuZ2V0 Q29tcHV0ZWRTdHlsZTtmdW5jdGlvbiBlKGgsaSl7cmV0dXJuIGQoaCxpKS50b0lu dCgpfHwwfWZ1bmN0aW9uIGYoaCl7cmV0dXJuIGQoaCwiLW1vei1ib3gtc2l6aW5n Iik9PSJib3JkZXItYm94In1mdW5jdGlvbiBnKGgpe3JldHVybiBlKGgsImJvcmRl ci10b3Atd2lkdGgiKX1mdW5jdGlvbiBjKGgpe3JldHVybiBlKGgsImJvcmRlci1s ZWZ0LXdpZHRoIil9ZnVuY3Rpb24gYihoKXtyZXR1cm4oL14oPzpib2R5fGh0bWwp JC9pKS50ZXN0KGgudGFnTmFtZSl9ZnVuY3Rpb24gYShoKXt2YXIgaT1oLmdldERv Y3VtZW50KCk7cmV0dXJuKCFpLmNvbXBhdE1vZGV8fGkuY29tcGF0TW9kZT09IkNT UzFDb21wYXQiKT9pLmh0bWw6aS5ib2R5fX0pKCk7RWxlbWVudC5hbGlhcygic2V0 UG9zaXRpb24iLCJwb3NpdGlvbiIpO05hdGl2ZS5pbXBsZW1lbnQoW1dpbmRvdyxE b2N1bWVudCxFbGVtZW50XSx7Z2V0SGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuZ2V0U2l6ZSgpLnl9LGdldFdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu Z2V0U2l6ZSgpLnh9LGdldFNjcm9sbFRvcDpmdW5jdGlvbigpe3JldHVybiB0aGlz LmdldFNjcm9sbCgpLnl9LGdldFNjcm9sbExlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5nZXRTY3JvbGwoKS54fSxnZXRTY3JvbGxIZWlnaHQ6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5nZXRTY3JvbGxTaXplKCkueX0sZ2V0U2Nyb2xsV2lkdGg6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRTY3JvbGxTaXplKCkueH0sZ2V0VG9wOmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UG9zaXRpb24oKS55fSxnZXRMZWZ0OmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UG9zaXRpb24oKS54fX0pO05hdGl2ZS5p bXBsZW1lbnQoW0RvY3VtZW50LEVsZW1lbnRdLHtnZXRFbGVtZW50czpmdW5jdGlv bihoLGcpe2g9aC5zcGxpdCgiLCIpO3ZhciBjLGU9e307Zm9yKHZhciBkPTAsYj1o Lmxlbmd0aDtkPGI7ZCsrKXt2YXIgYT1oW2RdLGY9U2VsZWN0b3JzLlV0aWxzLnNl YXJjaCh0aGlzLGEsZSk7aWYoZCE9MCYmZi5pdGVtKXtmPSRBKGYpfWM9KGQ9PTAp P2Y6KGMuaXRlbSk/JEEoYykuY29uY2F0KGYpOmMuY29uY2F0KGYpfXJldHVybiBu ZXcgRWxlbWVudHMoYyx7ZGR1cDooaC5sZW5ndGg+MSksY2FzaDohZ30pfX0pO0Vs ZW1lbnQuaW1wbGVtZW50KHttYXRjaDpmdW5jdGlvbihiKXtpZighYnx8KGI9PXRo aXMpKXtyZXR1cm4gdHJ1ZX12YXIgZD1TZWxlY3RvcnMuVXRpbHMucGFyc2VUYWdB bmRJRChiKTt2YXIgYT1kWzBdLGU9ZFsxXTtpZighU2VsZWN0b3JzLkZpbHRlcnMu YnlJRCh0aGlzLGUpfHwhU2VsZWN0b3JzLkZpbHRlcnMuYnlUYWcodGhpcyxhKSl7 cmV0dXJuIGZhbHNlfXZhciBjPVNlbGVjdG9ycy5VdGlscy5wYXJzZVNlbGVjdG9y KGIpO3JldHVybihjKT9TZWxlY3RvcnMuVXRpbHMuZmlsdGVyKHRoaXMsYyx7fSk6 dHJ1ZX19KTt2YXIgU2VsZWN0b3JzPXtDYWNoZTp7bnRoOnt9LHBhcnNlZDp7fX19 O1NlbGVjdG9ycy5SZWdFeHBzPXtpZDooLyMoW1x3LV0rKS8pLHRhZzooL14oXHcr fFwqKS8pLHF1aWNrOigvXihcdyt8XCopJC8pLHNwbGl0dGVyOigvXHMqKFsrPn5c c10pXHMqKFthLXpBLVojLio6XFtdKS9nKSxjb21iaW5lZDooL1wuKFtcdy1dKyl8 XFsoXHcrKSg/OihbISpeJH58XT89KShbIiddPykoW15cNF0qPylcNCk/XF18Oihb XHctXSspKD86XChbIiddPyguKj8pP1siJ10/XCl8JCkvZyl9O1NlbGVjdG9ycy5V dGlscz17Y2hrOmZ1bmN0aW9uKGIsYyl7aWYoIWMpe3JldHVybiB0cnVlfXZhciBh PSR1aWQoYik7aWYoIWNbYV0pe3JldHVybiBjW2FdPXRydWV9cmV0dXJuIGZhbHNl fSxwYXJzZU50aEFyZ3VtZW50OmZ1bmN0aW9uKGgpe2lmKFNlbGVjdG9ycy5DYWNo ZS5udGhbaF0pe3JldHVybiBTZWxlY3RvcnMuQ2FjaGUubnRoW2hdfXZhciBlPWgu bWF0Y2goL14oWystXT9cZCopPyhbYS16XSspPyhbKy1dP1xkKik/JC8pO2lmKCFl KXtyZXR1cm4gZmFsc2V9dmFyIGc9cGFyc2VJbnQoZVsxXSwxMCk7dmFyIGQ9KGd8 fGc9PT0wKT9nOjE7dmFyIGY9ZVsyXXx8ZmFsc2U7dmFyIGM9cGFyc2VJbnQoZVsz XSwxMCl8fDA7aWYoZCE9MCl7Yy0tO3doaWxlKGM8MSl7Yys9ZH13aGlsZShjPj1k KXtjLT1kfX1lbHNle2Q9YztmPSJpbmRleCJ9c3dpdGNoKGYpe2Nhc2UibiI6ZT17 YTpkLGI6YyxzcGVjaWFsOiJuIn07YnJlYWs7Y2FzZSJvZGQiOmU9e2E6MixiOjAs c3BlY2lhbDoibiJ9O2JyZWFrO2Nhc2UiZXZlbiI6ZT17YToyLGI6MSxzcGVjaWFs OiJuIn07YnJlYWs7Y2FzZSJmaXJzdCI6ZT17YTowLHNwZWNpYWw6ImluZGV4In07 YnJlYWs7Y2FzZSJsYXN0IjplPXtzcGVjaWFsOiJsYXN0LWNoaWxkIn07YnJlYWs7 Y2FzZSJvbmx5IjplPXtzcGVjaWFsOiJvbmx5LWNoaWxkIn07YnJlYWs7ZGVmYXVs dDplPXthOihkLTEpLHNwZWNpYWw6ImluZGV4In19cmV0dXJuIFNlbGVjdG9ycy5D YWNoZS5udGhbaF09ZX0scGFyc2VTZWxlY3RvcjpmdW5jdGlvbihlKXtpZihTZWxl Y3RvcnMuQ2FjaGUucGFyc2VkW2VdKXtyZXR1cm4gU2VsZWN0b3JzLkNhY2hlLnBh cnNlZFtlXX12YXIgZCxoPXtjbGFzc2VzOltdLHBzZXVkb3M6W10sYXR0cmlidXRl czpbXX07d2hpbGUoKGQ9U2VsZWN0b3JzLlJlZ0V4cHMuY29tYmluZWQuZXhlYyhl KSkpe3ZhciBpPWRbMV0sZz1kWzJdLGY9ZFszXSxiPWRbNV0sYz1kWzZdLGo9ZFs3 XTtpZihpKXtoLmNsYXNzZXMucHVzaChpKX1lbHNle2lmKGMpe3ZhciBhPVNlbGVj dG9ycy5Qc2V1ZG8uZ2V0KGMpO2lmKGEpe2gucHNldWRvcy5wdXNoKHtwYXJzZXI6 YSxhcmd1bWVudDpqfSl9ZWxzZXtoLmF0dHJpYnV0ZXMucHVzaCh7bmFtZTpjLG9w ZXJhdG9yOiI9Iix2YWx1ZTpqfSl9fWVsc2V7aWYoZyl7aC5hdHRyaWJ1dGVzLnB1 c2goe25hbWU6ZyxvcGVyYXRvcjpmLHZhbHVlOmJ9KX19fX1pZighaC5jbGFzc2Vz Lmxlbmd0aCl7ZGVsZXRlIGguY2xhc3Nlc31pZighaC5hdHRyaWJ1dGVzLmxlbmd0 aCl7ZGVsZXRlIGguYXR0cmlidXRlc31pZighaC5wc2V1ZG9zLmxlbmd0aCl7ZGVs ZXRlIGgucHNldWRvc31pZighaC5jbGFzc2VzJiYhaC5hdHRyaWJ1dGVzJiYhaC5w c2V1ZG9zKXtoPW51bGx9cmV0dXJuIFNlbGVjdG9ycy5DYWNoZS5wYXJzZWRbZV09 aH0scGFyc2VUYWdBbmRJRDpmdW5jdGlvbihiKXt2YXIgYT1iLm1hdGNoKFNlbGVj dG9ycy5SZWdFeHBzLnRhZyk7dmFyIGM9Yi5tYXRjaChTZWxlY3RvcnMuUmVnRXhw cy5pZCk7cmV0dXJuWyhhKT9hWzFdOiIqIiwoYyk/Y1sxXTpmYWxzZV19LGZpbHRl cjpmdW5jdGlvbihmLGMsZSl7dmFyIGQ7aWYoYy5jbGFzc2VzKXtmb3IoZD1jLmNs YXNzZXMubGVuZ3RoO2QtLTtkKXt2YXIgZz1jLmNsYXNzZXNbZF07aWYoIVNlbGVj dG9ycy5GaWx0ZXJzLmJ5Q2xhc3MoZixnKSl7cmV0dXJuIGZhbHNlfX19aWYoYy5h dHRyaWJ1dGVzKXtmb3IoZD1jLmF0dHJpYnV0ZXMubGVuZ3RoO2QtLTtkKXt2YXIg Yj1jLmF0dHJpYnV0ZXNbZF07aWYoIVNlbGVjdG9ycy5GaWx0ZXJzLmJ5QXR0cmli dXRlKGYsYi5uYW1lLGIub3BlcmF0b3IsYi52YWx1ZSkpe3JldHVybiBmYWxzZX19 fWlmKGMucHNldWRvcyl7Zm9yKGQ9Yy5wc2V1ZG9zLmxlbmd0aDtkLS07ZCl7dmFy IGE9Yy5wc2V1ZG9zW2RdO2lmKCFTZWxlY3RvcnMuRmlsdGVycy5ieVBzZXVkbyhm LGEucGFyc2VyLGEuYXJndW1lbnQsZSkpe3JldHVybiBmYWxzZX19fXJldHVybiB0 cnVlfSxnZXRCeVRhZ0FuZElEOmZ1bmN0aW9uKGIsYSxkKXtpZihkKXt2YXIgYz0o Yi5nZXRFbGVtZW50QnlJZCk/Yi5nZXRFbGVtZW50QnlJZChkLHRydWUpOkVsZW1l bnQuZ2V0RWxlbWVudEJ5SWQoYixkLHRydWUpO3JldHVybihjJiZTZWxlY3RvcnMu RmlsdGVycy5ieVRhZyhjLGEpKT9bY106W119ZWxzZXtyZXR1cm4gYi5nZXRFbGVt ZW50c0J5VGFnTmFtZShhKX19LHNlYXJjaDpmdW5jdGlvbihvLGgsdCl7dmFyIGI9 W107dmFyIGM9aC50cmltKCkucmVwbGFjZShTZWxlY3RvcnMuUmVnRXhwcy5zcGxp dHRlcixmdW5jdGlvbihrLGosaSl7Yi5wdXNoKGopO3JldHVybiI6KSIraX0pLnNw bGl0KCI6KSIpO3ZhciBwLGUsQTtmb3IodmFyIHo9MCx2PWMubGVuZ3RoO3o8djt6 Kyspe3ZhciB5PWNbel07aWYoej09MCYmU2VsZWN0b3JzLlJlZ0V4cHMucXVpY2su dGVzdCh5KSl7cD1vLmdldEVsZW1lbnRzQnlUYWdOYW1lKHkpO2NvbnRpbnVlfXZh ciBhPWJbei0xXTt2YXIgcT1TZWxlY3RvcnMuVXRpbHMucGFyc2VUYWdBbmRJRCh5 KTt2YXIgQj1xWzBdLHI9cVsxXTtpZih6PT0wKXtwPVNlbGVjdG9ycy5VdGlscy5n ZXRCeVRhZ0FuZElEKG8sQixyKX1lbHNle3ZhciBkPXt9LGc9W107Zm9yKHZhciB4 PTAsdz1wLmxlbmd0aDt4PHc7eCsrKXtnPVNlbGVjdG9ycy5HZXR0ZXJzW2FdKGcs cFt4XSxCLHIsZCl9cD1nfXZhciBmPVNlbGVjdG9ycy5VdGlscy5wYXJzZVNlbGVj dG9yKHkpO2lmKGYpe2U9W107Zm9yKHZhciB1PTAscz1wLmxlbmd0aDt1PHM7dSsr KXtBPXBbdV07aWYoU2VsZWN0b3JzLlV0aWxzLmZpbHRlcihBLGYsdCkpe2UucHVz aChBKX19cD1lfX1yZXR1cm4gcH19O1NlbGVjdG9ycy5HZXR0ZXJzPXsiICI6ZnVu Y3Rpb24oaCxnLGosYSxlKXt2YXIgZD1TZWxlY3RvcnMuVXRpbHMuZ2V0QnlUYWdB bmRJRChnLGosYSk7Zm9yKHZhciBjPTAsYj1kLmxlbmd0aDtjPGI7YysrKXt2YXIg Zj1kW2NdO2lmKFNlbGVjdG9ycy5VdGlscy5jaGsoZixlKSl7aC5wdXNoKGYpfX1y ZXR1cm4gaH0sIj4iOmZ1bmN0aW9uKGgsZyxqLGEsZil7dmFyIGM9U2VsZWN0b3Jz LlV0aWxzLmdldEJ5VGFnQW5kSUQoZyxqLGEpO2Zvcih2YXIgZT0wLGQ9Yy5sZW5n dGg7ZTxkO2UrKyl7dmFyIGI9Y1tlXTtpZihiLnBhcmVudE5vZGU9PWcmJlNlbGVj dG9ycy5VdGlscy5jaGsoYixmKSl7aC5wdXNoKGIpfX1yZXR1cm4gaH0sIisiOmZ1 bmN0aW9uKGMsYixhLGUsZCl7d2hpbGUoKGI9Yi5uZXh0U2libGluZykpe2lmKGIu bm9kZVR5cGU9PTEpe2lmKFNlbGVjdG9ycy5VdGlscy5jaGsoYixkKSYmU2VsZWN0 b3JzLkZpbHRlcnMuYnlUYWcoYixhKSYmU2VsZWN0b3JzLkZpbHRlcnMuYnlJRChi LGUpKXtjLnB1c2goYil9YnJlYWt9fXJldHVybiBjfSwifiI6ZnVuY3Rpb24oYyxi LGEsZSxkKXt3aGlsZSgoYj1iLm5leHRTaWJsaW5nKSl7aWYoYi5ub2RlVHlwZT09 MSl7aWYoIVNlbGVjdG9ycy5VdGlscy5jaGsoYixkKSl7YnJlYWt9aWYoU2VsZWN0 b3JzLkZpbHRlcnMuYnlUYWcoYixhKSYmU2VsZWN0b3JzLkZpbHRlcnMuYnlJRChi LGUpKXtjLnB1c2goYil9fX1yZXR1cm4gY319O1NlbGVjdG9ycy5GaWx0ZXJzPXti eVRhZzpmdW5jdGlvbihiLGEpe3JldHVybihhPT0iKiJ8fChiLnRhZ05hbWUmJmIu dGFnTmFtZS50b0xvd2VyQ2FzZSgpPT1hKSl9LGJ5SUQ6ZnVuY3Rpb24oYSxiKXty ZXR1cm4oIWJ8fChhLmlkJiZhLmlkPT1iKSl9LGJ5Q2xhc3M6ZnVuY3Rpb24oYixh KXtyZXR1cm4oYi5jbGFzc05hbWUmJmIuY2xhc3NOYW1lLmNvbnRhaW5zJiZiLmNs YXNzTmFtZS5jb250YWlucyhhLCIgIikpfSxieVBzZXVkbzpmdW5jdGlvbihhLGQs YyxiKXtyZXR1cm4gZC5jYWxsKGEsYyxiKX0sYnlBdHRyaWJ1dGU6ZnVuY3Rpb24o YyxkLGIsZSl7dmFyIGE9RWxlbWVudC5wcm90b3R5cGUuZ2V0UHJvcGVydHkuY2Fs bChjLGQpO2lmKCFhKXtyZXR1cm4oYj09IiE9Iil9aWYoIWJ8fGU9PXVuZGVmaW5l ZCl7cmV0dXJuIHRydWV9c3dpdGNoKGIpe2Nhc2UiPSI6cmV0dXJuKGE9PWUpO2Nh c2UiKj0iOnJldHVybihhLmNvbnRhaW5zKGUpKTtjYXNlIl49IjpyZXR1cm4oYS5z dWJzdHIoMCxlLmxlbmd0aCk9PWUpO2Nhc2UiJD0iOnJldHVybihhLnN1YnN0cihh Lmxlbmd0aC1lLmxlbmd0aCk9PWUpO2Nhc2UiIT0iOnJldHVybihhIT1lKTtjYXNl In49IjpyZXR1cm4gYS5jb250YWlucyhlLCIgIik7Y2FzZSJ8PSI6cmV0dXJuIGEu Y29udGFpbnMoZSwiLSIpfXJldHVybiBmYWxzZX19O1NlbGVjdG9ycy5Qc2V1ZG89 bmV3IEhhc2goe2NoZWNrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGVja2Vk fSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiAhKHRoaXMuaW5uZXJUZXh0fHx0aGlz LnRleHRDb250ZW50fHwiIikubGVuZ3RofSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJu ICFFbGVtZW50Lm1hdGNoKHRoaXMsYSl9LGNvbnRhaW5zOmZ1bmN0aW9uKGEpe3Jl dHVybih0aGlzLmlubmVyVGV4dHx8dGhpcy50ZXh0Q29udGVudHx8IiIpLmNvbnRh aW5zKGEpfSwiZmlyc3QtY2hpbGQiOmZ1bmN0aW9uKCl7cmV0dXJuIFNlbGVjdG9y cy5Qc2V1ZG8uaW5kZXguY2FsbCh0aGlzLDApfSwibGFzdC1jaGlsZCI6ZnVuY3Rp b24oKXt2YXIgYT10aGlzO3doaWxlKChhPWEubmV4dFNpYmxpbmcpKXtpZihhLm5v ZGVUeXBlPT0xKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfSwib25seS1jaGls ZCI6ZnVuY3Rpb24oKXt2YXIgYj10aGlzO3doaWxlKChiPWIucHJldmlvdXNTaWJs aW5nKSl7aWYoYi5ub2RlVHlwZT09MSl7cmV0dXJuIGZhbHNlfX12YXIgYT10aGlz O3doaWxlKChhPWEubmV4dFNpYmxpbmcpKXtpZihhLm5vZGVUeXBlPT0xKXtyZXR1 cm4gZmFsc2V9fXJldHVybiB0cnVlfSwibnRoLWNoaWxkIjpmdW5jdGlvbihnLGUp e2c9KGc9PXVuZGVmaW5lZCk/Im4iOmc7dmFyIGM9U2VsZWN0b3JzLlV0aWxzLnBh cnNlTnRoQXJndW1lbnQoZyk7aWYoYy5zcGVjaWFsIT0ibiIpe3JldHVybiBTZWxl Y3RvcnMuUHNldWRvW2Muc3BlY2lhbF0uY2FsbCh0aGlzLGMuYSxlKX12YXIgZj0w O2UucG9zaXRpb25zPWUucG9zaXRpb25zfHx7fTt2YXIgZD0kdWlkKHRoaXMpO2lm KCFlLnBvc2l0aW9uc1tkXSl7dmFyIGI9dGhpczt3aGlsZSgoYj1iLnByZXZpb3Vz U2libGluZykpe2lmKGIubm9kZVR5cGUhPTEpe2NvbnRpbnVlfWYrKzt2YXIgYT1l LnBvc2l0aW9uc1skdWlkKGIpXTtpZihhIT11bmRlZmluZWQpe2Y9YStmO2JyZWFr fX1lLnBvc2l0aW9uc1tkXT1mfXJldHVybihlLnBvc2l0aW9uc1tkXSVjLmE9PWMu Yil9LGluZGV4OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz0wO3doaWxlKChiPWIu cHJldmlvdXNTaWJsaW5nKSl7aWYoYi5ub2RlVHlwZT09MSYmKytjPmEpe3JldHVy biBmYWxzZX19cmV0dXJuKGM9PWEpfSxldmVuOmZ1bmN0aW9uKGIsYSl7cmV0dXJu IFNlbGVjdG9ycy5Qc2V1ZG9bIm50aC1jaGlsZCJdLmNhbGwodGhpcywiMm4rMSIs YSl9LG9kZDpmdW5jdGlvbihiLGEpe3JldHVybiBTZWxlY3RvcnMuUHNldWRvWyJu dGgtY2hpbGQiXS5jYWxsKHRoaXMsIjJuIixhKX0sc2VsZWN0ZWQ6ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5zZWxlY3RlZH0sZW5hYmxlZDpmdW5jdGlvbigpe3JldHVy bih0aGlzLmRpc2FibGVkPT09ZmFsc2UpfX0pO0VsZW1lbnQuRXZlbnRzLmRvbXJl YWR5PXtvbkFkZDpmdW5jdGlvbihhKXtpZihCcm93c2VyLmxvYWRlZCl7YS5jYWxs KHRoaXMpfX19OyhmdW5jdGlvbigpe3ZhciBiPWZ1bmN0aW9uKCl7aWYoQnJvd3Nl ci5sb2FkZWQpe3JldHVybn1Ccm93c2VyLmxvYWRlZD10cnVlO3dpbmRvdy5maXJl RXZlbnQoImRvbXJlYWR5Iik7ZG9jdW1lbnQuZmlyZUV2ZW50KCJkb21yZWFkeSIp fTt3aW5kb3cuYWRkRXZlbnQoImxvYWQiLGIpO2lmKEJyb3dzZXIuRW5naW5lLnRy aWRlbnQpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOyhmdW5j dGlvbigpeygkdHJ5KGZ1bmN0aW9uKCl7YS5kb1Njcm9sbCgpO3JldHVybiBkb2N1 bWVudC5pZChhKS5pbmplY3QoZG9jdW1lbnQuYm9keSkuc2V0KCJodG1sIiwidGVt cCIpLmRpc3Bvc2UoKX0pKT9iKCk6YXJndW1lbnRzLmNhbGxlZS5kZWxheSg1MCl9 KSgpfWVsc2V7aWYoQnJvd3Nlci5FbmdpbmUud2Via2l0JiZCcm93c2VyLkVuZ2lu ZS52ZXJzaW9uPDUyNSl7KGZ1bmN0aW9uKCl7KFsibG9hZGVkIiwiY29tcGxldGUi XS5jb250YWlucyhkb2N1bWVudC5yZWFkeVN0YXRlKSk/YigpOmFyZ3VtZW50cy5j YWxsZWUuZGVsYXkoNTApfSkoKX1lbHNle2RvY3VtZW50LmFkZEV2ZW50KCJET01D b250ZW50TG9hZGVkIixiKX19fSkoKTt2YXIgSlNPTj1uZXcgSGFzaCh0aGlzLkpT T04mJntzdHJpbmdpZnk6SlNPTi5zdHJpbmdpZnkscGFyc2U6SlNPTi5wYXJzZX0p LmV4dGVuZCh7JHNwZWNpYWxDaGFyczp7IlxiIjoiXFxiIiwiXHQiOiJcXHQiLCJc biI6IlxcbiIsIlxmIjoiXFxmIiwiXHIiOiJcXHIiLCciJzonXFwiJywiXFwiOiJc XFxcIn0sJHJlcGxhY2VDaGFyczpmdW5jdGlvbihhKXtyZXR1cm4gSlNPTi4kc3Bl Y2lhbENoYXJzW2FdfHwiXFx1MDAiK01hdGguZmxvb3IoYS5jaGFyQ29kZUF0KCkv MTYpLnRvU3RyaW5nKDE2KSsoYS5jaGFyQ29kZUF0KCklMTYpLnRvU3RyaW5nKDE2 KX0sZW5jb2RlOmZ1bmN0aW9uKGIpe3N3aXRjaCgkdHlwZShiKSl7Y2FzZSJzdHJp bmciOnJldHVybiciJytiLnJlcGxhY2UoL1tceDAwLVx4MWZcXCJdL2csSlNPTi4k cmVwbGFjZUNoYXJzKSsnIic7Y2FzZSJhcnJheSI6cmV0dXJuIlsiK1N0cmluZyhi Lm1hcChKU09OLmVuY29kZSkuY2xlYW4oKSkrIl0iO2Nhc2Uib2JqZWN0IjpjYXNl Imhhc2giOnZhciBhPVtdO0hhc2guZWFjaChiLGZ1bmN0aW9uKGUsZCl7dmFyIGM9 SlNPTi5lbmNvZGUoZSk7aWYoYyl7YS5wdXNoKEpTT04uZW5jb2RlKGQpKyI6Iitj KX19KTtyZXR1cm4ieyIrYSsifSI7Y2FzZSJudW1iZXIiOmNhc2UiYm9vbGVhbiI6 cmV0dXJuIFN0cmluZyhiKTtjYXNlIGZhbHNlOnJldHVybiJudWxsIn1yZXR1cm4g bnVsbH0sZGVjb2RlOmZ1bmN0aW9uKHN0cmluZyxzZWN1cmUpe2lmKCR0eXBlKHN0 cmluZykhPSJzdHJpbmcifHwhc3RyaW5nLmxlbmd0aCl7cmV0dXJuIG51bGx9aWYo c2VjdXJlJiYhKC9eWyw6e31cW1xdMC05LlwtK0VhZWZsbnItdSBcblxyXHRdKiQv KS50ZXN0KHN0cmluZy5yZXBsYWNlKC9cXC4vZywiQCIpLnJlcGxhY2UoLyJbXiJc XFxuXHJdKiIvZywiIikpKXtyZXR1cm4gbnVsbH1yZXR1cm4gZXZhbCgiKCIrc3Ry aW5nKyIpIil9fSk7TmF0aXZlLmltcGxlbWVudChbSGFzaCxBcnJheSxTdHJpbmcs TnVtYmVyXSx7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJuIEpTT04uZW5jb2RlKHRo aXMpfX0pO3ZhciBDb29raWU9bmV3IENsYXNzKHtJbXBsZW1lbnRzOk9wdGlvbnMs b3B0aW9uczp7cGF0aDpmYWxzZSxkb21haW46ZmFsc2UsZHVyYXRpb246ZmFsc2Us c2VjdXJlOmZhbHNlLGRvY3VtZW50OmRvY3VtZW50fSxpbml0aWFsaXplOmZ1bmN0 aW9uKGIsYSl7dGhpcy5rZXk9Yjt0aGlzLnNldE9wdGlvbnMoYSl9LHdyaXRlOmZ1 bmN0aW9uKGIpe2I9ZW5jb2RlVVJJQ29tcG9uZW50KGIpO2lmKHRoaXMub3B0aW9u cy5kb21haW4pe2IrPSI7IGRvbWFpbj0iK3RoaXMub3B0aW9ucy5kb21haW59aWYo dGhpcy5vcHRpb25zLnBhdGgpe2IrPSI7IHBhdGg9Iit0aGlzLm9wdGlvbnMucGF0 aH1pZih0aGlzLm9wdGlvbnMuZHVyYXRpb24pe3ZhciBhPW5ldyBEYXRlKCk7YS5z ZXRUaW1lKGEuZ2V0VGltZSgpK3RoaXMub3B0aW9ucy5kdXJhdGlvbioyNCo2MCo2 MCoxMDAwKTtiKz0iOyBleHBpcmVzPSIrYS50b0dNVFN0cmluZygpfWlmKHRoaXMu b3B0aW9ucy5zZWN1cmUpe2IrPSI7IHNlY3VyZSJ9dGhpcy5vcHRpb25zLmRvY3Vt ZW50LmNvb2tpZT10aGlzLmtleSsiPSIrYjtyZXR1cm4gdGhpc30scmVhZDpmdW5j dGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5kb2N1bWVudC5jb29raWUubWF0Y2go Iig/Ol58OylcXHMqIit0aGlzLmtleS5lc2NhcGVSZWdFeHAoKSsiPShbXjtdKiki KTtyZXR1cm4oYSk/ZGVjb2RlVVJJQ29tcG9uZW50KGFbMV0pOm51bGx9LGRpc3Bv c2U6ZnVuY3Rpb24oKXtuZXcgQ29va2llKHRoaXMua2V5LCRtZXJnZSh0aGlzLm9w dGlvbnMse2R1cmF0aW9uOi0xfSkpLndyaXRlKCIiKTtyZXR1cm4gdGhpc319KTtD b29raWUud3JpdGU9ZnVuY3Rpb24oYixjLGEpe3JldHVybiBuZXcgQ29va2llKGIs YSkud3JpdGUoYyl9O0Nvb2tpZS5yZWFkPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcg Q29va2llKGEpLnJlYWQoKX07Q29va2llLmRpc3Bvc2U9ZnVuY3Rpb24oYixhKXty ZXR1cm4gbmV3IENvb2tpZShiLGEpLmRpc3Bvc2UoKX07dmFyIFN3aWZmPW5ldyBD bGFzcyh7SW1wbGVtZW50czpbT3B0aW9uc10sb3B0aW9uczp7aWQ6bnVsbCxoZWln aHQ6MSx3aWR0aDoxLGNvbnRhaW5lcjpudWxsLHByb3BlcnRpZXM6e30scGFyYW1z OntxdWFsaXR5OiJoaWdoIixhbGxvd1NjcmlwdEFjY2VzczoiYWx3YXlzIix3TW9k ZToidHJhbnNwYXJlbnQiLHN3TGl2ZUNvbm5lY3Q6dHJ1ZX0sY2FsbEJhY2tzOnt9 LHZhcnM6e319LHRvRWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9iamVj dH0saW5pdGlhbGl6ZTpmdW5jdGlvbihsLG0pe3RoaXMuaW5zdGFuY2U9IlN3aWZm XyIrJHRpbWUoKTt0aGlzLnNldE9wdGlvbnMobSk7bT10aGlzLm9wdGlvbnM7dmFy IGI9dGhpcy5pZD1tLmlkfHx0aGlzLmluc3RhbmNlO3ZhciBhPWRvY3VtZW50Lmlk KG0uY29udGFpbmVyKTtTd2lmZi5DYWxsQmFja3NbdGhpcy5pbnN0YW5jZV09e307 dmFyIGU9bS5wYXJhbXMsZz1tLnZhcnMsZj1tLmNhbGxCYWNrczt2YXIgaD0kZXh0 ZW5kKHtoZWlnaHQ6bS5oZWlnaHQsd2lkdGg6bS53aWR0aH0sbS5wcm9wZXJ0aWVz KTt2YXIgaz10aGlzO2Zvcih2YXIgZCBpbiBmKXtTd2lmZi5DYWxsQmFja3NbdGhp cy5pbnN0YW5jZV1bZF09KGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3Jl dHVybiBuLmFwcGx5KGsub2JqZWN0LGFyZ3VtZW50cyl9fSkoZltkXSk7Z1tkXT0i U3dpZmYuQ2FsbEJhY2tzLiIrdGhpcy5pbnN0YW5jZSsiLiIrZH1lLmZsYXNoVmFy cz1IYXNoLnRvUXVlcnlTdHJpbmcoZyk7aWYoQnJvd3Nlci5FbmdpbmUudHJpZGVu dCl7aC5jbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1 NTM1NDAwMDAiO2UubW92aWU9bH1lbHNle2gudHlwZT0iYXBwbGljYXRpb24veC1z aG9ja3dhdmUtZmxhc2giO2guZGF0YT1sfXZhciBqPSc8b2JqZWN0IGlkPSInK2Ir JyInO2Zvcih2YXIgaSBpbiBoKXtqKz0iICIraSsnPSInK2hbaV0rJyInfWorPSI+ Ijtmb3IodmFyIGMgaW4gZSl7aWYoZVtjXSl7ais9JzxwYXJhbSBuYW1lPSInK2Mr JyIgdmFsdWU9IicrZVtjXSsnIiAvPid9fWorPSI8L29iamVjdD4iO3RoaXMub2Jq ZWN0PSgoYSk/YS5lbXB0eSgpOm5ldyBFbGVtZW50KCJkaXYiKSkuc2V0KCJodG1s IixqKS5maXJzdENoaWxkfSxyZXBsYWNlczpmdW5jdGlvbihhKXthPWRvY3VtZW50 LmlkKGEsdHJ1ZSk7YS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0aGlzLnRvRWxl bWVudCgpLGEpO3JldHVybiB0aGlzfSxpbmplY3Q6ZnVuY3Rpb24oYSl7ZG9jdW1l bnQuaWQoYSx0cnVlKS5hcHBlbmRDaGlsZCh0aGlzLnRvRWxlbWVudCgpKTtyZXR1 cm4gdGhpc30scmVtb3RlOmZ1bmN0aW9uKCl7cmV0dXJuIFN3aWZmLnJlbW90ZS5h cHBseShTd2lmZixbdGhpcy50b0VsZW1lbnQoKV0uZXh0ZW5kKGFyZ3VtZW50cykp fX0pO1N3aWZmLkNhbGxCYWNrcz17fTtTd2lmZi5yZW1vdGU9ZnVuY3Rpb24ob2Jq LGZuKXt2YXIgcnM9b2JqLkNhbGxGdW5jdGlvbignPGludm9rZSBuYW1lPSInK2Zu KyciIHJldHVybnR5cGU9ImphdmFzY3JpcHQiPicrX19mbGFzaF9fYXJndW1lbnRz VG9YTUwoYXJndW1lbnRzLDIpKyI8L2ludm9rZT4iKTtyZXR1cm4gZXZhbChycyl9 O3ZhciBGeD1uZXcgQ2xhc3Moe0ltcGxlbWVudHM6W0NoYWluLEV2ZW50cyxPcHRp b25zXSxvcHRpb25zOntmcHM6NTAsdW5pdDpmYWxzZSxkdXJhdGlvbjo1MDAsbGlu azoiaWdub3JlIn0saW5pdGlhbGl6ZTpmdW5jdGlvbihhKXt0aGlzLnN1YmplY3Q9 dGhpcy5zdWJqZWN0fHx0aGlzO3RoaXMuc2V0T3B0aW9ucyhhKTt0aGlzLm9wdGlv bnMuZHVyYXRpb249RnguRHVyYXRpb25zW3RoaXMub3B0aW9ucy5kdXJhdGlvbl18 fHRoaXMub3B0aW9ucy5kdXJhdGlvbi50b0ludCgpO3ZhciBiPXRoaXMub3B0aW9u cy53YWl0O2lmKGI9PT1mYWxzZSl7dGhpcy5vcHRpb25zLmxpbms9ImNhbmNlbCJ9 fSxnZXRUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEpe3Jl dHVybiAtKE1hdGguY29zKE1hdGguUEkqYSktMSkvMn19LHN0ZXA6ZnVuY3Rpb24o KXt2YXIgYT0kdGltZSgpO2lmKGE8dGhpcy50aW1lK3RoaXMub3B0aW9ucy5kdXJh dGlvbil7dmFyIGI9dGhpcy50cmFuc2l0aW9uKChhLXRoaXMudGltZSkvdGhpcy5v cHRpb25zLmR1cmF0aW9uKTt0aGlzLnNldCh0aGlzLmNvbXB1dGUodGhpcy5mcm9t LHRoaXMudG8sYikpfWVsc2V7dGhpcy5zZXQodGhpcy5jb21wdXRlKHRoaXMuZnJv bSx0aGlzLnRvLDEpKTt0aGlzLmNvbXBsZXRlKCl9fSxzZXQ6ZnVuY3Rpb24oYSl7 cmV0dXJuIGF9LGNvbXB1dGU6ZnVuY3Rpb24oYyxiLGEpe3JldHVybiBGeC5jb21w dXRlKGMsYixhKX0sY2hlY2s6ZnVuY3Rpb24oKXtpZighdGhpcy50aW1lcil7cmV0 dXJuIHRydWV9c3dpdGNoKHRoaXMub3B0aW9ucy5saW5rKXtjYXNlImNhbmNlbCI6 dGhpcy5jYW5jZWwoKTtyZXR1cm4gdHJ1ZTtjYXNlImNoYWluIjp0aGlzLmNoYWlu KHRoaXMuY2FsbGVyLmJpbmQodGhpcyxhcmd1bWVudHMpKTtyZXR1cm4gZmFsc2V9 cmV0dXJuIGZhbHNlfSxzdGFydDpmdW5jdGlvbihiLGEpe2lmKCF0aGlzLmNoZWNr KGIsYSkpe3JldHVybiB0aGlzfXRoaXMuZnJvbT1iO3RoaXMudG89YTt0aGlzLnRp bWU9MDt0aGlzLnRyYW5zaXRpb249dGhpcy5nZXRUcmFuc2l0aW9uKCk7dGhpcy5z dGFydFRpbWVyKCk7dGhpcy5vblN0YXJ0KCk7cmV0dXJuIHRoaXN9LGNvbXBsZXRl OmZ1bmN0aW9uKCl7aWYodGhpcy5zdG9wVGltZXIoKSl7dGhpcy5vbkNvbXBsZXRl KCl9cmV0dXJuIHRoaXN9LGNhbmNlbDpmdW5jdGlvbigpe2lmKHRoaXMuc3RvcFRp bWVyKCkpe3RoaXMub25DYW5jZWwoKX1yZXR1cm4gdGhpc30sb25TdGFydDpmdW5j dGlvbigpe3RoaXMuZmlyZUV2ZW50KCJzdGFydCIsdGhpcy5zdWJqZWN0KX0sb25D b21wbGV0ZTpmdW5jdGlvbigpe3RoaXMuZmlyZUV2ZW50KCJjb21wbGV0ZSIsdGhp cy5zdWJqZWN0KTtpZighdGhpcy5jYWxsQ2hhaW4oKSl7dGhpcy5maXJlRXZlbnQo ImNoYWluQ29tcGxldGUiLHRoaXMuc3ViamVjdCl9fSxvbkNhbmNlbDpmdW5jdGlv bigpe3RoaXMuZmlyZUV2ZW50KCJjYW5jZWwiLHRoaXMuc3ViamVjdCkuY2xlYXJD aGFpbigpfSxwYXVzZTpmdW5jdGlvbigpe3RoaXMuc3RvcFRpbWVyKCk7cmV0dXJu IHRoaXN9LHJlc3VtZTpmdW5jdGlvbigpe3RoaXMuc3RhcnRUaW1lcigpO3JldHVy biB0aGlzfSxzdG9wVGltZXI6ZnVuY3Rpb24oKXtpZighdGhpcy50aW1lcil7cmV0 dXJuIGZhbHNlfXRoaXMudGltZT0kdGltZSgpLXRoaXMudGltZTt0aGlzLnRpbWVy PSRjbGVhcih0aGlzLnRpbWVyKTtyZXR1cm4gdHJ1ZX0sc3RhcnRUaW1lcjpmdW5j dGlvbigpe2lmKHRoaXMudGltZXIpe3JldHVybiBmYWxzZX10aGlzLnRpbWU9JHRp bWUoKS10aGlzLnRpbWU7dGhpcy50aW1lcj10aGlzLnN0ZXAucGVyaW9kaWNhbChN YXRoLnJvdW5kKDEwMDAvdGhpcy5vcHRpb25zLmZwcyksdGhpcyk7cmV0dXJuIHRy dWV9fSk7RnguY29tcHV0ZT1mdW5jdGlvbihjLGIsYSl7cmV0dXJuKGItYykqYStj fTtGeC5EdXJhdGlvbnM9eyJzaG9ydCI6MjUwLG5vcm1hbDo1MDAsImxvbmciOjEw MDB9O0Z4LkNTUz1uZXcgQ2xhc3Moe0V4dGVuZHM6RngscHJlcGFyZTpmdW5jdGlv bihkLGUsYil7Yj0kc3BsYXQoYik7dmFyIGM9YlsxXTtpZighJGNoayhjKSl7Ylsx XT1iWzBdO2JbMF09ZC5nZXRTdHlsZShlKX12YXIgYT1iLm1hcCh0aGlzLnBhcnNl KTtyZXR1cm57ZnJvbTphWzBdLHRvOmFbMV19fSxwYXJzZTpmdW5jdGlvbihhKXth PSRsYW1iZGEoYSkoKTthPSh0eXBlb2YgYT09InN0cmluZyIpP2Euc3BsaXQoIiAi KTokc3BsYXQoYSk7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKGMpe2M9U3RyaW5nKGMp O3ZhciBiPWZhbHNlO0Z4LkNTUy5QYXJzZXJzLmVhY2goZnVuY3Rpb24oZixlKXtp ZihiKXtyZXR1cm59dmFyIGQ9Zi5wYXJzZShjKTtpZigkY2hrKGQpKXtiPXt2YWx1 ZTpkLHBhcnNlcjpmfX19KTtiPWJ8fHt2YWx1ZTpjLHBhcnNlcjpGeC5DU1MuUGFy c2Vycy5TdHJpbmd9O3JldHVybiBifSl9LGNvbXB1dGU6ZnVuY3Rpb24oZCxjLGIp e3ZhciBhPVtdOyhNYXRoLm1pbihkLmxlbmd0aCxjLmxlbmd0aCkpLnRpbWVzKGZ1 bmN0aW9uKGUpe2EucHVzaCh7dmFsdWU6ZFtlXS5wYXJzZXIuY29tcHV0ZShkW2Vd LnZhbHVlLGNbZV0udmFsdWUsYikscGFyc2VyOmRbZV0ucGFyc2VyfSl9KTthLiRm YW1pbHk9e25hbWU6ImZ4OmNzczp2YWx1ZSJ9O3JldHVybiBhfSxzZXJ2ZTpmdW5j dGlvbihjLGIpe2lmKCR0eXBlKGMpIT0iZng6Y3NzOnZhbHVlIil7Yz10aGlzLnBh cnNlKGMpfXZhciBhPVtdO2MuZWFjaChmdW5jdGlvbihkKXthPWEuY29uY2F0KGQu cGFyc2VyLnNlcnZlKGQudmFsdWUsYikpfSk7cmV0dXJuIGF9LHJlbmRlcjpmdW5j dGlvbihhLGQsYyxiKXthLnNldFN0eWxlKGQsdGhpcy5zZXJ2ZShjLGIpKX0sc2Vh cmNoOmZ1bmN0aW9uKGEpe2lmKEZ4LkNTUy5DYWNoZVthXSl7cmV0dXJuIEZ4LkNT Uy5DYWNoZVthXX12YXIgYj17fTtBcnJheS5lYWNoKGRvY3VtZW50LnN0eWxlU2hl ZXRzLGZ1bmN0aW9uKGUsZCl7dmFyIGM9ZS5ocmVmO2lmKGMmJmMuY29udGFpbnMo IjovLyIpJiYhYy5jb250YWlucyhkb2N1bWVudC5kb21haW4pKXtyZXR1cm59dmFy IGY9ZS5ydWxlc3x8ZS5jc3NSdWxlcztBcnJheS5lYWNoKGYsZnVuY3Rpb24oaixn KXtpZighai5zdHlsZSl7cmV0dXJufXZhciBoPShqLnNlbGVjdG9yVGV4dCk/ai5z ZWxlY3RvclRleHQucmVwbGFjZSgvXlx3Ky8sZnVuY3Rpb24oaSl7cmV0dXJuIGku dG9Mb3dlckNhc2UoKX0pOm51bGw7aWYoIWh8fCFoLnRlc3QoIl4iK2ErIiQiKSl7 cmV0dXJufUVsZW1lbnQuU3R5bGVzLmVhY2goZnVuY3Rpb24oayxpKXtpZighai5z dHlsZVtpXXx8RWxlbWVudC5TaG9ydFN0eWxlc1tpXSl7cmV0dXJufWs9U3RyaW5n KGouc3R5bGVbaV0pO2JbaV09KGsudGVzdCgvXnJnYi8pKT9rLnJnYlRvSGV4KCk6 a30pfSl9KTtyZXR1cm4gRnguQ1NTLkNhY2hlW2FdPWJ9fSk7RnguQ1NTLkNhY2hl PXt9O0Z4LkNTUy5QYXJzZXJzPW5ldyBIYXNoKHtDb2xvcjp7cGFyc2U6ZnVuY3Rp b24oYSl7aWYoYS5tYXRjaCgvXiNbMC05YS1mXXszLDZ9JC9pKSl7cmV0dXJuIGEu aGV4VG9SZ2IodHJ1ZSl9cmV0dXJuKChhPWEubWF0Y2goLyhcZCspLFxzKihcZCsp LFxzKihcZCspLykpKT9bYVsxXSxhWzJdLGFbM11dOmZhbHNlfSxjb21wdXRlOmZ1 bmN0aW9uKGMsYixhKXtyZXR1cm4gYy5tYXAoZnVuY3Rpb24oZSxkKXtyZXR1cm4g TWF0aC5yb3VuZChGeC5jb21wdXRlKGNbZF0sYltkXSxhKSl9KX0sc2VydmU6ZnVu Y3Rpb24oYSl7cmV0dXJuIGEubWFwKE51bWJlcil9fSxOdW1iZXI6e3BhcnNlOnBh cnNlRmxvYXQsY29tcHV0ZTpGeC5jb21wdXRlLHNlcnZlOmZ1bmN0aW9uKGIsYSl7 cmV0dXJuKGEpP2IrYTpifX0sU3RyaW5nOntwYXJzZTokbGFtYmRhKGZhbHNlKSxj b21wdXRlOiRhcmd1bWVudHMoMSksc2VydmU6JGFyZ3VtZW50cygwKX19KTtGeC5U d2Vlbj1uZXcgQ2xhc3Moe0V4dGVuZHM6RnguQ1NTLGluaXRpYWxpemU6ZnVuY3Rp b24oYixhKXt0aGlzLmVsZW1lbnQ9dGhpcy5zdWJqZWN0PWRvY3VtZW50LmlkKGIp O3RoaXMucGFyZW50KGEpfSxzZXQ6ZnVuY3Rpb24oYixhKXtpZihhcmd1bWVudHMu bGVuZ3RoPT0xKXthPWI7Yj10aGlzLnByb3BlcnR5fHx0aGlzLm9wdGlvbnMucHJv cGVydHl9dGhpcy5yZW5kZXIodGhpcy5lbGVtZW50LGIsYSx0aGlzLm9wdGlvbnMu dW5pdCk7cmV0dXJuIHRoaXN9LHN0YXJ0OmZ1bmN0aW9uKGMsZSxkKXtpZighdGhp cy5jaGVjayhjLGUsZCkpe3JldHVybiB0aGlzfXZhciBiPUFycmF5LmZsYXR0ZW4o YXJndW1lbnRzKTt0aGlzLnByb3BlcnR5PXRoaXMub3B0aW9ucy5wcm9wZXJ0eXx8 Yi5zaGlmdCgpO3ZhciBhPXRoaXMucHJlcGFyZSh0aGlzLmVsZW1lbnQsdGhpcy5w cm9wZXJ0eSxiKTtyZXR1cm4gdGhpcy5wYXJlbnQoYS5mcm9tLGEudG8pfX0pO0Vs ZW1lbnQuUHJvcGVydGllcy50d2Vlbj17c2V0OmZ1bmN0aW9uKGEpe3ZhciBiPXRo aXMucmV0cmlldmUoInR3ZWVuIik7aWYoYil7Yi5jYW5jZWwoKX1yZXR1cm4gdGhp cy5lbGltaW5hdGUoInR3ZWVuIikuc3RvcmUoInR3ZWVuOm9wdGlvbnMiLCRleHRl bmQoe2xpbms6ImNhbmNlbCJ9LGEpKX0sZ2V0OmZ1bmN0aW9uKGEpe2lmKGF8fCF0 aGlzLnJldHJpZXZlKCJ0d2VlbiIpKXtpZihhfHwhdGhpcy5yZXRyaWV2ZSgidHdl ZW46b3B0aW9ucyIpKXt0aGlzLnNldCgidHdlZW4iLGEpfXRoaXMuc3RvcmUoInR3 ZWVuIixuZXcgRnguVHdlZW4odGhpcyx0aGlzLnJldHJpZXZlKCJ0d2VlbjpvcHRp b25zIikpKX1yZXR1cm4gdGhpcy5yZXRyaWV2ZSgidHdlZW4iKX19O0VsZW1lbnQu aW1wbGVtZW50KHt0d2VlbjpmdW5jdGlvbihhLGMsYil7dGhpcy5nZXQoInR3ZWVu Iikuc3RhcnQoYXJndW1lbnRzKTtyZXR1cm4gdGhpc30sZmFkZTpmdW5jdGlvbihj KXt2YXIgZT10aGlzLmdldCgidHdlZW4iKSxkPSJvcGFjaXR5IixhO2M9JHBpY2so YywidG9nZ2xlIik7c3dpdGNoKGMpe2Nhc2UiaW4iOmUuc3RhcnQoZCwxKTticmVh aztjYXNlIm91dCI6ZS5zdGFydChkLDApO2JyZWFrO2Nhc2Uic2hvdyI6ZS5zZXQo ZCwxKTticmVhaztjYXNlImhpZGUiOmUuc2V0KGQsMCk7YnJlYWs7Y2FzZSJ0b2dn bGUiOnZhciBiPXRoaXMucmV0cmlldmUoImZhZGU6ZmxhZyIsdGhpcy5nZXQoIm9w YWNpdHkiKT09MSk7ZS5zdGFydChkLChiKT8wOjEpO3RoaXMuc3RvcmUoImZhZGU6 ZmxhZyIsIWIpO2E9dHJ1ZTticmVhaztkZWZhdWx0OmUuc3RhcnQoZCxhcmd1bWVu dHMpfWlmKCFhKXt0aGlzLmVsaW1pbmF0ZSgiZmFkZTpmbGFnIil9cmV0dXJuIHRo aXN9LGhpZ2hsaWdodDpmdW5jdGlvbihjLGEpe2lmKCFhKXthPXRoaXMucmV0cmll dmUoImhpZ2hsaWdodDpvcmlnaW5hbCIsdGhpcy5nZXRTdHlsZSgiYmFja2dyb3Vu ZC1jb2xvciIpKTthPShhPT0idHJhbnNwYXJlbnQiKT8iI2ZmZiI6YX12YXIgYj10 aGlzLmdldCgidHdlZW4iKTtiLnN0YXJ0KCJiYWNrZ3JvdW5kLWNvbG9yIixjfHwi I2ZmZmY4OCIsYSkuY2hhaW4oZnVuY3Rpb24oKXt0aGlzLnNldFN0eWxlKCJiYWNr Z3JvdW5kLWNvbG9yIix0aGlzLnJldHJpZXZlKCJoaWdobGlnaHQ6b3JpZ2luYWwi KSk7Yi5jYWxsQ2hhaW4oKX0uYmluZCh0aGlzKSk7cmV0dXJuIHRoaXN9fSk7Rngu TW9ycGg9bmV3IENsYXNzKHtFeHRlbmRzOkZ4LkNTUyxpbml0aWFsaXplOmZ1bmN0 aW9uKGIsYSl7dGhpcy5lbGVtZW50PXRoaXMuc3ViamVjdD1kb2N1bWVudC5pZChi KTt0aGlzLnBhcmVudChhKX0sc2V0OmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0i c3RyaW5nIil7YT10aGlzLnNlYXJjaChhKX1mb3IodmFyIGIgaW4gYSl7dGhpcy5y ZW5kZXIodGhpcy5lbGVtZW50LGIsYVtiXSx0aGlzLm9wdGlvbnMudW5pdCl9cmV0 dXJuIHRoaXN9LGNvbXB1dGU6ZnVuY3Rpb24oZSxkLGMpe3ZhciBhPXt9O2Zvcih2 YXIgYiBpbiBlKXthW2JdPXRoaXMucGFyZW50KGVbYl0sZFtiXSxjKX1yZXR1cm4g YX0sc3RhcnQ6ZnVuY3Rpb24oYil7aWYoIXRoaXMuY2hlY2soYikpe3JldHVybiB0 aGlzfWlmKHR5cGVvZiBiPT0ic3RyaW5nIil7Yj10aGlzLnNlYXJjaChiKX12YXIg ZT17fSxkPXt9O2Zvcih2YXIgYyBpbiBiKXt2YXIgYT10aGlzLnByZXBhcmUodGhp cy5lbGVtZW50LGMsYltjXSk7ZVtjXT1hLmZyb207ZFtjXT1hLnRvfXJldHVybiB0 aGlzLnBhcmVudChlLGQpfX0pO0VsZW1lbnQuUHJvcGVydGllcy5tb3JwaD17c2V0 OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucmV0cmlldmUoIm1vcnBoIik7aWYoYil7 Yi5jYW5jZWwoKX1yZXR1cm4gdGhpcy5lbGltaW5hdGUoIm1vcnBoIikuc3RvcmUo Im1vcnBoOm9wdGlvbnMiLCRleHRlbmQoe2xpbms6ImNhbmNlbCJ9LGEpKX0sZ2V0 OmZ1bmN0aW9uKGEpe2lmKGF8fCF0aGlzLnJldHJpZXZlKCJtb3JwaCIpKXtpZihh fHwhdGhpcy5yZXRyaWV2ZSgibW9ycGg6b3B0aW9ucyIpKXt0aGlzLnNldCgibW9y cGgiLGEpfXRoaXMuc3RvcmUoIm1vcnBoIixuZXcgRnguTW9ycGgodGhpcyx0aGlz LnJldHJpZXZlKCJtb3JwaDpvcHRpb25zIikpKX1yZXR1cm4gdGhpcy5yZXRyaWV2 ZSgibW9ycGgiKX19O0VsZW1lbnQuaW1wbGVtZW50KHttb3JwaDpmdW5jdGlvbihh KXt0aGlzLmdldCgibW9ycGgiKS5zdGFydChhKTtyZXR1cm4gdGhpc319KTtGeC5p bXBsZW1lbnQoe2dldFRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9w dGlvbnMudHJhbnNpdGlvbnx8RnguVHJhbnNpdGlvbnMuU2luZS5lYXNlSW5PdXQ7 aWYodHlwZW9mIGE9PSJzdHJpbmciKXt2YXIgYj1hLnNwbGl0KCI6Iik7YT1GeC5U cmFuc2l0aW9uczthPWFbYlswXV18fGFbYlswXS5jYXBpdGFsaXplKCldO2lmKGJb MV0pe2E9YVsiZWFzZSIrYlsxXS5jYXBpdGFsaXplKCkrKGJbMl0/YlsyXS5jYXBp dGFsaXplKCk6IiIpXX19cmV0dXJuIGF9fSk7RnguVHJhbnNpdGlvbj1mdW5jdGlv bihiLGEpe2E9JHNwbGF0KGEpO3JldHVybiAkZXh0ZW5kKGIse2Vhc2VJbjpmdW5j dGlvbihjKXtyZXR1cm4gYihjLGEpfSxlYXNlT3V0OmZ1bmN0aW9uKGMpe3JldHVy biAxLWIoMS1jLGEpfSxlYXNlSW5PdXQ6ZnVuY3Rpb24oYyl7cmV0dXJuKGM8PTAu NSk/YigyKmMsYSkvMjooMi1iKDIqKDEtYyksYSkpLzJ9fSl9O0Z4LlRyYW5zaXRp b25zPW5ldyBIYXNoKHtsaW5lYXI6JGFyZ3VtZW50cygwKX0pO0Z4LlRyYW5zaXRp b25zLmV4dGVuZD1mdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSl7RnguVHJhbnNp dGlvbnNbYl09bmV3IEZ4LlRyYW5zaXRpb24oYVtiXSl9fTtGeC5UcmFuc2l0aW9u cy5leHRlbmQoe1BvdzpmdW5jdGlvbihiLGEpe3JldHVybiBNYXRoLnBvdyhiLGFb MF18fDYpfSxFeHBvOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnBvdygyLDgqKGEt MSkpfSxDaXJjOmZ1bmN0aW9uKGEpe3JldHVybiAxLU1hdGguc2luKE1hdGguYWNv cyhhKSl9LFNpbmU6ZnVuY3Rpb24oYSl7cmV0dXJuIDEtTWF0aC5zaW4oKDEtYSkq TWF0aC5QSS8yKX0sQmFjazpmdW5jdGlvbihiLGEpe2E9YVswXXx8MS42MTg7cmV0 dXJuIE1hdGgucG93KGIsMikqKChhKzEpKmItYSl9LEJvdW5jZTpmdW5jdGlvbihm KXt2YXIgZTtmb3IodmFyIGQ9MCxjPTE7MTtkKz1jLGMvPTIpe2lmKGY+PSg3LTQq ZCkvMTEpe2U9YypjLU1hdGgucG93KCgxMS02KmQtMTEqZikvNCwyKTticmVha319 cmV0dXJuIGV9LEVsYXN0aWM6ZnVuY3Rpb24oYixhKXtyZXR1cm4gTWF0aC5wb3co MiwxMCotLWIpKk1hdGguY29zKDIwKmIqTWF0aC5QSSooYVswXXx8MSkvMyl9fSk7 WyJRdWFkIiwiQ3ViaWMiLCJRdWFydCIsIlF1aW50Il0uZWFjaChmdW5jdGlvbihi LGEpe0Z4LlRyYW5zaXRpb25zW2JdPW5ldyBGeC5UcmFuc2l0aW9uKGZ1bmN0aW9u KGMpe3JldHVybiBNYXRoLnBvdyhjLFthKzJdKX0pfSk7dmFyIFJlcXVlc3Q9bmV3 IENsYXNzKHtJbXBsZW1lbnRzOltDaGFpbixFdmVudHMsT3B0aW9uc10sb3B0aW9u czp7dXJsOiIiLGRhdGE6IiIsaGVhZGVyczp7IlgtUmVxdWVzdGVkLVdpdGgiOiJY TUxIdHRwUmVxdWVzdCIsQWNjZXB0OiJ0ZXh0L2phdmFzY3JpcHQsIHRleHQvaHRt bCwgYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCwgKi8qIn0sYXN5bmM6dHJ1ZSxm b3JtYXQ6ZmFsc2UsbWV0aG9kOiJwb3N0IixsaW5rOiJpZ25vcmUiLGlzU3VjY2Vz czpudWxsLGVtdWxhdGlvbjp0cnVlLHVybEVuY29kZWQ6dHJ1ZSxlbmNvZGluZzoi dXRmLTgiLGV2YWxTY3JpcHRzOmZhbHNlLGV2YWxSZXNwb25zZTpmYWxzZSxub0Nh Y2hlOmZhbHNlfSxpbml0aWFsaXplOmZ1bmN0aW9uKGEpe3RoaXMueGhyPW5ldyBC cm93c2VyLlJlcXVlc3QoKTt0aGlzLnNldE9wdGlvbnMoYSk7dGhpcy5vcHRpb25z LmlzU3VjY2Vzcz10aGlzLm9wdGlvbnMuaXNTdWNjZXNzfHx0aGlzLmlzU3VjY2Vz czt0aGlzLmhlYWRlcnM9bmV3IEhhc2godGhpcy5vcHRpb25zLmhlYWRlcnMpfSxv blN0YXRlQ2hhbmdlOmZ1bmN0aW9uKCl7aWYodGhpcy54aHIucmVhZHlTdGF0ZSE9 NHx8IXRoaXMucnVubmluZyl7cmV0dXJufXRoaXMucnVubmluZz1mYWxzZTt0aGlz LnN0YXR1cz0wOyR0cnkoZnVuY3Rpb24oKXt0aGlzLnN0YXR1cz10aGlzLnhoci5z dGF0dXN9LmJpbmQodGhpcykpO3RoaXMueGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT0k ZW1wdHk7aWYodGhpcy5vcHRpb25zLmlzU3VjY2Vzcy5jYWxsKHRoaXMsdGhpcy5z dGF0dXMpKXt0aGlzLnJlc3BvbnNlPXt0ZXh0OnRoaXMueGhyLnJlc3BvbnNlVGV4 dCx4bWw6dGhpcy54aHIucmVzcG9uc2VYTUx9O3RoaXMuc3VjY2Vzcyh0aGlzLnJl c3BvbnNlLnRleHQsdGhpcy5yZXNwb25zZS54bWwpfWVsc2V7dGhpcy5yZXNwb25z ZT17dGV4dDpudWxsLHhtbDpudWxsfTt0aGlzLmZhaWx1cmUoKX19LGlzU3VjY2Vz czpmdW5jdGlvbigpe3JldHVybigodGhpcy5zdGF0dXM+PTIwMCkmJih0aGlzLnN0 YXR1czwzMDApKX0scHJvY2Vzc1NjcmlwdHM6ZnVuY3Rpb24oYSl7aWYodGhpcy5v cHRpb25zLmV2YWxSZXNwb25zZXx8KC8oZWNtYXxqYXZhKXNjcmlwdC8pLnRlc3Qo dGhpcy5nZXRIZWFkZXIoIkNvbnRlbnQtdHlwZSIpKSl7cmV0dXJuICRleGVjKGEp fXJldHVybiBhLnN0cmlwU2NyaXB0cyh0aGlzLm9wdGlvbnMuZXZhbFNjcmlwdHMp fSxzdWNjZXNzOmZ1bmN0aW9uKGIsYSl7dGhpcy5vblN1Y2Nlc3ModGhpcy5wcm9j ZXNzU2NyaXB0cyhiKSxhKX0sb25TdWNjZXNzOmZ1bmN0aW9uKCl7dGhpcy5maXJl RXZlbnQoImNvbXBsZXRlIixhcmd1bWVudHMpLmZpcmVFdmVudCgic3VjY2VzcyIs YXJndW1lbnRzKS5jYWxsQ2hhaW4oKX0sZmFpbHVyZTpmdW5jdGlvbigpe3RoaXMu b25GYWlsdXJlKCl9LG9uRmFpbHVyZTpmdW5jdGlvbigpe3RoaXMuZmlyZUV2ZW50 KCJjb21wbGV0ZSIpLmZpcmVFdmVudCgiZmFpbHVyZSIsdGhpcy54aHIpfSxzZXRI ZWFkZXI6ZnVuY3Rpb24oYSxiKXt0aGlzLmhlYWRlcnMuc2V0KGEsYik7cmV0dXJu IHRoaXN9LGdldEhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4gJHRyeShmdW5jdGlv bigpe3JldHVybiB0aGlzLnhoci5nZXRSZXNwb25zZUhlYWRlcihhKX0uYmluZCh0 aGlzKSl9LGNoZWNrOmZ1bmN0aW9uKCl7aWYoIXRoaXMucnVubmluZyl7cmV0dXJu IHRydWV9c3dpdGNoKHRoaXMub3B0aW9ucy5saW5rKXtjYXNlImNhbmNlbCI6dGhp cy5jYW5jZWwoKTtyZXR1cm4gdHJ1ZTtjYXNlImNoYWluIjp0aGlzLmNoYWluKHRo aXMuY2FsbGVyLmJpbmQodGhpcyxhcmd1bWVudHMpKTtyZXR1cm4gZmFsc2V9cmV0 dXJuIGZhbHNlfSxzZW5kOmZ1bmN0aW9uKGspe2lmKCF0aGlzLmNoZWNrKGspKXty ZXR1cm4gdGhpc310aGlzLnJ1bm5pbmc9dHJ1ZTt2YXIgaT0kdHlwZShrKTtpZihp PT0ic3RyaW5nInx8aT09ImVsZW1lbnQiKXtrPXtkYXRhOmt9fXZhciBkPXRoaXMu b3B0aW9ucztrPSRleHRlbmQoe2RhdGE6ZC5kYXRhLHVybDpkLnVybCxtZXRob2Q6 ZC5tZXRob2R9LGspO3ZhciBnPWsuZGF0YSxiPVN0cmluZyhrLnVybCksYT1rLm1l dGhvZC50b0xvd2VyQ2FzZSgpO3N3aXRjaCgkdHlwZShnKSl7Y2FzZSJlbGVtZW50 IjpnPWRvY3VtZW50LmlkKGcpLnRvUXVlcnlTdHJpbmcoKTticmVhaztjYXNlIm9i amVjdCI6Y2FzZSJoYXNoIjpnPUhhc2gudG9RdWVyeVN0cmluZyhnKX1pZih0aGlz Lm9wdGlvbnMuZm9ybWF0KXt2YXIgaj0iZm9ybWF0PSIrdGhpcy5vcHRpb25zLmZv cm1hdDtnPShnKT9qKyImIitnOmp9aWYodGhpcy5vcHRpb25zLmVtdWxhdGlvbiYm IVsiZ2V0IiwicG9zdCJdLmNvbnRhaW5zKGEpKXt2YXIgaD0iX21ldGhvZD0iK2E7 Zz0oZyk/aCsiJiIrZzpoO2E9InBvc3QifWlmKHRoaXMub3B0aW9ucy51cmxFbmNv ZGVkJiZhPT0icG9zdCIpe3ZhciBjPSh0aGlzLm9wdGlvbnMuZW5jb2RpbmcpPyI7 IGNoYXJzZXQ9Iit0aGlzLm9wdGlvbnMuZW5jb2Rpbmc6IiI7dGhpcy5oZWFkZXJz LnNldCgiQ29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxl bmNvZGVkIitjKX1pZih0aGlzLm9wdGlvbnMubm9DYWNoZSl7dmFyIGY9Im5vQ2Fj aGU9IituZXcgRGF0ZSgpLmdldFRpbWUoKTtnPShnKT9mKyImIitnOmZ9dmFyIGU9 Yi5sYXN0SW5kZXhPZigiLyIpO2lmKGU+LTEmJihlPWIuaW5kZXhPZigiIyIpKT4t MSl7Yj1iLnN1YnN0cigwLGUpfWlmKGcmJmE9PSJnZXQiKXtiPWIrKGIuY29udGFp bnMoIj8iKT8iJiI6Ij8iKStnO2c9bnVsbH10aGlzLnhoci5vcGVuKGEudG9VcHBl ckNhc2UoKSxiLHRoaXMub3B0aW9ucy5hc3luYyk7dGhpcy54aHIub25yZWFkeXN0 YXRlY2hhbmdlPXRoaXMub25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMpO3RoaXMuaGVh ZGVycy5lYWNoKGZ1bmN0aW9uKG0sbCl7dHJ5e3RoaXMueGhyLnNldFJlcXVlc3RI ZWFkZXIobCxtKX1jYXRjaChuKXt0aGlzLmZpcmVFdmVudCgiZXhjZXB0aW9uIixb bCxtXSl9fSx0aGlzKTt0aGlzLmZpcmVFdmVudCgicmVxdWVzdCIpO3RoaXMueGhy LnNlbmQoZyk7aWYoIXRoaXMub3B0aW9ucy5hc3luYyl7dGhpcy5vblN0YXRlQ2hh bmdlKCl9cmV0dXJuIHRoaXN9LGNhbmNlbDpmdW5jdGlvbigpe2lmKCF0aGlzLnJ1 bm5pbmcpe3JldHVybiB0aGlzfXRoaXMucnVubmluZz1mYWxzZTt0aGlzLnhoci5h Ym9ydCgpO3RoaXMueGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT0kZW1wdHk7dGhpcy54 aHI9bmV3IEJyb3dzZXIuUmVxdWVzdCgpO3RoaXMuZmlyZUV2ZW50KCJjYW5jZWwi KTtyZXR1cm4gdGhpc319KTsoZnVuY3Rpb24oKXt2YXIgYT17fTtbImdldCIsInBv c3QiLCJwdXQiLCJkZWxldGUiLCJHRVQiLCJQT1NUIiwiUFVUIiwiREVMRVRFIl0u ZWFjaChmdW5jdGlvbihiKXthW2JdPWZ1bmN0aW9uKCl7dmFyIGM9QXJyYXkubGlu ayhhcmd1bWVudHMse3VybDpTdHJpbmcudHlwZSxkYXRhOiRkZWZpbmVkfSk7cmV0 dXJuIHRoaXMuc2VuZCgkZXh0ZW5kKGMse21ldGhvZDpifSkpfX0pO1JlcXVlc3Qu aW1wbGVtZW50KGEpfSkoKTtFbGVtZW50LlByb3BlcnRpZXMuc2VuZD17c2V0OmZ1 bmN0aW9uKGEpe3ZhciBiPXRoaXMucmV0cmlldmUoInNlbmQiKTtpZihiKXtiLmNh bmNlbCgpfXJldHVybiB0aGlzLmVsaW1pbmF0ZSgic2VuZCIpLnN0b3JlKCJzZW5k Om9wdGlvbnMiLCRleHRlbmQoe2RhdGE6dGhpcyxsaW5rOiJjYW5jZWwiLG1ldGhv ZDp0aGlzLmdldCgibWV0aG9kIil8fCJwb3N0Iix1cmw6dGhpcy5nZXQoImFjdGlv biIpfSxhKSl9LGdldDpmdW5jdGlvbihhKXtpZihhfHwhdGhpcy5yZXRyaWV2ZSgi c2VuZCIpKXtpZihhfHwhdGhpcy5yZXRyaWV2ZSgic2VuZDpvcHRpb25zIikpe3Ro aXMuc2V0KCJzZW5kIixhKX10aGlzLnN0b3JlKCJzZW5kIixuZXcgUmVxdWVzdCh0 aGlzLnJldHJpZXZlKCJzZW5kOm9wdGlvbnMiKSkpfXJldHVybiB0aGlzLnJldHJp ZXZlKCJzZW5kIil9fTtFbGVtZW50LmltcGxlbWVudCh7c2VuZDpmdW5jdGlvbihh KXt2YXIgYj10aGlzLmdldCgic2VuZCIpO2Iuc2VuZCh7ZGF0YTp0aGlzLHVybDph fHxiLm9wdGlvbnMudXJsfSk7cmV0dXJuIHRoaXN9fSk7UmVxdWVzdC5IVE1MPW5l dyBDbGFzcyh7RXh0ZW5kczpSZXF1ZXN0LG9wdGlvbnM6e3VwZGF0ZTpmYWxzZSxh cHBlbmQ6ZmFsc2UsZXZhbFNjcmlwdHM6dHJ1ZSxmaWx0ZXI6ZmFsc2V9LHByb2Nl c3NIVE1MOmZ1bmN0aW9uKGMpe3ZhciBiPWMubWF0Y2goLzxib2R5W14+XSo+KFtc c1xTXSo/KTxcL2JvZHk+L2kpO2M9KGIpP2JbMV06Yzt2YXIgYT1uZXcgRWxlbWVu dCgiZGl2Iik7cmV0dXJuICR0cnkoZnVuY3Rpb24oKXt2YXIgZD0iPHJvb3Q+Iitj KyI8L3Jvb3Q+IixnO2lmKEJyb3dzZXIuRW5naW5lLnRyaWRlbnQpe2c9bmV3IEFj dGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKTtnLmFzeW5jPWZhbHNlO2cu bG9hZFhNTChkKX1lbHNle2c9bmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmlu ZyhkLCJ0ZXh0L3htbCIpfWQ9Zy5nZXRFbGVtZW50c0J5VGFnTmFtZSgicm9vdCIp WzBdO2lmKCFkKXtyZXR1cm4gbnVsbH1mb3IodmFyIGY9MCxlPWQuY2hpbGROb2Rl cy5sZW5ndGg7ZjxlO2YrKyl7dmFyIGg9RWxlbWVudC5jbG9uZShkLmNoaWxkTm9k ZXNbZl0sdHJ1ZSx0cnVlKTtpZihoKXthLmdyYWIoaCl9fXJldHVybiBhfSl8fGEu c2V0KCJodG1sIixjKX0sc3VjY2VzczpmdW5jdGlvbihkKXt2YXIgYz10aGlzLm9w dGlvbnMsYj10aGlzLnJlc3BvbnNlO2IuaHRtbD1kLnN0cmlwU2NyaXB0cyhmdW5j dGlvbihlKXtiLmphdmFzY3JpcHQ9ZX0pO3ZhciBhPXRoaXMucHJvY2Vzc0hUTUwo Yi5odG1sKTtiLnRyZWU9YS5jaGlsZE5vZGVzO2IuZWxlbWVudHM9YS5nZXRFbGVt ZW50cygiKiIpO2lmKGMuZmlsdGVyKXtiLnRyZWU9Yi5lbGVtZW50cy5maWx0ZXIo Yy5maWx0ZXIpfWlmKGMudXBkYXRlKXtkb2N1bWVudC5pZChjLnVwZGF0ZSkuZW1w dHkoKS5zZXQoImh0bWwiLGIuaHRtbCl9ZWxzZXtpZihjLmFwcGVuZCl7ZG9jdW1l bnQuaWQoYy5hcHBlbmQpLmFkb3B0KGEuZ2V0Q2hpbGRyZW4oKSl9fWlmKGMuZXZh bFNjcmlwdHMpeyRleGVjKGIuamF2YXNjcmlwdCl9dGhpcy5vblN1Y2Nlc3MoYi50 cmVlLGIuZWxlbWVudHMsYi5odG1sLGIuamF2YXNjcmlwdCl9fSk7RWxlbWVudC5Q cm9wZXJ0aWVzLmxvYWQ9e3NldDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnJldHJp ZXZlKCJsb2FkIik7aWYoYil7Yi5jYW5jZWwoKX1yZXR1cm4gdGhpcy5lbGltaW5h dGUoImxvYWQiKS5zdG9yZSgibG9hZDpvcHRpb25zIiwkZXh0ZW5kKHtkYXRhOnRo aXMsbGluazoiY2FuY2VsIix1cGRhdGU6dGhpcyxtZXRob2Q6ImdldCJ9LGEpKX0s Z2V0OmZ1bmN0aW9uKGEpe2lmKGF8fCF0aGlzLnJldHJpZXZlKCJsb2FkIikpe2lm KGF8fCF0aGlzLnJldHJpZXZlKCJsb2FkOm9wdGlvbnMiKSl7dGhpcy5zZXQoImxv YWQiLGEpfXRoaXMuc3RvcmUoImxvYWQiLG5ldyBSZXF1ZXN0LkhUTUwodGhpcy5y ZXRyaWV2ZSgibG9hZDpvcHRpb25zIikpKX1yZXR1cm4gdGhpcy5yZXRyaWV2ZSgi bG9hZCIpfX07RWxlbWVudC5pbXBsZW1lbnQoe2xvYWQ6ZnVuY3Rpb24oKXt0aGlz LmdldCgibG9hZCIpLnNlbmQoQXJyYXkubGluayhhcmd1bWVudHMse2RhdGE6T2Jq ZWN0LnR5cGUsdXJsOlN0cmluZy50eXBlfSkpO3JldHVybiB0aGlzfX0pO1JlcXVl c3QuSlNPTj1uZXcgQ2xhc3Moe0V4dGVuZHM6UmVxdWVzdCxvcHRpb25zOntzZWN1 cmU6dHJ1ZX0saW5pdGlhbGl6ZTpmdW5jdGlvbihhKXt0aGlzLnBhcmVudChhKTt0 aGlzLmhlYWRlcnMuZXh0ZW5kKHtBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24iLCJY LVJlcXVlc3QiOiJKU09OIn0pfSxzdWNjZXNzOmZ1bmN0aW9uKGEpe3RoaXMucmVz cG9uc2UuanNvbj1KU09OLmRlY29kZShhLHRoaXMub3B0aW9ucy5zZWN1cmUpO3Ro aXMub25TdWNjZXNzKHRoaXMucmVzcG9uc2UuanNvbixhKX19KTtNb29Ub29scy5N b3JlPXt2ZXJzaW9uOiIxLjIuNC4yIixidWlsZDoiYmQ1YTkzYzA5MTNjY2UyNTkx N2M0OGNiZGFjZGU1NjhlMTVlMDJlZiJ9O0Z4LkVsZW1lbnRzPW5ldyBDbGFzcyh7 RXh0ZW5kczpGeC5DU1MsaW5pdGlhbGl6ZTpmdW5jdGlvbihiLGEpe3RoaXMuZWxl bWVudHM9dGhpcy5zdWJqZWN0PSQkKGIpO3RoaXMucGFyZW50KGEpfSxjb21wdXRl OmZ1bmN0aW9uKGcsaCxqKXt2YXIgYz17fTtmb3IodmFyIGQgaW4gZyl7dmFyIGE9 Z1tkXSxlPWhbZF0sZj1jW2RdPXt9O2Zvcih2YXIgYiBpbiBhKXtmW2JdPXRoaXMu cGFyZW50KGFbYl0sZVtiXSxqKX19cmV0dXJuIGN9LHNldDpmdW5jdGlvbihiKXtm b3IodmFyIGMgaW4gYil7dmFyIGE9YltjXTtmb3IodmFyIGQgaW4gYSl7dGhpcy5y ZW5kZXIodGhpcy5lbGVtZW50c1tjXSxkLGFbZF0sdGhpcy5vcHRpb25zLnVuaXQp fX1yZXR1cm4gdGhpc30sc3RhcnQ6ZnVuY3Rpb24oYyl7aWYoIXRoaXMuY2hlY2so Yykpe3JldHVybiB0aGlzfXZhciBoPXt9LGo9e307Zm9yKHZhciBkIGluIGMpe3Zh ciBmPWNbZF0sYT1oW2RdPXt9LGc9altkXT17fTtmb3IodmFyIGIgaW4gZil7dmFy IGU9dGhpcy5wcmVwYXJlKHRoaXMuZWxlbWVudHNbZF0sYixmW2JdKTthW2JdPWUu ZnJvbTtnW2JdPWUudG99fXJldHVybiB0aGlzLnBhcmVudChoLGopfX0pO3ZhciBB Y2NvcmRpb249RnguQWNjb3JkaW9uPW5ldyBDbGFzcyh7RXh0ZW5kczpGeC5FbGVt ZW50cyxvcHRpb25zOntkaXNwbGF5OjAsc2hvdzpmYWxzZSxoZWlnaHQ6dHJ1ZSx3 aWR0aDpmYWxzZSxvcGFjaXR5OnRydWUsYWx3YXlzSGlkZTpmYWxzZSx0cmlnZ2Vy OiJjbGljayIsaW5pdGlhbERpc3BsYXlGeDp0cnVlLHJldHVybkhlaWdodFRvQXV0 bzp0cnVlfSxpbml0aWFsaXplOmZ1bmN0aW9uKCl7dmFyIGM9QXJyYXkubGluayhh cmd1bWVudHMse2NvbnRhaW5lcjpFbGVtZW50LnR5cGUsb3B0aW9uczpPYmplY3Qu dHlwZSx0b2dnbGVyczokZGVmaW5lZCxlbGVtZW50czokZGVmaW5lZH0pO3RoaXMu cGFyZW50KGMuZWxlbWVudHMsYy5vcHRpb25zKTt0aGlzLnRvZ2dsZXJzPSQkKGMu dG9nZ2xlcnMpO3RoaXMuY29udGFpbmVyPWRvY3VtZW50LmlkKGMuY29udGFpbmVy KTt0aGlzLnByZXZpb3VzPS0xO3RoaXMuaW50ZXJuYWxDaGFpbj1uZXcgQ2hhaW4o KTtpZih0aGlzLm9wdGlvbnMuYWx3YXlzSGlkZSl7dGhpcy5vcHRpb25zLndhaXQ9 dHJ1ZX1pZigkY2hrKHRoaXMub3B0aW9ucy5zaG93KSl7dGhpcy5vcHRpb25zLmRp c3BsYXk9ZmFsc2U7dGhpcy5wcmV2aW91cz10aGlzLm9wdGlvbnMuc2hvd31pZih0 aGlzLm9wdGlvbnMuc3RhcnQpe3RoaXMub3B0aW9ucy5kaXNwbGF5PWZhbHNlO3Ro aXMub3B0aW9ucy5zaG93PWZhbHNlfXRoaXMuZWZmZWN0cz17fTtpZih0aGlzLm9w dGlvbnMub3BhY2l0eSl7dGhpcy5lZmZlY3RzLm9wYWNpdHk9ImZ1bGxPcGFjaXR5 In1pZih0aGlzLm9wdGlvbnMud2lkdGgpe3RoaXMuZWZmZWN0cy53aWR0aD10aGlz Lm9wdGlvbnMuZml4ZWRXaWR0aD8iZnVsbFdpZHRoIjoib2Zmc2V0V2lkdGgifWlm KHRoaXMub3B0aW9ucy5oZWlnaHQpe3RoaXMuZWZmZWN0cy5oZWlnaHQ9dGhpcy5v cHRpb25zLmZpeGVkSGVpZ2h0PyJmdWxsSGVpZ2h0Ijoic2Nyb2xsSGVpZ2h0In1m b3IodmFyIGI9MCxhPXRoaXMudG9nZ2xlcnMubGVuZ3RoO2I8YTtiKyspe3RoaXMu YWRkU2VjdGlvbih0aGlzLnRvZ2dsZXJzW2JdLHRoaXMuZWxlbWVudHNbYl0pfXRo aXMuZWxlbWVudHMuZWFjaChmdW5jdGlvbihlLGQpe2lmKHRoaXMub3B0aW9ucy5z aG93PT09ZCl7dGhpcy5maXJlRXZlbnQoImFjdGl2ZSIsW3RoaXMudG9nZ2xlcnNb ZF0sZV0pfWVsc2V7Zm9yKHZhciBmIGluIHRoaXMuZWZmZWN0cyl7ZS5zZXRTdHls ZShmLDApfX19LHRoaXMpO2lmKCRjaGsodGhpcy5vcHRpb25zLmRpc3BsYXkpKXt0 aGlzLmRpc3BsYXkodGhpcy5vcHRpb25zLmRpc3BsYXksdGhpcy5vcHRpb25zLmlu aXRpYWxEaXNwbGF5RngpfXRoaXMuYWRkRXZlbnQoImNvbXBsZXRlIix0aGlzLmlu dGVybmFsQ2hhaW4uY2FsbENoYWluLmJpbmQodGhpcy5pbnRlcm5hbENoYWluKSl9 LGFkZFNlY3Rpb246ZnVuY3Rpb24oZSxjKXtlPWRvY3VtZW50LmlkKGUpO2M9ZG9j dW1lbnQuaWQoYyk7dmFyIGY9dGhpcy50b2dnbGVycy5jb250YWlucyhlKTt0aGlz LnRvZ2dsZXJzLmluY2x1ZGUoZSk7dGhpcy5lbGVtZW50cy5pbmNsdWRlKGMpO3Zh ciBhPXRoaXMudG9nZ2xlcnMuaW5kZXhPZihlKTt2YXIgYj10aGlzLmRpc3BsYXku YmluZCh0aGlzLGEpO2Uuc3RvcmUoImFjY29yZGlvbjpkaXNwbGF5IixiKTtlLmFk ZEV2ZW50KHRoaXMub3B0aW9ucy50cmlnZ2VyLGIpO2lmKHRoaXMub3B0aW9ucy5o ZWlnaHQpe2Muc2V0U3R5bGVzKHsicGFkZGluZy10b3AiOjAsImJvcmRlci10b3Ai OiJub25lIiwicGFkZGluZy1ib3R0b20iOjAsImJvcmRlci1ib3R0b20iOiJub25l In0pfWlmKHRoaXMub3B0aW9ucy53aWR0aCl7Yy5zZXRTdHlsZXMoeyJwYWRkaW5n LWxlZnQiOjAsImJvcmRlci1sZWZ0Ijoibm9uZSIsInBhZGRpbmctcmlnaHQiOjAs ImJvcmRlci1yaWdodCI6Im5vbmUifSl9Yy5mdWxsT3BhY2l0eT0xO2lmKHRoaXMu b3B0aW9ucy5maXhlZFdpZHRoKXtjLmZ1bGxXaWR0aD10aGlzLm9wdGlvbnMuZml4 ZWRXaWR0aH1pZih0aGlzLm9wdGlvbnMuZml4ZWRIZWlnaHQpe2MuZnVsbEhlaWdo dD10aGlzLm9wdGlvbnMuZml4ZWRIZWlnaHR9Yy5zZXRTdHlsZSgib3ZlcmZsb3ci LCJoaWRkZW4iKTtpZighZil7Zm9yKHZhciBkIGluIHRoaXMuZWZmZWN0cyl7Yy5z ZXRTdHlsZShkLDApfX1yZXR1cm4gdGhpc30sZGV0YWNoOmZ1bmN0aW9uKCl7dGhp cy50b2dnbGVycy5lYWNoKGZ1bmN0aW9uKGEpe2EucmVtb3ZlRXZlbnQodGhpcy5v cHRpb25zLnRyaWdnZXIsYS5yZXRyaWV2ZSgiYWNjb3JkaW9uOmRpc3BsYXkiKSl9 LHRoaXMpfSxkaXNwbGF5OmZ1bmN0aW9uKGEsYil7aWYoIXRoaXMuY2hlY2soYSxi KSl7cmV0dXJuIHRoaXN9Yj0kcGljayhiLHRydWUpO2lmKHRoaXMub3B0aW9ucy5y ZXR1cm5IZWlnaHRUb0F1dG8pe3ZhciBkPXRoaXMuZWxlbWVudHNbdGhpcy5wcmV2 aW91c107aWYoZCYmIXRoaXMuc2VsZkhpZGRlbil7Zm9yKHZhciBjIGluIHRoaXMu ZWZmZWN0cyl7ZC5zZXRTdHlsZShjLGRbdGhpcy5lZmZlY3RzW2NdXSl9fX1hPSgk dHlwZShhKT09ImVsZW1lbnQiKT90aGlzLmVsZW1lbnRzLmluZGV4T2YoYSk6YTtp ZigodGhpcy50aW1lciYmdGhpcy5vcHRpb25zLndhaXQpfHwoYT09PXRoaXMucHJl dmlvdXMmJiF0aGlzLm9wdGlvbnMuYWx3YXlzSGlkZSkpe3JldHVybiB0aGlzfXRo aXMucHJldmlvdXM9YTt2YXIgZT17fTt0aGlzLmVsZW1lbnRzLmVhY2goZnVuY3Rp b24oaCxnKXtlW2ddPXt9O3ZhciBmO2lmKGchPWEpe2Y9dHJ1ZX1lbHNle2lmKHRo aXMub3B0aW9ucy5hbHdheXNIaWRlJiYoKGgub2Zmc2V0SGVpZ2h0PjAmJnRoaXMu b3B0aW9ucy5oZWlnaHQpfHxoLm9mZnNldFdpZHRoPjAmJnRoaXMub3B0aW9ucy53 aWR0aCkpe2Y9dHJ1ZTt0aGlzLnNlbGZIaWRkZW49dHJ1ZX19dGhpcy5maXJlRXZl bnQoZj8iYmFja2dyb3VuZCI6ImFjdGl2ZSIsW3RoaXMudG9nZ2xlcnNbZ10saF0p O2Zvcih2YXIgaiBpbiB0aGlzLmVmZmVjdHMpe2VbZ11bal09Zj8wOmhbdGhpcy5l ZmZlY3RzW2pdXX19LHRoaXMpO3RoaXMuaW50ZXJuYWxDaGFpbi5jaGFpbihmdW5j dGlvbigpe2lmKHRoaXMub3B0aW9ucy5yZXR1cm5IZWlnaHRUb0F1dG8mJiF0aGlz LnNlbGZIaWRkZW4pe3ZhciBmPXRoaXMuZWxlbWVudHNbYV07aWYoZil7Zi5zZXRT dHlsZSgiaGVpZ2h0IiwiYXV0byIpfX19LmJpbmQodGhpcykpO3JldHVybiBiP3Ro aXMuc3RhcnQoZSk6dGhpcy5zZXQoZSl9fSk7RnguU2Nyb2xsPW5ldyBDbGFzcyh7 RXh0ZW5kczpGeCxvcHRpb25zOntvZmZzZXQ6e3g6MCx5OjB9LHdoZWVsU3RvcHM6 dHJ1ZX0saW5pdGlhbGl6ZTpmdW5jdGlvbihiLGEpe3RoaXMuZWxlbWVudD10aGlz LnN1YmplY3Q9ZG9jdW1lbnQuaWQoYik7dGhpcy5wYXJlbnQoYSk7dmFyIGQ9dGhp cy5jYW5jZWwuYmluZCh0aGlzLGZhbHNlKTtpZigkdHlwZSh0aGlzLmVsZW1lbnQp IT0iZWxlbWVudCIpe3RoaXMuZWxlbWVudD1kb2N1bWVudC5pZCh0aGlzLmVsZW1l bnQuZ2V0RG9jdW1lbnQoKS5ib2R5KX12YXIgYz10aGlzLmVsZW1lbnQ7aWYodGhp cy5vcHRpb25zLndoZWVsU3RvcHMpe3RoaXMuYWRkRXZlbnQoInN0YXJ0IixmdW5j dGlvbigpe2MuYWRkRXZlbnQoIm1vdXNld2hlZWwiLGQpfSx0cnVlKTt0aGlzLmFk ZEV2ZW50KCJjb21wbGV0ZSIsZnVuY3Rpb24oKXtjLnJlbW92ZUV2ZW50KCJtb3Vz ZXdoZWVsIixkKX0sdHJ1ZSl9fSxzZXQ6ZnVuY3Rpb24oKXt2YXIgYT1BcnJheS5m bGF0dGVuKGFyZ3VtZW50cyk7aWYoQnJvd3Nlci5FbmdpbmUuZ2Vja28pe2E9W01h dGgucm91bmQoYVswXSksTWF0aC5yb3VuZChhWzFdKV19dGhpcy5lbGVtZW50LnNj cm9sbFRvKGFbMF0sYVsxXSl9LGNvbXB1dGU6ZnVuY3Rpb24oYyxiLGEpe3JldHVy blswLDFdLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gRnguY29tcHV0ZShjW2RdLGJb ZF0sYSl9KX0sc3RhcnQ6ZnVuY3Rpb24oYyxnKXtpZighdGhpcy5jaGVjayhjLGcp KXtyZXR1cm4gdGhpc312YXIgZT10aGlzLmVsZW1lbnQuZ2V0U2Nyb2xsU2l6ZSgp LGI9dGhpcy5lbGVtZW50LmdldFNjcm9sbCgpLGQ9e3g6Yyx5Omd9O2Zvcih2YXIg ZiBpbiBkKXt2YXIgYT1lW2ZdO2lmKCRjaGsoZFtmXSkpe2RbZl09KCR0eXBlKGRb Zl0pPT0ibnVtYmVyIik/ZFtmXTphfWVsc2V7ZFtmXT1iW2ZdfWRbZl0rPXRoaXMu b3B0aW9ucy5vZmZzZXRbZl19cmV0dXJuIHRoaXMucGFyZW50KFtiLngsYi55XSxb ZC54LGQueV0pfSx0b1RvcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0KGZh bHNlLDApfSx0b0xlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydCgwLGZh bHNlKX0sdG9SaWdodDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0KCJyaWdo dCIsZmFsc2UpfSx0b0JvdHRvbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0 KGZhbHNlLCJib3R0b20iKX0sdG9FbGVtZW50OmZ1bmN0aW9uKGIpe3ZhciBhPWRv Y3VtZW50LmlkKGIpLmdldFBvc2l0aW9uKHRoaXMuZWxlbWVudCk7cmV0dXJuIHRo aXMuc3RhcnQoYS54LGEueSl9LHNjcm9sbEludG9WaWV3OmZ1bmN0aW9uKGMsZSxk KXtlPWU/JHNwbGF0KGUpOlsieCIsInkiXTt2YXIgaD17fTtjPWRvY3VtZW50Lmlk KGMpO3ZhciBmPWMuZ2V0UG9zaXRpb24odGhpcy5lbGVtZW50KTt2YXIgaT1jLmdl dFNpemUoKTt2YXIgZz10aGlzLmVsZW1lbnQuZ2V0U2Nyb2xsKCk7dmFyIGE9dGhp cy5lbGVtZW50LmdldFNpemUoKTt2YXIgYj17eDpmLngraS54LHk6Zi55K2kueX07 WyJ4IiwieSJdLmVhY2goZnVuY3Rpb24oail7aWYoZS5jb250YWlucyhqKSl7aWYo YltqXT5nW2pdK2Fbal0pe2hbal09YltqXS1hW2pdfWlmKGZbal08Z1tqXSl7aFtq XT1mW2pdfX1pZihoW2pdPT1udWxsKXtoW2pdPWdbal19aWYoZCYmZFtqXSl7aFtq XT1oW2pdK2Rbal19fSx0aGlzKTtpZihoLnghPWcueHx8aC55IT1nLnkpe3RoaXMu c3RhcnQoaC54LGgueSl9cmV0dXJuIHRoaXN9LHNjcm9sbFRvQ2VudGVyOmZ1bmN0 aW9uKGMsZSxkKXtlPWU/JHNwbGF0KGUpOlsieCIsInkiXTtjPSQoYyk7dmFyIGg9 e30sZj1jLmdldFBvc2l0aW9uKHRoaXMuZWxlbWVudCksaT1jLmdldFNpemUoKSxn PXRoaXMuZWxlbWVudC5nZXRTY3JvbGwoKSxhPXRoaXMuZWxlbWVudC5nZXRTaXpl KCksYj17eDpmLngraS54LHk6Zi55K2kueX07WyJ4IiwieSJdLmVhY2goZnVuY3Rp b24oail7aWYoZS5jb250YWlucyhqKSl7aFtqXT1mW2pdLShhW2pdLWlbal0pLzJ9 aWYoaFtqXT09bnVsbCl7aFtqXT1nW2pdfWlmKGQmJmRbal0pe2hbal09aFtqXStk W2pdfX0sdGhpcyk7aWYoaC54IT1nLnh8fGgueSE9Zy55KXt0aGlzLnN0YXJ0KGgu eCxoLnkpfXJldHVybiB0aGlzfX0pO0Z4LlNsaWRlPW5ldyBDbGFzcyh7RXh0ZW5k czpGeCxvcHRpb25zOnttb2RlOiJ2ZXJ0aWNhbCIsaGlkZU92ZXJmbG93OnRydWV9 LGluaXRpYWxpemU6ZnVuY3Rpb24oYixhKXt0aGlzLmFkZEV2ZW50KCJjb21wbGV0 ZSIsZnVuY3Rpb24oKXt0aGlzLm9wZW49KHRoaXMud3JhcHBlclsib2Zmc2V0Iit0 aGlzLmxheW91dC5jYXBpdGFsaXplKCldIT0wKTtpZih0aGlzLm9wZW4mJkJyb3dz ZXIuRW5naW5lLndlYmtpdDQxOSl7dGhpcy5lbGVtZW50LmRpc3Bvc2UoKS5pbmpl Y3QodGhpcy53cmFwcGVyKX19LHRydWUpO3RoaXMuZWxlbWVudD10aGlzLnN1Ympl Y3Q9ZG9jdW1lbnQuaWQoYik7dGhpcy5wYXJlbnQoYSk7dmFyIGQ9dGhpcy5lbGVt ZW50LnJldHJpZXZlKCJ3cmFwcGVyIik7dmFyIGM9dGhpcy5lbGVtZW50LmdldFN0 eWxlcygibWFyZ2luIiwicG9zaXRpb24iLCJvdmVyZmxvdyIpO2lmKHRoaXMub3B0 aW9ucy5oaWRlT3ZlcmZsb3cpe2M9JGV4dGVuZChjLHtvdmVyZmxvdzoiaGlkZGVu In0pfXRoaXMud3JhcHBlcj1kfHxuZXcgRWxlbWVudCgiZGl2Iix7c3R5bGVzOmN9 KS53cmFwcyh0aGlzLmVsZW1lbnQpO3RoaXMuZWxlbWVudC5zdG9yZSgid3JhcHBl ciIsdGhpcy53cmFwcGVyKS5zZXRTdHlsZSgibWFyZ2luIiwwKTt0aGlzLm5vdz1b XTt0aGlzLm9wZW49dHJ1ZX0sdmVydGljYWw6ZnVuY3Rpb24oKXt0aGlzLm1hcmdp bj0ibWFyZ2luLXRvcCI7dGhpcy5sYXlvdXQ9ImhlaWdodCI7dGhpcy5vZmZzZXQ9 dGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodH0saG9yaXpvbnRhbDpmdW5jdGlvbigp e3RoaXMubWFyZ2luPSJtYXJnaW4tbGVmdCI7dGhpcy5sYXlvdXQ9IndpZHRoIjt0 aGlzLm9mZnNldD10aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGh9LHNldDpmdW5jdGlv bihhKXt0aGlzLmVsZW1lbnQuc2V0U3R5bGUodGhpcy5tYXJnaW4sYVswXSk7dGhp cy53cmFwcGVyLnNldFN0eWxlKHRoaXMubGF5b3V0LGFbMV0pO3JldHVybiB0aGlz fSxjb21wdXRlOmZ1bmN0aW9uKGMsYixhKXtyZXR1cm5bMCwxXS5tYXAoZnVuY3Rp b24oZCl7cmV0dXJuIEZ4LmNvbXB1dGUoY1tkXSxiW2RdLGEpfSl9LHN0YXJ0OmZ1 bmN0aW9uKGIsZSl7aWYoIXRoaXMuY2hlY2soYixlKSl7cmV0dXJuIHRoaXN9dGhp c1tlfHx0aGlzLm9wdGlvbnMubW9kZV0oKTt2YXIgZD10aGlzLmVsZW1lbnQuZ2V0 U3R5bGUodGhpcy5tYXJnaW4pLnRvSW50KCk7dmFyIGM9dGhpcy53cmFwcGVyLmdl dFN0eWxlKHRoaXMubGF5b3V0KS50b0ludCgpO3ZhciBhPVtbZCxjXSxbMCx0aGlz Lm9mZnNldF1dO3ZhciBnPVtbZCxjXSxbLXRoaXMub2Zmc2V0LDBdXTt2YXIgZjtz d2l0Y2goYil7Y2FzZSJpbiI6Zj1hO2JyZWFrO2Nhc2Uib3V0IjpmPWc7YnJlYWs7 Y2FzZSJ0b2dnbGUiOmY9KGM9PTApP2E6Z31yZXR1cm4gdGhpcy5wYXJlbnQoZlsw XSxmWzFdKX0sc2xpZGVJbjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zdGFydCgi aW4iLGEpfSxzbGlkZU91dDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zdGFydCgi b3V0IixhKX0saGlkZTpmdW5jdGlvbihhKXt0aGlzW2F8fHRoaXMub3B0aW9ucy5t b2RlXSgpO3RoaXMub3Blbj1mYWxzZTtyZXR1cm4gdGhpcy5zZXQoWy10aGlzLm9m ZnNldCwwXSl9LHNob3c6ZnVuY3Rpb24oYSl7dGhpc1thfHx0aGlzLm9wdGlvbnMu bW9kZV0oKTt0aGlzLm9wZW49dHJ1ZTtyZXR1cm4gdGhpcy5zZXQoWzAsdGhpcy5v ZmZzZXRdKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnN0YXJ0KCJ0 b2dnbGUiLGEpfX0pO0VsZW1lbnQuUHJvcGVydGllcy5zbGlkZT17c2V0OmZ1bmN0 aW9uKGIpe3ZhciBhPXRoaXMucmV0cmlldmUoInNsaWRlIik7aWYoYSl7YS5jYW5j ZWwoKX1yZXR1cm4gdGhpcy5lbGltaW5hdGUoInNsaWRlIikuc3RvcmUoInNsaWRl Om9wdGlvbnMiLCRleHRlbmQoe2xpbms6ImNhbmNlbCJ9LGIpKX0sZ2V0OmZ1bmN0 aW9uKGEpe2lmKGF8fCF0aGlzLnJldHJpZXZlKCJzbGlkZSIpKXtpZihhfHwhdGhp cy5yZXRyaWV2ZSgic2xpZGU6b3B0aW9ucyIpKXt0aGlzLnNldCgic2xpZGUiLGEp fXRoaXMuc3RvcmUoInNsaWRlIixuZXcgRnguU2xpZGUodGhpcyx0aGlzLnJldHJp ZXZlKCJzbGlkZTpvcHRpb25zIikpKX1yZXR1cm4gdGhpcy5yZXRyaWV2ZSgic2xp ZGUiKX19O0VsZW1lbnQuaW1wbGVtZW50KHtzbGlkZTpmdW5jdGlvbihkLGUpe2Q9 ZHx8InRvZ2dsZSI7dmFyIGI9dGhpcy5nZXQoInNsaWRlIiksYTtzd2l0Y2goZCl7 Y2FzZSJoaWRlIjpiLmhpZGUoZSk7YnJlYWs7Y2FzZSJzaG93IjpiLnNob3coZSk7 YnJlYWs7Y2FzZSJ0b2dnbGUiOnZhciBjPXRoaXMucmV0cmlldmUoInNsaWRlOmZs YWciLGIub3Blbik7YltjPyJzbGlkZU91dCI6InNsaWRlSW4iXShlKTt0aGlzLnN0 b3JlKCJzbGlkZTpmbGFnIiwhYyk7YT10cnVlO2JyZWFrO2RlZmF1bHQ6Yi5zdGFy dChkLGUpfWlmKCFhKXt0aGlzLmVsaW1pbmF0ZSgic2xpZGU6ZmxhZyIpfXJldHVy biB0aGlzfX0pO3ZhciBTbW9vdGhTY3JvbGw9RnguU21vb3RoU2Nyb2xsPW5ldyBD bGFzcyh7RXh0ZW5kczpGeC5TY3JvbGwsaW5pdGlhbGl6ZTpmdW5jdGlvbihiLGMp e2M9Y3x8ZG9jdW1lbnQ7dGhpcy5kb2M9Yy5nZXREb2N1bWVudCgpO3ZhciBkPWMu Z2V0V2luZG93KCk7dGhpcy5wYXJlbnQodGhpcy5kb2MsYik7dGhpcy5saW5rcz0k JCh0aGlzLm9wdGlvbnMubGlua3N8fHRoaXMuZG9jLmxpbmtzKTt2YXIgYT1kLmxv Y2F0aW9uLmhyZWYubWF0Y2goL15bXiNdKi8pWzBdKyIjIjt0aGlzLmxpbmtzLmVh Y2goZnVuY3Rpb24oZil7aWYoZi5ocmVmLmluZGV4T2YoYSkhPTApe3JldHVybn12 YXIgZT1mLmhyZWYuc3Vic3RyKGEubGVuZ3RoKTtpZihlKXt0aGlzLnVzZUxpbmso ZixlKX19LHRoaXMpO2lmKCFCcm93c2VyLkVuZ2luZS53ZWJraXQ0MTkpe3RoaXMu YWRkRXZlbnQoImNvbXBsZXRlIixmdW5jdGlvbigpe2QubG9jYXRpb24uaGFzaD10 aGlzLmFuY2hvcn0sdHJ1ZSl9fSx1c2VMaW5rOmZ1bmN0aW9uKGMsYSl7dmFyIGI7 Yy5hZGRFdmVudCgiY2xpY2siLGZ1bmN0aW9uKGQpe2lmKGIhPT1mYWxzZSYmIWIp e2I9ZG9jdW1lbnQuaWQoYSl8fHRoaXMuZG9jLmdldEVsZW1lbnQoImFbbmFtZT0i K2ErIl0iKX1pZihiKXtkLnByZXZlbnREZWZhdWx0KCk7dGhpcy5hbmNob3I9YTt0 aGlzLnRvRWxlbWVudChiKS5jaGFpbihmdW5jdGlvbigpe3RoaXMuZmlyZUV2ZW50 KCJzY3JvbGxlZFRvIixbYyxiXSl9LmJpbmQodGhpcykpO2MuYmx1cigpfX0uYmlu ZCh0aGlzKSl9fSk7dmFyIERyYWc9bmV3IENsYXNzKHtJbXBsZW1lbnRzOltFdmVu dHMsT3B0aW9uc10sb3B0aW9uczp7c25hcDo2LHVuaXQ6InB4IixncmlkOmZhbHNl LHN0eWxlOnRydWUsbGltaXQ6ZmFsc2UsaGFuZGxlOmZhbHNlLGludmVydDpmYWxz ZSxwcmV2ZW50RGVmYXVsdDpmYWxzZSxzdG9wUHJvcGFnYXRpb246ZmFsc2UsbW9k aWZpZXJzOnt4OiJsZWZ0Iix5OiJ0b3AifX0saW5pdGlhbGl6ZTpmdW5jdGlvbigp e3ZhciBiPUFycmF5LmxpbmsoYXJndW1lbnRzLHtvcHRpb25zOk9iamVjdC50eXBl LGVsZW1lbnQ6JGRlZmluZWR9KTt0aGlzLmVsZW1lbnQ9ZG9jdW1lbnQuaWQoYi5l bGVtZW50KTt0aGlzLmRvY3VtZW50PXRoaXMuZWxlbWVudC5nZXREb2N1bWVudCgp O3RoaXMuc2V0T3B0aW9ucyhiLm9wdGlvbnN8fHt9KTt2YXIgYT0kdHlwZSh0aGlz Lm9wdGlvbnMuaGFuZGxlKTt0aGlzLmhhbmRsZXM9KChhPT0iYXJyYXkifHxhPT0i Y29sbGVjdGlvbiIpPyQkKHRoaXMub3B0aW9ucy5oYW5kbGUpOmRvY3VtZW50Lmlk KHRoaXMub3B0aW9ucy5oYW5kbGUpKXx8dGhpcy5lbGVtZW50O3RoaXMubW91c2U9 e25vdzp7fSxwb3M6e319O3RoaXMudmFsdWU9e3N0YXJ0Ont9LG5vdzp7fX07dGhp cy5zZWxlY3Rpb249KEJyb3dzZXIuRW5naW5lLnRyaWRlbnQpPyJzZWxlY3RzdGFy dCI6Im1vdXNlZG93biI7dGhpcy5ib3VuZD17c3RhcnQ6dGhpcy5zdGFydC5iaW5k KHRoaXMpLGNoZWNrOnRoaXMuY2hlY2suYmluZCh0aGlzKSxkcmFnOnRoaXMuZHJh Zy5iaW5kKHRoaXMpLHN0b3A6dGhpcy5zdG9wLmJpbmQodGhpcyksY2FuY2VsOnRo aXMuY2FuY2VsLmJpbmQodGhpcyksZXZlbnRTdG9wOiRsYW1iZGEoZmFsc2UpfTt0 aGlzLmF0dGFjaCgpfSxhdHRhY2g6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZXMuYWRk RXZlbnQoIm1vdXNlZG93biIsdGhpcy5ib3VuZC5zdGFydCk7cmV0dXJuIHRoaXN9 LGRldGFjaDpmdW5jdGlvbigpe3RoaXMuaGFuZGxlcy5yZW1vdmVFdmVudCgibW91 c2Vkb3duIix0aGlzLmJvdW5kLnN0YXJ0KTtyZXR1cm4gdGhpc30sc3RhcnQ6ZnVu Y3Rpb24oYyl7aWYoYy5yaWdodENsaWNrKXtyZXR1cm59aWYodGhpcy5vcHRpb25z LnByZXZlbnREZWZhdWx0KXtjLnByZXZlbnREZWZhdWx0KCl9aWYodGhpcy5vcHRp b25zLnN0b3BQcm9wYWdhdGlvbil7Yy5zdG9wUHJvcGFnYXRpb24oKX10aGlzLm1v dXNlLnN0YXJ0PWMucGFnZTt0aGlzLmZpcmVFdmVudCgiYmVmb3JlU3RhcnQiLHRo aXMuZWxlbWVudCk7dmFyIGE9dGhpcy5vcHRpb25zLmxpbWl0O3RoaXMubGltaXQ9 e3g6W10seTpbXX07Zm9yKHZhciBkIGluIHRoaXMub3B0aW9ucy5tb2RpZmllcnMp e2lmKCF0aGlzLm9wdGlvbnMubW9kaWZpZXJzW2RdKXtjb250aW51ZX1pZih0aGlz Lm9wdGlvbnMuc3R5bGUpe3RoaXMudmFsdWUubm93W2RdPXRoaXMuZWxlbWVudC5n ZXRTdHlsZSh0aGlzLm9wdGlvbnMubW9kaWZpZXJzW2RdKS50b0ludCgpfWVsc2V7 dGhpcy52YWx1ZS5ub3dbZF09dGhpcy5lbGVtZW50W3RoaXMub3B0aW9ucy5tb2Rp ZmllcnNbZF1dfWlmKHRoaXMub3B0aW9ucy5pbnZlcnQpe3RoaXMudmFsdWUubm93 W2RdKj0tMX10aGlzLm1vdXNlLnBvc1tkXT1jLnBhZ2VbZF0tdGhpcy52YWx1ZS5u b3dbZF07aWYoYSYmYVtkXSl7Zm9yKHZhciBiPTI7Yi0tO2Ipe2lmKCRjaGsoYVtk XVtiXSkpe3RoaXMubGltaXRbZF1bYl09JGxhbWJkYShhW2RdW2JdKSgpfX19fWlm KCR0eXBlKHRoaXMub3B0aW9ucy5ncmlkKT09Im51bWJlciIpe3RoaXMub3B0aW9u cy5ncmlkPXt4OnRoaXMub3B0aW9ucy5ncmlkLHk6dGhpcy5vcHRpb25zLmdyaWR9 fXRoaXMuZG9jdW1lbnQuYWRkRXZlbnRzKHttb3VzZW1vdmU6dGhpcy5ib3VuZC5j aGVjayxtb3VzZXVwOnRoaXMuYm91bmQuY2FuY2VsfSk7dGhpcy5kb2N1bWVudC5h ZGRFdmVudCh0aGlzLnNlbGVjdGlvbix0aGlzLmJvdW5kLmV2ZW50U3RvcCl9LGNo ZWNrOmZ1bmN0aW9uKGEpe2lmKHRoaXMub3B0aW9ucy5wcmV2ZW50RGVmYXVsdCl7 YS5wcmV2ZW50RGVmYXVsdCgpfXZhciBiPU1hdGgucm91bmQoTWF0aC5zcXJ0KE1h dGgucG93KGEucGFnZS54LXRoaXMubW91c2Uuc3RhcnQueCwyKStNYXRoLnBvdyhh LnBhZ2UueS10aGlzLm1vdXNlLnN0YXJ0LnksMikpKTtpZihiPnRoaXMub3B0aW9u cy5zbmFwKXt0aGlzLmNhbmNlbCgpO3RoaXMuZG9jdW1lbnQuYWRkRXZlbnRzKHtt b3VzZW1vdmU6dGhpcy5ib3VuZC5kcmFnLG1vdXNldXA6dGhpcy5ib3VuZC5zdG9w fSk7dGhpcy5maXJlRXZlbnQoInN0YXJ0IixbdGhpcy5lbGVtZW50LGFdKS5maXJl RXZlbnQoInNuYXAiLHRoaXMuZWxlbWVudCl9fSxkcmFnOmZ1bmN0aW9uKGEpe2lm KHRoaXMub3B0aW9ucy5wcmV2ZW50RGVmYXVsdCl7YS5wcmV2ZW50RGVmYXVsdCgp fXRoaXMubW91c2Uubm93PWEucGFnZTtmb3IodmFyIGIgaW4gdGhpcy5vcHRpb25z Lm1vZGlmaWVycyl7aWYoIXRoaXMub3B0aW9ucy5tb2RpZmllcnNbYl0pe2NvbnRp bnVlfXRoaXMudmFsdWUubm93W2JdPXRoaXMubW91c2Uubm93W2JdLXRoaXMubW91 c2UucG9zW2JdO2lmKHRoaXMub3B0aW9ucy5pbnZlcnQpe3RoaXMudmFsdWUubm93 W2JdKj0tMX1pZih0aGlzLm9wdGlvbnMubGltaXQmJnRoaXMubGltaXRbYl0pe2lm KCRjaGsodGhpcy5saW1pdFtiXVsxXSkmJih0aGlzLnZhbHVlLm5vd1tiXT50aGlz LmxpbWl0W2JdWzFdKSl7dGhpcy52YWx1ZS5ub3dbYl09dGhpcy5saW1pdFtiXVsx XX1lbHNle2lmKCRjaGsodGhpcy5saW1pdFtiXVswXSkmJih0aGlzLnZhbHVlLm5v d1tiXTx0aGlzLmxpbWl0W2JdWzBdKSl7dGhpcy52YWx1ZS5ub3dbYl09dGhpcy5s aW1pdFtiXVswXX19fWlmKHRoaXMub3B0aW9ucy5ncmlkW2JdKXt0aGlzLnZhbHVl Lm5vd1tiXS09KCh0aGlzLnZhbHVlLm5vd1tiXS0odGhpcy5saW1pdFtiXVswXXx8 MCkpJXRoaXMub3B0aW9ucy5ncmlkW2JdKX1pZih0aGlzLm9wdGlvbnMuc3R5bGUp e3RoaXMuZWxlbWVudC5zZXRTdHlsZSh0aGlzLm9wdGlvbnMubW9kaWZpZXJzW2Jd LHRoaXMudmFsdWUubm93W2JdK3RoaXMub3B0aW9ucy51bml0KX1lbHNle3RoaXMu ZWxlbWVudFt0aGlzLm9wdGlvbnMubW9kaWZpZXJzW2JdXT10aGlzLnZhbHVlLm5v d1tiXX19dGhpcy5maXJlRXZlbnQoImRyYWciLFt0aGlzLmVsZW1lbnQsYV0pfSxj YW5jZWw6ZnVuY3Rpb24oYSl7dGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudCgibW91 c2Vtb3ZlIix0aGlzLmJvdW5kLmNoZWNrKTt0aGlzLmRvY3VtZW50LnJlbW92ZUV2 ZW50KCJtb3VzZXVwIix0aGlzLmJvdW5kLmNhbmNlbCk7aWYoYSl7dGhpcy5kb2N1 bWVudC5yZW1vdmVFdmVudCh0aGlzLnNlbGVjdGlvbix0aGlzLmJvdW5kLmV2ZW50 U3RvcCk7dGhpcy5maXJlRXZlbnQoImNhbmNlbCIsdGhpcy5lbGVtZW50KX19LHN0 b3A6ZnVuY3Rpb24oYSl7dGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudCh0aGlzLnNl bGVjdGlvbix0aGlzLmJvdW5kLmV2ZW50U3RvcCk7dGhpcy5kb2N1bWVudC5yZW1v dmVFdmVudCgibW91c2Vtb3ZlIix0aGlzLmJvdW5kLmRyYWcpO3RoaXMuZG9jdW1l bnQucmVtb3ZlRXZlbnQoIm1vdXNldXAiLHRoaXMuYm91bmQuc3RvcCk7aWYoYSl7 dGhpcy5maXJlRXZlbnQoImNvbXBsZXRlIixbdGhpcy5lbGVtZW50LGFdKX19fSk7 RWxlbWVudC5pbXBsZW1lbnQoe21ha2VSZXNpemFibGU6ZnVuY3Rpb24oYSl7dmFy IGI9bmV3IERyYWcodGhpcywkbWVyZ2Uoe21vZGlmaWVyczp7eDoid2lkdGgiLHk6 ImhlaWdodCJ9fSxhKSk7dGhpcy5zdG9yZSgicmVzaXplciIsYik7cmV0dXJuIGIu YWRkRXZlbnQoImRyYWciLGZ1bmN0aW9uKCl7dGhpcy5maXJlRXZlbnQoInJlc2l6 ZSIsYil9LmJpbmQodGhpcykpfX0pO0RyYWcuTW92ZT1uZXcgQ2xhc3Moe0V4dGVu ZHM6RHJhZyxvcHRpb25zOntkcm9wcGFibGVzOltdLGNvbnRhaW5lcjpmYWxzZSxw cmVjYWxjdWxhdGU6ZmFsc2UsaW5jbHVkZU1hcmdpbnM6dHJ1ZSxjaGVja0Ryb3Bw YWJsZXM6dHJ1ZX0saW5pdGlhbGl6ZTpmdW5jdGlvbihiLGEpe3RoaXMucGFyZW50 KGIsYSk7Yj10aGlzLmVsZW1lbnQ7dGhpcy5kcm9wcGFibGVzPSQkKHRoaXMub3B0 aW9ucy5kcm9wcGFibGVzKTt0aGlzLmNvbnRhaW5lcj1kb2N1bWVudC5pZCh0aGlz Lm9wdGlvbnMuY29udGFpbmVyKTtpZih0aGlzLmNvbnRhaW5lciYmJHR5cGUodGhp cy5jb250YWluZXIpIT0iZWxlbWVudCIpe3RoaXMuY29udGFpbmVyPWRvY3VtZW50 LmlkKHRoaXMuY29udGFpbmVyLmdldERvY3VtZW50KCkuYm9keSl9dmFyIGM9Yi5n ZXRTdHlsZXMoImxlZnQiLCJyaWdodCIsInBvc2l0aW9uIik7aWYoYy5sZWZ0PT0i YXV0byJ8fGMudG9wPT0iYXV0byIpe2Iuc2V0UG9zaXRpb24oYi5nZXRQb3NpdGlv bihiLmdldE9mZnNldFBhcmVudCgpKSl9aWYoYy5wb3NpdGlvbj09InN0YXRpYyIp e2Iuc2V0U3R5bGUoInBvc2l0aW9uIiwiYWJzb2x1dGUiKX10aGlzLmFkZEV2ZW50 KCJzdGFydCIsdGhpcy5jaGVja0Ryb3BwYWJsZXMsdHJ1ZSk7dGhpcy5vdmVyZWQ9 bnVsbH0sc3RhcnQ6ZnVuY3Rpb24oYSl7aWYodGhpcy5jb250YWluZXIpe3RoaXMu b3B0aW9ucy5saW1pdD10aGlzLmNhbGN1bGF0ZUxpbWl0KCl9aWYodGhpcy5vcHRp b25zLnByZWNhbGN1bGF0ZSl7dGhpcy5wb3NpdGlvbnM9dGhpcy5kcm9wcGFibGVz Lm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYi5nZXRDb29yZGluYXRlcygpfSl9dGhp cy5wYXJlbnQoYSl9LGNhbGN1bGF0ZUxpbWl0OmZ1bmN0aW9uKCl7dmFyIGQ9dGhp cy5lbGVtZW50LmdldE9mZnNldFBhcmVudCgpLGc9dGhpcy5jb250YWluZXIuZ2V0 Q29vcmRpbmF0ZXMoZCksZj17fSxjPXt9LGI9e30saT17fSxrPXt9O1sidG9wIiwi cmlnaHQiLCJib3R0b20iLCJsZWZ0Il0uZWFjaChmdW5jdGlvbihvKXtmW29dPXRo aXMuY29udGFpbmVyLmdldFN0eWxlKCJib3JkZXItIitvKS50b0ludCgpO2Jbb109 dGhpcy5lbGVtZW50LmdldFN0eWxlKCJib3JkZXItIitvKS50b0ludCgpO2Nbb109 dGhpcy5lbGVtZW50LmdldFN0eWxlKCJtYXJnaW4tIitvKS50b0ludCgpO2lbb109 dGhpcy5jb250YWluZXIuZ2V0U3R5bGUoIm1hcmdpbi0iK28pLnRvSW50KCk7a1tv XT1kLmdldFN0eWxlKCJwYWRkaW5nLSIrbykudG9JbnQoKX0sdGhpcyk7dmFyIGU9 dGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoK2MubGVmdCtjLnJpZ2h0LG49dGhpcy5l bGVtZW50Lm9mZnNldEhlaWdodCtjLnRvcCtjLmJvdHRvbSxoPTAsaj0wLG09Zy5y aWdodC1mLnJpZ2h0LWUsYT1nLmJvdHRvbS1mLmJvdHRvbS1uO2lmKHRoaXMub3B0 aW9ucy5pbmNsdWRlTWFyZ2lucyl7aCs9Yy5sZWZ0O2orPWMudG9wfWVsc2V7bSs9 Yy5yaWdodDthKz1jLmJvdHRvbX1pZih0aGlzLmVsZW1lbnQuZ2V0U3R5bGUoInBv c2l0aW9uIik9PSJyZWxhdGl2ZSIpe3ZhciBsPXRoaXMuZWxlbWVudC5nZXRDb29y ZGluYXRlcyhkKTtsLmxlZnQtPXRoaXMuZWxlbWVudC5nZXRTdHlsZSgibGVmdCIp LnRvSW50KCk7bC50b3AtPXRoaXMuZWxlbWVudC5nZXRTdHlsZSgidG9wIikudG9J bnQoKTtoKz1mLmxlZnQtbC5sZWZ0O2orPWYudG9wLWwudG9wO20rPWMubGVmdC1s LmxlZnQ7YSs9Yy50b3AtbC50b3A7aWYodGhpcy5jb250YWluZXIhPWQpe2grPWku bGVmdCtrLmxlZnQ7ais9KEJyb3dzZXIuRW5naW5lLnRyaWRlbnQ0PzA6aS50b3Ap K2sudG9wfX1lbHNle2gtPWMubGVmdDtqLT1jLnRvcDtpZih0aGlzLmNvbnRhaW5l cj09ZCl7bS09Zi5sZWZ0O2EtPWYudG9wfWVsc2V7aCs9Zy5sZWZ0K2YubGVmdDtq Kz1nLnRvcCtmLnRvcH19cmV0dXJue3g6W2gsbV0seTpbaixhXX19LGNoZWNrQWdh aW5zdDpmdW5jdGlvbihjLGIpe2M9KHRoaXMucG9zaXRpb25zKT90aGlzLnBvc2l0 aW9uc1tiXTpjLmdldENvb3JkaW5hdGVzKCk7dmFyIGE9dGhpcy5tb3VzZS5ub3c7 cmV0dXJuKGEueD5jLmxlZnQmJmEueDxjLnJpZ2h0JiZhLnk8Yy5ib3R0b20mJmEu eT5jLnRvcCl9LGNoZWNrRHJvcHBhYmxlczpmdW5jdGlvbigpe3ZhciBhPXRoaXMu ZHJvcHBhYmxlcy5maWx0ZXIodGhpcy5jaGVja0FnYWluc3QsdGhpcykuZ2V0TGFz dCgpO2lmKHRoaXMub3ZlcmVkIT1hKXtpZih0aGlzLm92ZXJlZCl7dGhpcy5maXJl RXZlbnQoImxlYXZlIixbdGhpcy5lbGVtZW50LHRoaXMub3ZlcmVkXSl9aWYoYSl7 dGhpcy5maXJlRXZlbnQoImVudGVyIixbdGhpcy5lbGVtZW50LGFdKX10aGlzLm92 ZXJlZD1hfX0sZHJhZzpmdW5jdGlvbihhKXt0aGlzLnBhcmVudChhKTtpZih0aGlz Lm9wdGlvbnMuY2hlY2tEcm9wcGFibGVzJiZ0aGlzLmRyb3BwYWJsZXMubGVuZ3Ro KXt0aGlzLmNoZWNrRHJvcHBhYmxlcygpfX0sc3RvcDpmdW5jdGlvbihhKXt0aGlz LmNoZWNrRHJvcHBhYmxlcygpO3RoaXMuZmlyZUV2ZW50KCJkcm9wIixbdGhpcy5l bGVtZW50LHRoaXMub3ZlcmVkLGFdKTt0aGlzLm92ZXJlZD1udWxsO3JldHVybiB0 aGlzLnBhcmVudChhKX19KTtFbGVtZW50LmltcGxlbWVudCh7bWFrZURyYWdnYWJs ZTpmdW5jdGlvbihhKXt2YXIgYj1uZXcgRHJhZy5Nb3ZlKHRoaXMsYSk7dGhpcy5z dG9yZSgiZHJhZ2dlciIsYik7cmV0dXJuIGJ9fSk7Q2xhc3MuTXV0YXRvcnMuQmlu ZHM9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9O0NsYXNzLk11dGF0b3JzLmluaXRpYWxp emU9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7JHNwbGF0KHRoaXMuQmlu ZHMpLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9dGhpc1tiXTtpZihjKXt0aGlzW2Jd PWMuYmluZCh0aGlzKX19LHRoaXMpO3JldHVybiBhLmFwcGx5KHRoaXMsYXJndW1l bnRzKX19O0VsZW1lbnQuaW1wbGVtZW50KHttZWFzdXJlOmZ1bmN0aW9uKGUpe3Zh ciBnPWZ1bmN0aW9uKGgpe3JldHVybiAhISghaHx8aC5vZmZzZXRIZWlnaHR8fGgu b2Zmc2V0V2lkdGgpfTtpZihnKHRoaXMpKXtyZXR1cm4gZS5hcHBseSh0aGlzKX12 YXIgZD10aGlzLmdldFBhcmVudCgpLGY9W10sYj1bXTt3aGlsZSghZyhkKSYmZCE9 ZG9jdW1lbnQuYm9keSl7Yi5wdXNoKGQuZXhwb3NlKCkpO2Q9ZC5nZXRQYXJlbnQo KX12YXIgYz10aGlzLmV4cG9zZSgpO3ZhciBhPWUuYXBwbHkodGhpcyk7YygpO2Iu ZWFjaChmdW5jdGlvbihoKXtoKCl9KTtyZXR1cm4gYX0sZXhwb3NlOmZ1bmN0aW9u KCl7aWYodGhpcy5nZXRTdHlsZSgiZGlzcGxheSIpIT0ibm9uZSIpe3JldHVybiAk ZW1wdHl9dmFyIGE9dGhpcy5zdHlsZS5jc3NUZXh0O3RoaXMuc2V0U3R5bGVzKHtk aXNwbGF5OiJibG9jayIscG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJo aWRkZW4ifSk7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5jc3NUZXh0PWF9 LmJpbmQodGhpcyl9LGdldERpbWVuc2lvbnM6ZnVuY3Rpb24oYSl7YT0kbWVyZ2Uo e2NvbXB1dGVTaXplOmZhbHNlfSxhKTt2YXIgZj17fTt2YXIgZD1mdW5jdGlvbihn LGUpe3JldHVybihlLmNvbXB1dGVTaXplKT9nLmdldENvbXB1dGVkU2l6ZShlKTpn LmdldFNpemUoKX07dmFyIGI9dGhpcy5nZXRQYXJlbnQoImJvZHkiKTtpZihiJiZ0 aGlzLmdldFN0eWxlKCJkaXNwbGF5Iik9PSJub25lIil7Zj10aGlzLm1lYXN1cmUo ZnVuY3Rpb24oKXtyZXR1cm4gZCh0aGlzLGEpfSl9ZWxzZXtpZihiKXt0cnl7Zj1k KHRoaXMsYSl9Y2F0Y2goYyl7fX1lbHNle2Y9e3g6MCx5OjB9fX1yZXR1cm4gJGNo ayhmLngpPyRleHRlbmQoZix7d2lkdGg6Zi54LGhlaWdodDpmLnl9KTokZXh0ZW5k KGYse3g6Zi53aWR0aCx5OmYuaGVpZ2h0fSl9LGdldENvbXB1dGVkU2l6ZTpmdW5j dGlvbihhKXthPSRtZXJnZSh7c3R5bGVzOlsicGFkZGluZyIsImJvcmRlciJdLHBs YWluczp7aGVpZ2h0OlsidG9wIiwiYm90dG9tIl0sd2lkdGg6WyJsZWZ0Iiwicmln aHQiXX0sbW9kZToiYm90aCJ9LGEpO3ZhciBjPXt3aWR0aDowLGhlaWdodDowfTtz d2l0Y2goYS5tb2RlKXtjYXNlInZlcnRpY2FsIjpkZWxldGUgYy53aWR0aDtkZWxl dGUgYS5wbGFpbnMud2lkdGg7YnJlYWs7Y2FzZSJob3Jpem9udGFsIjpkZWxldGUg Yy5oZWlnaHQ7ZGVsZXRlIGEucGxhaW5zLmhlaWdodDticmVha312YXIgYj1bXTsk ZWFjaChhLnBsYWlucyxmdW5jdGlvbihnLGYpe2cuZWFjaChmdW5jdGlvbihoKXth LnN0eWxlcy5lYWNoKGZ1bmN0aW9uKGkpe2IucHVzaCgoaT09ImJvcmRlciIpP2kr Ii0iK2grIi13aWR0aCI6aSsiLSIraCl9KX0pfSk7dmFyIGU9e307Yi5lYWNoKGZ1 bmN0aW9uKGYpe2VbZl09dGhpcy5nZXRDb21wdXRlZFN0eWxlKGYpfSx0aGlzKTt2 YXIgZD1bXTskZWFjaChhLnBsYWlucyxmdW5jdGlvbihnLGYpe3ZhciBoPWYuY2Fw aXRhbGl6ZSgpO2NbInRvdGFsIitoXT1jWyJjb21wdXRlZCIraF09MDtnLmVhY2go ZnVuY3Rpb24oaSl7Y1siY29tcHV0ZWQiK2kuY2FwaXRhbGl6ZSgpXT0wO2IuZWFj aChmdW5jdGlvbihrLGope2lmKGsudGVzdChpKSl7ZVtrXT1lW2tdLnRvSW50KCl8 fDA7Y1sidG90YWwiK2hdPWNbInRvdGFsIitoXStlW2tdO2NbImNvbXB1dGVkIitp LmNhcGl0YWxpemUoKV09Y1siY29tcHV0ZWQiK2kuY2FwaXRhbGl6ZSgpXStlW2td fWlmKGsudGVzdChpKSYmZiE9ayYmKGsudGVzdCgiYm9yZGVyIil8fGsudGVzdCgi cGFkZGluZyIpKSYmIWQuY29udGFpbnMoaykpe2QucHVzaChrKTtjWyJjb21wdXRl ZCIraF09Y1siY29tcHV0ZWQiK2hdLWVba119fSl9KX0pO1siV2lkdGgiLCJIZWln aHQiXS5lYWNoKGZ1bmN0aW9uKGcpe3ZhciBmPWcudG9Mb3dlckNhc2UoKTtpZigh JGNoayhjW2ZdKSl7cmV0dXJufWNbZl09Y1tmXSt0aGlzWyJvZmZzZXQiK2ddK2Nb ImNvbXB1dGVkIitnXTtjWyJ0b3RhbCIrZ109Y1tmXStjWyJ0b3RhbCIrZ107ZGVs ZXRlIGNbImNvbXB1dGVkIitnXX0sdGhpcyk7cmV0dXJuICRleHRlbmQoZSxjKX19 KTt2YXIgU2xpZGVyPW5ldyBDbGFzcyh7SW1wbGVtZW50czpbRXZlbnRzLE9wdGlv bnNdLEJpbmRzOlsiY2xpY2tlZEVsZW1lbnQiLCJkcmFnZ2VkS25vYiIsInNjcm9s bGVkRWxlbWVudCJdLG9wdGlvbnM6e29uVGljazpmdW5jdGlvbihhKXtpZih0aGlz Lm9wdGlvbnMuc25hcCl7YT10aGlzLnRvUG9zaXRpb24odGhpcy5zdGVwKX10aGlz Lmtub2Iuc2V0U3R5bGUodGhpcy5wcm9wZXJ0eSxhKX0saW5pdGlhbFN0ZXA6MCxz bmFwOmZhbHNlLG9mZnNldDowLHJhbmdlOmZhbHNlLHdoZWVsOmZhbHNlLHN0ZXBz OjEwMCxtb2RlOiJob3Jpem9udGFsIn0saW5pdGlhbGl6ZTpmdW5jdGlvbihmLGEs ZSl7dGhpcy5zZXRPcHRpb25zKGUpO3RoaXMuZWxlbWVudD1kb2N1bWVudC5pZChm KTt0aGlzLmtub2I9ZG9jdW1lbnQuaWQoYSk7dGhpcy5wcmV2aW91c0NoYW5nZT10 aGlzLnByZXZpb3VzRW5kPXRoaXMuc3RlcD0tMTt2YXIgZyxiPXt9LGQ9e3g6ZmFs c2UseTpmYWxzZX07c3dpdGNoKHRoaXMub3B0aW9ucy5tb2RlKXtjYXNlInZlcnRp Y2FsIjp0aGlzLmF4aXM9InkiO3RoaXMucHJvcGVydHk9InRvcCI7Zz0ib2Zmc2V0 SGVpZ2h0IjticmVhaztjYXNlImhvcml6b250YWwiOnRoaXMuYXhpcz0ieCI7dGhp cy5wcm9wZXJ0eT0ibGVmdCI7Zz0ib2Zmc2V0V2lkdGgifXRoaXMuZnVsbD10aGlz LmVsZW1lbnQubWVhc3VyZShmdW5jdGlvbigpe3RoaXMuaGFsZj10aGlzLmtub2Jb Z10vMjtyZXR1cm4gdGhpcy5lbGVtZW50W2ddLXRoaXMua25vYltnXSsodGhpcy5v cHRpb25zLm9mZnNldCoyKX0uYmluZCh0aGlzKSk7dGhpcy5taW49JGNoayh0aGlz Lm9wdGlvbnMucmFuZ2VbMF0pP3RoaXMub3B0aW9ucy5yYW5nZVswXTowO3RoaXMu bWF4PSRjaGsodGhpcy5vcHRpb25zLnJhbmdlWzFdKT90aGlzLm9wdGlvbnMucmFu Z2VbMV06dGhpcy5vcHRpb25zLnN0ZXBzO3RoaXMucmFuZ2U9dGhpcy5tYXgtdGhp cy5taW47dGhpcy5zdGVwcz10aGlzLm9wdGlvbnMuc3RlcHN8fHRoaXMuZnVsbDt0 aGlzLnN0ZXBTaXplPU1hdGguYWJzKHRoaXMucmFuZ2UpL3RoaXMuc3RlcHM7dGhp cy5zdGVwV2lkdGg9dGhpcy5zdGVwU2l6ZSp0aGlzLmZ1bGwvTWF0aC5hYnModGhp cy5yYW5nZSk7dGhpcy5rbm9iLnNldFN0eWxlKCJwb3NpdGlvbiIsInJlbGF0aXZl Iikuc2V0U3R5bGUodGhpcy5wcm9wZXJ0eSx0aGlzLm9wdGlvbnMuaW5pdGlhbFN0 ZXA/dGhpcy50b1Bvc2l0aW9uKHRoaXMub3B0aW9ucy5pbml0aWFsU3RlcCk6LXRo aXMub3B0aW9ucy5vZmZzZXQpO2RbdGhpcy5heGlzXT10aGlzLnByb3BlcnR5O2Jb dGhpcy5heGlzXT1bLXRoaXMub3B0aW9ucy5vZmZzZXQsdGhpcy5mdWxsLXRoaXMu b3B0aW9ucy5vZmZzZXRdO3ZhciBjPXtzbmFwOjAsbGltaXQ6Yixtb2RpZmllcnM6 ZCxvbkRyYWc6dGhpcy5kcmFnZ2VkS25vYixvblN0YXJ0OnRoaXMuZHJhZ2dlZEtu b2Isb25CZWZvcmVTdGFydDooZnVuY3Rpb24oKXt0aGlzLmlzRHJhZ2dpbmc9dHJ1 ZX0pLmJpbmQodGhpcyksb25DYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLmlzRHJhZ2dp bmc9ZmFsc2V9LmJpbmQodGhpcyksb25Db21wbGV0ZTpmdW5jdGlvbigpe3RoaXMu aXNEcmFnZ2luZz1mYWxzZTt0aGlzLmRyYWdnZWRLbm9iKCk7dGhpcy5lbmQoKX0u YmluZCh0aGlzKX07aWYodGhpcy5vcHRpb25zLnNuYXApe2MuZ3JpZD1NYXRoLmNl aWwodGhpcy5zdGVwV2lkdGgpO2MubGltaXRbdGhpcy5heGlzXVsxXT10aGlzLmZ1 bGx9dGhpcy5kcmFnPW5ldyBEcmFnKHRoaXMua25vYixjKTt0aGlzLmF0dGFjaCgp fSxhdHRhY2g6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuYWRkRXZlbnQoIm1vdXNl ZG93biIsdGhpcy5jbGlja2VkRWxlbWVudCk7aWYodGhpcy5vcHRpb25zLndoZWVs KXt0aGlzLmVsZW1lbnQuYWRkRXZlbnQoIm1vdXNld2hlZWwiLHRoaXMuc2Nyb2xs ZWRFbGVtZW50KX10aGlzLmRyYWcuYXR0YWNoKCk7cmV0dXJuIHRoaXN9LGRldGFj aDpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5yZW1vdmVFdmVudCgibW91c2Vkb3du Iix0aGlzLmNsaWNrZWRFbGVtZW50KTt0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnQo Im1vdXNld2hlZWwiLHRoaXMuc2Nyb2xsZWRFbGVtZW50KTt0aGlzLmRyYWcuZGV0 YWNoKCk7cmV0dXJuIHRoaXN9LHNldDpmdW5jdGlvbihhKXtpZighKCh0aGlzLnJh bmdlPjApXihhPHRoaXMubWluKSkpe2E9dGhpcy5taW59aWYoISgodGhpcy5yYW5n ZT4wKV4oYT50aGlzLm1heCkpKXthPXRoaXMubWF4fXRoaXMuc3RlcD1NYXRoLnJv dW5kKGEpO3RoaXMuY2hlY2tTdGVwKCk7dGhpcy5maXJlRXZlbnQoInRpY2siLHRo aXMudG9Qb3NpdGlvbih0aGlzLnN0ZXApKTt0aGlzLmVuZCgpO3JldHVybiB0aGlz fSxjbGlja2VkRWxlbWVudDpmdW5jdGlvbihjKXtpZih0aGlzLmlzRHJhZ2dpbmd8 fGMudGFyZ2V0PT10aGlzLmtub2Ipe3JldHVybn12YXIgYj10aGlzLnJhbmdlPDA/ LTE6MTt2YXIgYT1jLnBhZ2VbdGhpcy5heGlzXS10aGlzLmVsZW1lbnQuZ2V0UG9z aXRpb24oKVt0aGlzLmF4aXNdLXRoaXMuaGFsZjthPWEubGltaXQoLXRoaXMub3B0 aW9ucy5vZmZzZXQsdGhpcy5mdWxsLXRoaXMub3B0aW9ucy5vZmZzZXQpO3RoaXMu c3RlcD1NYXRoLnJvdW5kKHRoaXMubWluK2IqdGhpcy50b1N0ZXAoYSkpO3RoaXMu Y2hlY2tTdGVwKCk7dGhpcy5maXJlRXZlbnQoInRpY2siLGEpO3RoaXMuZW5kKCl9 LHNjcm9sbGVkRWxlbWVudDpmdW5jdGlvbihhKXt2YXIgYj0odGhpcy5vcHRpb25z Lm1vZGU9PSJob3Jpem9udGFsIik/KGEud2hlZWw8MCk6KGEud2hlZWw+MCk7dGhp cy5zZXQoYj90aGlzLnN0ZXAtdGhpcy5zdGVwU2l6ZTp0aGlzLnN0ZXArdGhpcy5z dGVwU2l6ZSk7YS5zdG9wKCl9LGRyYWdnZWRLbm9iOmZ1bmN0aW9uKCl7dmFyIGI9 dGhpcy5yYW5nZTwwPy0xOjE7dmFyIGE9dGhpcy5kcmFnLnZhbHVlLm5vd1t0aGlz LmF4aXNdO2E9YS5saW1pdCgtdGhpcy5vcHRpb25zLm9mZnNldCx0aGlzLmZ1bGwt dGhpcy5vcHRpb25zLm9mZnNldCk7dGhpcy5zdGVwPU1hdGgucm91bmQodGhpcy5t aW4rYip0aGlzLnRvU3RlcChhKSk7dGhpcy5jaGVja1N0ZXAoKX0sY2hlY2tTdGVw OmZ1bmN0aW9uKCl7aWYodGhpcy5wcmV2aW91c0NoYW5nZSE9dGhpcy5zdGVwKXt0 aGlzLnByZXZpb3VzQ2hhbmdlPXRoaXMuc3RlcDt0aGlzLmZpcmVFdmVudCgiY2hh bmdlIix0aGlzLnN0ZXApfX0sZW5kOmZ1bmN0aW9uKCl7aWYodGhpcy5wcmV2aW91 c0VuZCE9PXRoaXMuc3RlcCl7dGhpcy5wcmV2aW91c0VuZD10aGlzLnN0ZXA7dGhp cy5maXJlRXZlbnQoImNvbXBsZXRlIix0aGlzLnN0ZXArIiIpfX0sdG9TdGVwOmZ1 bmN0aW9uKGEpe3ZhciBiPShhK3RoaXMub3B0aW9ucy5vZmZzZXQpKnRoaXMuc3Rl cFNpemUvdGhpcy5mdWxsKnRoaXMuc3RlcHM7cmV0dXJuIHRoaXMub3B0aW9ucy5z dGVwcz9NYXRoLnJvdW5kKGItPWIldGhpcy5zdGVwU2l6ZSk6Yn0sdG9Qb3NpdGlv bjpmdW5jdGlvbihhKXtyZXR1cm4odGhpcy5mdWxsKk1hdGguYWJzKHRoaXMubWlu LWEpKS8odGhpcy5zdGVwcyp0aGlzLnN0ZXBTaXplKS10aGlzLm9wdGlvbnMub2Zm c2V0fX0pO3ZhciBTb3J0YWJsZXM9bmV3IENsYXNzKHtJbXBsZW1lbnRzOltFdmVu dHMsT3B0aW9uc10sb3B0aW9uczp7c25hcDo0LG9wYWNpdHk6MSxjbG9uZTpmYWxz ZSxyZXZlcnQ6ZmFsc2UsaGFuZGxlOmZhbHNlLGNvbnN0cmFpbjpmYWxzZX0saW5p dGlhbGl6ZTpmdW5jdGlvbihhLGIpe3RoaXMuc2V0T3B0aW9ucyhiKTt0aGlzLmVs ZW1lbnRzPVtdO3RoaXMubGlzdHM9W107dGhpcy5pZGxlPXRydWU7dGhpcy5hZGRM aXN0cygkJChkb2N1bWVudC5pZChhKXx8YSkpO2lmKCF0aGlzLm9wdGlvbnMuY2xv bmUpe3RoaXMub3B0aW9ucy5yZXZlcnQ9ZmFsc2V9aWYodGhpcy5vcHRpb25zLnJl dmVydCl7dGhpcy5lZmZlY3Q9bmV3IEZ4Lk1vcnBoKG51bGwsJG1lcmdlKHtkdXJh dGlvbjoyNTAsbGluazoiY2FuY2VsIn0sdGhpcy5vcHRpb25zLnJldmVydCkpfX0s YXR0YWNoOmZ1bmN0aW9uKCl7dGhpcy5hZGRMaXN0cyh0aGlzLmxpc3RzKTtyZXR1 cm4gdGhpc30sZGV0YWNoOmZ1bmN0aW9uKCl7dGhpcy5saXN0cz10aGlzLnJlbW92 ZUxpc3RzKHRoaXMubGlzdHMpO3JldHVybiB0aGlzfSxhZGRJdGVtczpmdW5jdGlv bigpe0FycmF5LmZsYXR0ZW4oYXJndW1lbnRzKS5lYWNoKGZ1bmN0aW9uKGEpe3Ro aXMuZWxlbWVudHMucHVzaChhKTt2YXIgYj1hLnJldHJpZXZlKCJzb3J0YWJsZXM6 c3RhcnQiLHRoaXMuc3RhcnQuYmluZFdpdGhFdmVudCh0aGlzLGEpKTsodGhpcy5v cHRpb25zLmhhbmRsZT9hLmdldEVsZW1lbnQodGhpcy5vcHRpb25zLmhhbmRsZSl8 fGE6YSkuYWRkRXZlbnQoIm1vdXNlZG93biIsYil9LHRoaXMpO3JldHVybiB0aGlz fSxhZGRMaXN0czpmdW5jdGlvbigpe0FycmF5LmZsYXR0ZW4oYXJndW1lbnRzKS5l YWNoKGZ1bmN0aW9uKGEpe3RoaXMubGlzdHMucHVzaChhKTt0aGlzLmFkZEl0ZW1z KGEuZ2V0Q2hpbGRyZW4oKSl9LHRoaXMpO3JldHVybiB0aGlzfSxyZW1vdmVJdGVt czpmdW5jdGlvbigpe3JldHVybiAkJChBcnJheS5mbGF0dGVuKGFyZ3VtZW50cyku bWFwKGZ1bmN0aW9uKGEpe3RoaXMuZWxlbWVudHMuZXJhc2UoYSk7dmFyIGI9YS5y ZXRyaWV2ZSgic29ydGFibGVzOnN0YXJ0Iik7KHRoaXMub3B0aW9ucy5oYW5kbGU/ YS5nZXRFbGVtZW50KHRoaXMub3B0aW9ucy5oYW5kbGUpfHxhOmEpLnJlbW92ZUV2 ZW50KCJtb3VzZWRvd24iLGIpO3JldHVybiBhfSx0aGlzKSl9LHJlbW92ZUxpc3Rz OmZ1bmN0aW9uKCl7cmV0dXJuICQkKEFycmF5LmZsYXR0ZW4oYXJndW1lbnRzKS5t YXAoZnVuY3Rpb24oYSl7dGhpcy5saXN0cy5lcmFzZShhKTt0aGlzLnJlbW92ZUl0 ZW1zKGEuZ2V0Q2hpbGRyZW4oKSk7cmV0dXJuIGF9LHRoaXMpKX0sZ2V0Q2xvbmU6 ZnVuY3Rpb24oYixhKXtpZighdGhpcy5vcHRpb25zLmNsb25lKXtyZXR1cm4gbmV3 IEVsZW1lbnQoImRpdiIpLmluamVjdChkb2N1bWVudC5ib2R5KX1pZigkdHlwZSh0 aGlzLm9wdGlvbnMuY2xvbmUpPT0iZnVuY3Rpb24iKXtyZXR1cm4gdGhpcy5vcHRp b25zLmNsb25lLmNhbGwodGhpcyxiLGEsdGhpcy5saXN0KX1yZXR1cm4gYS5jbG9u ZSh0cnVlKS5zZXRTdHlsZXMoe21hcmdpbjoiMHB4Iixwb3NpdGlvbjoiYWJzb2x1 dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsd2lkdGg6YS5nZXRTdHlsZSgid2lkdGgi KX0pLmluamVjdCh0aGlzLmxpc3QpLnNldFBvc2l0aW9uKGEuZ2V0UG9zaXRpb24o YS5nZXRPZmZzZXRQYXJlbnQoKSkpfSxnZXREcm9wcGFibGVzOmZ1bmN0aW9uKCl7 dmFyIGE9dGhpcy5saXN0LmdldENoaWxkcmVuKCk7aWYoIXRoaXMub3B0aW9ucy5j b25zdHJhaW4pe2E9dGhpcy5saXN0cy5jb25jYXQoYSkuZXJhc2UodGhpcy5saXN0 KX1yZXR1cm4gYS5lcmFzZSh0aGlzLmNsb25lKS5lcmFzZSh0aGlzLmVsZW1lbnQp fSxpbnNlcnQ6ZnVuY3Rpb24oYyxiKXt2YXIgYT0iaW5zaWRlIjtpZih0aGlzLmxp c3RzLmNvbnRhaW5zKGIpKXt0aGlzLmxpc3Q9Yjt0aGlzLmRyYWcuZHJvcHBhYmxl cz10aGlzLmdldERyb3BwYWJsZXMoKX1lbHNle2E9dGhpcy5lbGVtZW50LmdldEFs bFByZXZpb3VzKCkuY29udGFpbnMoYik/ImJlZm9yZSI6ImFmdGVyIn10aGlzLmVs ZW1lbnQuaW5qZWN0KGIsYSk7dGhpcy5maXJlRXZlbnQoInNvcnQiLFt0aGlzLmVs ZW1lbnQsdGhpcy5jbG9uZV0pfSxzdGFydDpmdW5jdGlvbihiLGEpe2lmKCF0aGlz LmlkbGUpe3JldHVybn10aGlzLmlkbGU9ZmFsc2U7dGhpcy5lbGVtZW50PWE7dGhp cy5vcGFjaXR5PWEuZ2V0KCJvcGFjaXR5Iik7dGhpcy5saXN0PWEuZ2V0UGFyZW50 KCk7dGhpcy5jbG9uZT10aGlzLmdldENsb25lKGIsYSk7dGhpcy5kcmFnPW5ldyBE cmFnLk1vdmUodGhpcy5jbG9uZSx7c25hcDp0aGlzLm9wdGlvbnMuc25hcCxjb250 YWluZXI6dGhpcy5vcHRpb25zLmNvbnN0cmFpbiYmdGhpcy5lbGVtZW50LmdldFBh cmVudCgpLGRyb3BwYWJsZXM6dGhpcy5nZXREcm9wcGFibGVzKCksb25TbmFwOmZ1 bmN0aW9uKCl7Yi5zdG9wKCk7dGhpcy5jbG9uZS5zZXRTdHlsZSgidmlzaWJpbGl0 eSIsInZpc2libGUiKTt0aGlzLmVsZW1lbnQuc2V0KCJvcGFjaXR5Iix0aGlzLm9w dGlvbnMub3BhY2l0eXx8MCk7dGhpcy5maXJlRXZlbnQoInN0YXJ0IixbdGhpcy5l bGVtZW50LHRoaXMuY2xvbmVdKX0uYmluZCh0aGlzKSxvbkVudGVyOnRoaXMuaW5z ZXJ0LmJpbmQodGhpcyksb25DYW5jZWw6dGhpcy5yZXNldC5iaW5kKHRoaXMpLG9u Q29tcGxldGU6dGhpcy5lbmQuYmluZCh0aGlzKX0pO3RoaXMuY2xvbmUuaW5qZWN0 KHRoaXMuZWxlbWVudCwiYmVmb3JlIik7dGhpcy5kcmFnLnN0YXJ0KGIpfSxlbmQ6 ZnVuY3Rpb24oKXt0aGlzLmRyYWcuZGV0YWNoKCk7dGhpcy5lbGVtZW50LnNldCgi b3BhY2l0eSIsdGhpcy5vcGFjaXR5KTtpZih0aGlzLmVmZmVjdCl7dmFyIGE9dGhp cy5lbGVtZW50LmdldFN0eWxlcygid2lkdGgiLCJoZWlnaHQiKTt2YXIgYj10aGlz LmNsb25lLmNvbXB1dGVQb3NpdGlvbih0aGlzLmVsZW1lbnQuZ2V0UG9zaXRpb24o dGhpcy5jbG9uZS5vZmZzZXRQYXJlbnQpKTt0aGlzLmVmZmVjdC5lbGVtZW50PXRo aXMuY2xvbmU7dGhpcy5lZmZlY3Quc3RhcnQoe3RvcDpiLnRvcCxsZWZ0OmIubGVm dCx3aWR0aDphLndpZHRoLGhlaWdodDphLmhlaWdodCxvcGFjaXR5OjAuMjV9KS5j aGFpbih0aGlzLnJlc2V0LmJpbmQodGhpcykpfWVsc2V7dGhpcy5yZXNldCgpfX0s cmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmlkbGU9dHJ1ZTt0aGlzLmNsb25lLmRlc3Ry b3koKTt0aGlzLmZpcmVFdmVudCgiY29tcGxldGUiLHRoaXMuZWxlbWVudCl9LHNl cmlhbGl6ZTpmdW5jdGlvbigpe3ZhciBjPUFycmF5LmxpbmsoYXJndW1lbnRzLHtt b2RpZmllcjpGdW5jdGlvbi50eXBlLGluZGV4OiRkZWZpbmVkfSk7dmFyIGI9dGhp cy5saXN0cy5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGQuZ2V0Q2hpbGRyZW4oKS5t YXAoYy5tb2RpZmllcnx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0KCJpZCIpfSx0 aGlzKX0sdGhpcyk7dmFyIGE9Yy5pbmRleDtpZih0aGlzLmxpc3RzLmxlbmd0aD09 MSl7YT0wfXJldHVybiAkY2hrKGEpJiZhPj0wJiZhPHRoaXMubGlzdHMubGVuZ3Ro P2JbYV06Yn19KTt2YXIgQ29sb3I9bmV3IE5hdGl2ZSh7aW5pdGlhbGl6ZTpmdW5j dGlvbihiLGMpe2lmKGFyZ3VtZW50cy5sZW5ndGg+PTMpe2M9InJnYiI7Yj1BcnJh eS5zbGljZShhcmd1bWVudHMsMCwzKX1lbHNle2lmKHR5cGVvZiBiPT0ic3RyaW5n Iil7aWYoYi5tYXRjaCgvcmdiLykpe2I9Yi5yZ2JUb0hleCgpLmhleFRvUmdiKHRy dWUpfWVsc2V7aWYoYi5tYXRjaCgvaHNiLykpe2I9Yi5oc2JUb1JnYigpfWVsc2V7 Yj1iLmhleFRvUmdiKHRydWUpfX19fWM9Y3x8InJnYiI7c3dpdGNoKGMpe2Nhc2Ui aHNiIjp2YXIgYT1iO2I9Yi5oc2JUb1JnYigpO2IuaHNiPWE7YnJlYWs7Y2FzZSJo ZXgiOmI9Yi5oZXhUb1JnYih0cnVlKTticmVha31iLnJnYj1iLnNsaWNlKDAsMyk7 Yi5oc2I9Yi5oc2J8fGIucmdiVG9Ic2IoKTtiLmhleD1iLnJnYlRvSGV4KCk7cmV0 dXJuICRleHRlbmQoYix0aGlzKX19KTtDb2xvci5pbXBsZW1lbnQoe21peDpmdW5j dGlvbigpe3ZhciBhPUFycmF5LnNsaWNlKGFyZ3VtZW50cyk7dmFyIGM9KCR0eXBl KGEuZ2V0TGFzdCgpKT09Im51bWJlciIpP2EucG9wKCk6NTA7dmFyIGI9dGhpcy5z bGljZSgpO2EuZWFjaChmdW5jdGlvbihkKXtkPW5ldyBDb2xvcihkKTtmb3IodmFy IGU9MDtlPDM7ZSsrKXtiW2VdPU1hdGgucm91bmQoKGJbZV0vMTAwKigxMDAtYykp KyhkW2VdLzEwMCpjKSl9fSk7cmV0dXJuIG5ldyBDb2xvcihiLCJyZ2IiKX0saW52 ZXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDb2xvcih0aGlzLm1hcChmdW5jdGlv bihhKXtyZXR1cm4gMjU1LWF9KSl9LHNldEh1ZTpmdW5jdGlvbihhKXtyZXR1cm4g bmV3IENvbG9yKFthLHRoaXMuaHNiWzFdLHRoaXMuaHNiWzJdXSwiaHNiIil9LHNl dFNhdHVyYXRpb246ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBDb2xvcihbdGhpcy5o c2JbMF0sYSx0aGlzLmhzYlsyXV0sImhzYiIpfSxzZXRCcmlnaHRuZXNzOmZ1bmN0 aW9uKGEpe3JldHVybiBuZXcgQ29sb3IoW3RoaXMuaHNiWzBdLHRoaXMuaHNiWzFd LGFdLCJoc2IiKX19KTt2YXIgJFJHQj1mdW5jdGlvbihkLGMsYSl7cmV0dXJuIG5l dyBDb2xvcihbZCxjLGFdLCJyZ2IiKX07dmFyICRIU0I9ZnVuY3Rpb24oZCxjLGEp e3JldHVybiBuZXcgQ29sb3IoW2QsYyxhXSwiaHNiIil9O3ZhciAkSEVYPWZ1bmN0 aW9uKGEpe3JldHVybiBuZXcgQ29sb3IoYSwiaGV4Iil9O0FycmF5LmltcGxlbWVu dCh7cmdiVG9Ic2I6ZnVuY3Rpb24oKXt2YXIgYj10aGlzWzBdLGM9dGhpc1sxXSxq PXRoaXNbMl0sZz0wO3ZhciBpPU1hdGgubWF4KGIsYyxqKSxlPU1hdGgubWluKGIs YyxqKTt2YXIgaz1pLWU7dmFyIGg9aS8yNTUsZj0oaSE9MCk/ay9pOjA7aWYoZiE9 MCl7dmFyIGQ9KGktYikvazt2YXIgYT0oaS1jKS9rO3ZhciBsPShpLWopL2s7aWYo Yj09aSl7Zz1sLWF9ZWxzZXtpZihjPT1pKXtnPTIrZC1sfWVsc2V7Zz00K2EtZH19 Zy89NjtpZihnPDApe2crK319cmV0dXJuW01hdGgucm91bmQoZyozNjApLE1hdGgu cm91bmQoZioxMDApLE1hdGgucm91bmQoaCoxMDApXX0saHNiVG9SZ2I6ZnVuY3Rp b24oKXt2YXIgYz1NYXRoLnJvdW5kKHRoaXNbMl0vMTAwKjI1NSk7aWYodGhpc1sx XT09MCl7cmV0dXJuW2MsYyxjXX1lbHNle3ZhciBhPXRoaXNbMF0lMzYwO3ZhciBl PWElNjA7dmFyIGc9TWF0aC5yb3VuZCgodGhpc1syXSooMTAwLXRoaXNbMV0pKS8x MDAwMCoyNTUpO3ZhciBkPU1hdGgucm91bmQoKHRoaXNbMl0qKDYwMDAtdGhpc1sx XSplKSkvNjAwMDAwKjI1NSk7dmFyIGI9TWF0aC5yb3VuZCgodGhpc1syXSooNjAw MC10aGlzWzFdKig2MC1lKSkpLzYwMDAwMCoyNTUpO3N3aXRjaChNYXRoLmZsb29y KGEvNjApKXtjYXNlIDA6cmV0dXJuW2MsYixnXTtjYXNlIDE6cmV0dXJuW2QsYyxn XTtjYXNlIDI6cmV0dXJuW2csYyxiXTtjYXNlIDM6cmV0dXJuW2csZCxjXTtjYXNl IDQ6cmV0dXJuW2IsZyxjXTtjYXNlIDU6cmV0dXJuW2MsZyxkXX19cmV0dXJuIGZh bHNlfX0pO1N0cmluZy5pbXBsZW1lbnQoe3JnYlRvSHNiOmZ1bmN0aW9uKCl7dmFy IGE9dGhpcy5tYXRjaCgvXGR7MSwzfS9nKTtyZXR1cm4oYSk/YS5yZ2JUb0hzYigp Om51bGx9LGhzYlRvUmdiOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5tYXRjaCgvXGR7 MSwzfS9nKTtyZXR1cm4oYSk/YS5oc2JUb1JnYigpOm51bGx9fSk7dmFyIEdyb3Vw PW5ldyBDbGFzcyh7aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuaW5zdGFuY2Vz PUFycmF5LmZsYXR0ZW4oYXJndW1lbnRzKTt0aGlzLmV2ZW50cz17fTt0aGlzLmNo ZWNrZXI9e319LGFkZEV2ZW50OmZ1bmN0aW9uKGIsYSl7dGhpcy5jaGVja2VyW2Jd PXRoaXMuY2hlY2tlcltiXXx8e307dGhpcy5ldmVudHNbYl09dGhpcy5ldmVudHNb Yl18fFtdO2lmKHRoaXMuZXZlbnRzW2JdLmNvbnRhaW5zKGEpKXtyZXR1cm4gZmFs c2V9ZWxzZXt0aGlzLmV2ZW50c1tiXS5wdXNoKGEpfXRoaXMuaW5zdGFuY2VzLmVh Y2goZnVuY3Rpb24oYyxkKXtjLmFkZEV2ZW50KGIsdGhpcy5jaGVjay5iaW5kKHRo aXMsW2IsYyxkXSkpfSx0aGlzKTtyZXR1cm4gdGhpc30sY2hlY2s6ZnVuY3Rpb24o YyxhLGIpe3RoaXMuY2hlY2tlcltjXVtiXT10cnVlO3ZhciBkPXRoaXMuaW5zdGFu Y2VzLmV2ZXJ5KGZ1bmN0aW9uKGYsZSl7cmV0dXJuIHRoaXMuY2hlY2tlcltjXVtl XXx8ZmFsc2V9LHRoaXMpO2lmKCFkKXtyZXR1cm59dGhpcy5jaGVja2VyW2NdPXt9 O3RoaXMuZXZlbnRzW2NdLmVhY2goZnVuY3Rpb24oZSl7ZS5jYWxsKHRoaXMsdGhp cy5pbnN0YW5jZXMsYSl9LHRoaXMpfX0pO0hhc2guQ29va2llPW5ldyBDbGFzcyh7 RXh0ZW5kczpDb29raWUsb3B0aW9uczp7YXV0b1NhdmU6dHJ1ZX0saW5pdGlhbGl6 ZTpmdW5jdGlvbihiLGEpe3RoaXMucGFyZW50KGIsYSk7dGhpcy5sb2FkKCl9LHNh dmU6ZnVuY3Rpb24oKXt2YXIgYT1KU09OLmVuY29kZSh0aGlzLmhhc2gpO2lmKCFh fHxhLmxlbmd0aD40MDk2KXtyZXR1cm4gZmFsc2V9aWYoYT09Int9Iil7dGhpcy5k aXNwb3NlKCl9ZWxzZXt0aGlzLndyaXRlKGEpfXJldHVybiB0cnVlfSxsb2FkOmZ1 bmN0aW9uKCl7dGhpcy5oYXNoPW5ldyBIYXNoKEpTT04uZGVjb2RlKHRoaXMucmVh ZCgpLHRydWUpKTtyZXR1cm4gdGhpc319KTtIYXNoLmVhY2goSGFzaC5wcm90b3R5 cGUsZnVuY3Rpb24oYixhKXtpZih0eXBlb2YgYj09ImZ1bmN0aW9uIil7SGFzaC5D b29raWUuaW1wbGVtZW50KGEsZnVuY3Rpb24oKXt2YXIgYz1iLmFwcGx5KHRoaXMu aGFzaCxhcmd1bWVudHMpO2lmKHRoaXMub3B0aW9ucy5hdXRvU2F2ZSl7dGhpcy5z YXZlKCl9cmV0dXJuIGN9KX19KTt2YXIgU2Nyb2xsZXI9bmV3IENsYXNzKHtJbXBs ZW1lbnRzOltFdmVudHMsT3B0aW9uc10sb3B0aW9uczp7YXJlYToyMCx2ZWxvY2l0 eToxLG9uQ2hhbmdlOmZ1bmN0aW9uKGEsYil7dGhpcy5lbGVtZW50LnNjcm9sbFRv KGEsYil9LGZwczo1MH0saW5pdGlhbGl6ZTpmdW5jdGlvbihiLGEpe3RoaXMuc2V0 T3B0aW9ucyhhKTt0aGlzLmVsZW1lbnQ9ZG9jdW1lbnQuaWQoYik7dGhpcy5saXN0 ZW5lcj0oJHR5cGUodGhpcy5lbGVtZW50KSE9ImVsZW1lbnQiKT9kb2N1bWVudC5p ZCh0aGlzLmVsZW1lbnQuZ2V0RG9jdW1lbnQoKS5ib2R5KTp0aGlzLmVsZW1lbnQ7 dGhpcy50aW1lcj1udWxsO3RoaXMuYm91bmQ9e2F0dGFjaDp0aGlzLmF0dGFjaC5i aW5kKHRoaXMpLGRldGFjaDp0aGlzLmRldGFjaC5iaW5kKHRoaXMpLGdldENvb3Jk czp0aGlzLmdldENvb3Jkcy5iaW5kKHRoaXMpfX0sc3RhcnQ6ZnVuY3Rpb24oKXt0 aGlzLmxpc3RlbmVyLmFkZEV2ZW50cyh7bW91c2VvdmVyOnRoaXMuYm91bmQuYXR0 YWNoLG1vdXNlb3V0OnRoaXMuYm91bmQuZGV0YWNofSl9LHN0b3A6ZnVuY3Rpb24o KXt0aGlzLmxpc3RlbmVyLnJlbW92ZUV2ZW50cyh7bW91c2VvdmVyOnRoaXMuYm91 bmQuYXR0YWNoLG1vdXNlb3V0OnRoaXMuYm91bmQuZGV0YWNofSk7dGhpcy5kZXRh Y2goKTt0aGlzLnRpbWVyPSRjbGVhcih0aGlzLnRpbWVyKX0sYXR0YWNoOmZ1bmN0 aW9uKCl7dGhpcy5saXN0ZW5lci5hZGRFdmVudCgibW91c2Vtb3ZlIix0aGlzLmJv dW5kLmdldENvb3Jkcyl9LGRldGFjaDpmdW5jdGlvbigpe3RoaXMubGlzdGVuZXIu cmVtb3ZlRXZlbnQoIm1vdXNlbW92ZSIsdGhpcy5ib3VuZC5nZXRDb29yZHMpO3Ro aXMudGltZXI9JGNsZWFyKHRoaXMudGltZXIpfSxnZXRDb29yZHM6ZnVuY3Rpb24o YSl7dGhpcy5wYWdlPSh0aGlzLmxpc3RlbmVyLmdldCgidGFnIik9PSJib2R5Iik/ YS5jbGllbnQ6YS5wYWdlO2lmKCF0aGlzLnRpbWVyKXt0aGlzLnRpbWVyPXRoaXMu c2Nyb2xsLnBlcmlvZGljYWwoTWF0aC5yb3VuZCgxMDAwL3RoaXMub3B0aW9ucy5m cHMpLHRoaXMpfX0sc2Nyb2xsOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5lbGVtZW50 LmdldFNpemUoKSxhPXRoaXMuZWxlbWVudC5nZXRTY3JvbGwoKSxmPXRoaXMuZWxl bWVudC5nZXRPZmZzZXRzKCksYz10aGlzLmVsZW1lbnQuZ2V0U2Nyb2xsU2l6ZSgp LGU9e3g6MCx5OjB9O2Zvcih2YXIgZCBpbiB0aGlzLnBhZ2Upe2lmKHRoaXMucGFn ZVtkXTwodGhpcy5vcHRpb25zLmFyZWErZltkXSkmJmFbZF0hPTApe2VbZF09KHRo aXMucGFnZVtkXS10aGlzLm9wdGlvbnMuYXJlYS1mW2RdKSp0aGlzLm9wdGlvbnMu dmVsb2NpdHl9ZWxzZXtpZih0aGlzLnBhZ2VbZF0rdGhpcy5vcHRpb25zLmFyZWE+ KGJbZF0rZltkXSkmJmFbZF0rYltkXSE9Y1tkXSl7ZVtkXT0odGhpcy5wYWdlW2Rd LWJbZF0rdGhpcy5vcHRpb25zLmFyZWEtZltkXSkqdGhpcy5vcHRpb25zLnZlbG9j aXR5fX19aWYoZS55fHxlLngpe3RoaXMuZmlyZUV2ZW50KCJjaGFuZ2UiLFthLngr ZS54LGEueStlLnldKX19fSk7KGZ1bmN0aW9uKCl7dmFyIGE9ZnVuY3Rpb24oYyxi KXtyZXR1cm4oYyk/KCR0eXBlKGMpPT0iZnVuY3Rpb24iP2MoYik6Yi5nZXQoYykp OiIifTt0aGlzLlRpcHM9bmV3IENsYXNzKHtJbXBsZW1lbnRzOltFdmVudHMsT3B0 aW9uc10sb3B0aW9uczp7b25TaG93OmZ1bmN0aW9uKCl7dGhpcy50aXAuc2V0U3R5 bGUoImRpc3BsYXkiLCJibG9jayIpfSxvbkhpZGU6ZnVuY3Rpb24oKXt0aGlzLnRp cC5zZXRTdHlsZSgiZGlzcGxheSIsIm5vbmUiKX0sdGl0bGU6InRpdGxlIix0ZXh0 OmZ1bmN0aW9uKGIpe3JldHVybiBiLmdldCgicmVsIil8fGIuZ2V0KCJocmVmIil9 LHNob3dEZWxheToxMDAsaGlkZURlbGF5OjEwMCxjbGFzc05hbWU6InRpcC13cmFw IixvZmZzZXQ6e3g6MTYseToxNn0sd2luZG93UGFkZGluZzp7eDowLHk6MH0sZml4 ZWQ6ZmFsc2V9LGluaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIgYj1BcnJheS5saW5r KGFyZ3VtZW50cyx7b3B0aW9uczpPYmplY3QudHlwZSxlbGVtZW50czokZGVmaW5l ZH0pO3RoaXMuc2V0T3B0aW9ucyhiLm9wdGlvbnMpO2lmKGIuZWxlbWVudHMpe3Ro aXMuYXR0YWNoKGIuZWxlbWVudHMpfXRoaXMuY29udGFpbmVyPW5ldyBFbGVtZW50 KCJkaXYiLHsiY2xhc3MiOiJ0aXAifSl9LHRvRWxlbWVudDpmdW5jdGlvbigpe2lm KHRoaXMudGlwKXtyZXR1cm4gdGhpcy50aXB9dGhpcy5jb250YWluZXI9bmV3IEVs ZW1lbnQoImRpdiIseyJjbGFzcyI6InRpcCJ9KTtyZXR1cm4gdGhpcy50aXA9bmV3 IEVsZW1lbnQoImRpdiIseyJjbGFzcyI6dGhpcy5vcHRpb25zLmNsYXNzTmFtZSxz dHlsZXM6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAsbGVmdDowfX0pLmFkb3B0 KG5ldyBFbGVtZW50KCJkaXYiLHsiY2xhc3MiOiJ0aXAtdG9wIn0pLHRoaXMuY29u dGFpbmVyLG5ldyBFbGVtZW50KCJkaXYiLHsiY2xhc3MiOiJ0aXAtYm90dG9tIn0p KS5pbmplY3QoZG9jdW1lbnQuYm9keSl9LGF0dGFjaDpmdW5jdGlvbihiKXskJChi KS5lYWNoKGZ1bmN0aW9uKGQpe3ZhciBmPWEodGhpcy5vcHRpb25zLnRpdGxlLGQp LGU9YSh0aGlzLm9wdGlvbnMudGV4dCxkKTtkLmVyYXNlKCJ0aXRsZSIpLnN0b3Jl KCJ0aXA6bmF0aXZlIixmKS5yZXRyaWV2ZSgidGlwOnRpdGxlIixmKTtkLnJldHJp ZXZlKCJ0aXA6dGV4dCIsZSk7dGhpcy5maXJlRXZlbnQoImF0dGFjaCIsW2RdKTt2 YXIgYz1bImVudGVyIiwibGVhdmUiXTtpZighdGhpcy5vcHRpb25zLmZpeGVkKXtj LnB1c2goIm1vdmUiKX1jLmVhY2goZnVuY3Rpb24oaCl7dmFyIGc9ZC5yZXRyaWV2 ZSgidGlwOiIraCk7aWYoIWcpe2c9dGhpc1siZWxlbWVudCIraC5jYXBpdGFsaXpl KCldLmJpbmRXaXRoRXZlbnQodGhpcyxkKX1kLnN0b3JlKCJ0aXA6IitoLGcpLmFk ZEV2ZW50KCJtb3VzZSIraCxnKX0sdGhpcyl9LHRoaXMpO3JldHVybiB0aGlzfSxk ZXRhY2g6ZnVuY3Rpb24oYil7JCQoYikuZWFjaChmdW5jdGlvbihkKXtbImVudGVy IiwibGVhdmUiLCJtb3ZlIl0uZWFjaChmdW5jdGlvbihlKXtkLnJlbW92ZUV2ZW50 KCJtb3VzZSIrZSxkLnJldHJpZXZlKCJ0aXA6IitlKSkuZWxpbWluYXRlKCJ0aXA6 IitlKX0pO3RoaXMuZmlyZUV2ZW50KCJkZXRhY2giLFtkXSk7aWYodGhpcy5vcHRp b25zLnRpdGxlPT0idGl0bGUiKXt2YXIgYz1kLnJldHJpZXZlKCJ0aXA6bmF0aXZl Iik7aWYoYyl7ZC5zZXQoInRpdGxlIixjKX19fSx0aGlzKTtyZXR1cm4gdGhpc30s ZWxlbWVudEVudGVyOmZ1bmN0aW9uKGMsYil7dGhpcy5jb250YWluZXIuZW1wdHko KTtbInRpdGxlIiwidGV4dCJdLmVhY2goZnVuY3Rpb24oZSl7dmFyIGQ9Yi5yZXRy aWV2ZSgidGlwOiIrZSk7aWYoZCl7dGhpcy5maWxsKG5ldyBFbGVtZW50KCJkaXYi LHsiY2xhc3MiOiJ0aXAtIitlfSkuaW5qZWN0KHRoaXMuY29udGFpbmVyKSxkKX19 LHRoaXMpOyRjbGVhcih0aGlzLnRpbWVyKTt0aGlzLnRpbWVyPShmdW5jdGlvbigp e3RoaXMuc2hvdyhiKTt0aGlzLnBvc2l0aW9uKCh0aGlzLm9wdGlvbnMuZml4ZWQp P3twYWdlOmIuZ2V0UG9zaXRpb24oKX06Yyl9KS5kZWxheSh0aGlzLm9wdGlvbnMu c2hvd0RlbGF5LHRoaXMpfSxlbGVtZW50TGVhdmU6ZnVuY3Rpb24oYyxiKXskY2xl YXIodGhpcy50aW1lcik7dGhpcy50aW1lcj10aGlzLmhpZGUuZGVsYXkodGhpcy5v cHRpb25zLmhpZGVEZWxheSx0aGlzLGIpO3RoaXMuZmlyZUZvclBhcmVudChjLGIp fSxmaXJlRm9yUGFyZW50OmZ1bmN0aW9uKGMsYil7Yj1iLmdldFBhcmVudCgpO2lm KCFifHxiPT1kb2N1bWVudC5ib2R5KXtyZXR1cm59aWYoYi5yZXRyaWV2ZSgidGlw OmVudGVyIikpe2IuZmlyZUV2ZW50KCJtb3VzZWVudGVyIixjKX1lbHNle3RoaXMu ZmlyZUZvclBhcmVudChjLGIpfX0sZWxlbWVudE1vdmU6ZnVuY3Rpb24oYyxiKXt0 aGlzLnBvc2l0aW9uKGMpfSxwb3NpdGlvbjpmdW5jdGlvbihlKXtpZighdGhpcy50 aXApe2RvY3VtZW50LmlkKHRoaXMpfXZhciBjPXdpbmRvdy5nZXRTaXplKCksYj13 aW5kb3cuZ2V0U2Nyb2xsKCksZj17eDp0aGlzLnRpcC5vZmZzZXRXaWR0aCx5OnRo aXMudGlwLm9mZnNldEhlaWdodH0sZD17eDoibGVmdCIseToidG9wIn0sZz17fTtm b3IodmFyIGggaW4gZCl7Z1tkW2hdXT1lLnBhZ2VbaF0rdGhpcy5vcHRpb25zLm9m ZnNldFtoXTtpZigoZ1tkW2hdXStmW2hdLWJbaF0pPmNbaF0tdGhpcy5vcHRpb25z LndpbmRvd1BhZGRpbmdbaF0pe2dbZFtoXV09ZS5wYWdlW2hdLXRoaXMub3B0aW9u cy5vZmZzZXRbaF0tZltoXX19dGhpcy50aXAuc2V0U3R5bGVzKGcpfSxmaWxsOmZ1 bmN0aW9uKGIsYyl7aWYodHlwZW9mIGM9PSJzdHJpbmciKXtiLnNldCgiaHRtbCIs Yyl9ZWxzZXtiLmFkb3B0KGMpfX0sc2hvdzpmdW5jdGlvbihiKXtpZighdGhpcy50 aXApe2RvY3VtZW50LmlkKHRoaXMpfXRoaXMuZmlyZUV2ZW50KCJzaG93IixbdGhp cy50aXAsYl0pfSxoaWRlOmZ1bmN0aW9uKGIpe2lmKCF0aGlzLnRpcCl7ZG9jdW1l bnQuaWQodGhpcyl9dGhpcy5maXJlRXZlbnQoImhpZGUiLFt0aGlzLnRpcCxiXSl9 fSl9KSgpO3ZhciBBc3NldD17amF2YXNjcmlwdDpmdW5jdGlvbihmLGQpe2Q9JGV4 dGVuZCh7b25sb2FkOiRlbXB0eSxkb2N1bWVudDpkb2N1bWVudCxjaGVjazokbGFt YmRhKHRydWUpfSxkKTt2YXIgYj1uZXcgRWxlbWVudCgic2NyaXB0Iix7c3JjOmYs dHlwZToidGV4dC9qYXZhc2NyaXB0In0pO3ZhciBlPWQub25sb2FkLmJpbmQoYiks YT1kLmNoZWNrLGc9ZC5kb2N1bWVudDtkZWxldGUgZC5vbmxvYWQ7ZGVsZXRlIGQu Y2hlY2s7ZGVsZXRlIGQuZG9jdW1lbnQ7Yi5hZGRFdmVudHMoe2xvYWQ6ZSxyZWFk eXN0YXRlY2hhbmdlOmZ1bmN0aW9uKCl7aWYoWyJsb2FkZWQiLCJjb21wbGV0ZSJd LmNvbnRhaW5zKHRoaXMucmVhZHlTdGF0ZSkpe2UoKX19fSkuc2V0KGQpO2lmKEJy b3dzZXIuRW5naW5lLndlYmtpdDQxOSl7dmFyIGM9KGZ1bmN0aW9uKCl7aWYoISR0 cnkoYSkpe3JldHVybn0kY2xlYXIoYyk7ZSgpfSkucGVyaW9kaWNhbCg1MCl9cmV0 dXJuIGIuaW5qZWN0KGcuaGVhZCl9LGNzczpmdW5jdGlvbihiLGEpe3JldHVybiBu ZXcgRWxlbWVudCgibGluayIsJG1lcmdlKHtyZWw6InN0eWxlc2hlZXQiLG1lZGlh OiJzY3JlZW4iLHR5cGU6InRleHQvY3NzIixocmVmOmJ9LGEpKS5pbmplY3QoZG9j dW1lbnQuaGVhZCl9LGltYWdlOmZ1bmN0aW9uKGMsYil7Yj0kbWVyZ2Uoe29ubG9h ZDokZW1wdHksb25hYm9ydDokZW1wdHksb25lcnJvcjokZW1wdHl9LGIpO3ZhciBk PW5ldyBJbWFnZSgpO3ZhciBhPWRvY3VtZW50LmlkKGQpfHxuZXcgRWxlbWVudCgi aW1nIik7WyJsb2FkIiwiYWJvcnQiLCJlcnJvciJdLmVhY2goZnVuY3Rpb24oZSl7 dmFyIGY9Im9uIitlO3ZhciBnPWJbZl07ZGVsZXRlIGJbZl07ZFtmXT1mdW5jdGlv bigpe2lmKCFkKXtyZXR1cm59aWYoIWEucGFyZW50Tm9kZSl7YS53aWR0aD1kLndp ZHRoO2EuaGVpZ2h0PWQuaGVpZ2h0fWQ9ZC5vbmxvYWQ9ZC5vbmFib3J0PWQub25l cnJvcj1udWxsO2cuZGVsYXkoMSxhLGEpO2EuZmlyZUV2ZW50KGUsYSwxKX19KTtk LnNyYz1hLnNyYz1jO2lmKGQmJmQuY29tcGxldGUpe2Qub25sb2FkLmRlbGF5KDEp fXJldHVybiBhLnNldChiKX0saW1hZ2VzOmZ1bmN0aW9uKGQsYyl7Yz0kbWVyZ2Uo e29uQ29tcGxldGU6JGVtcHR5LG9uUHJvZ3Jlc3M6JGVtcHR5LG9uRXJyb3I6JGVt cHR5LHByb3BlcnRpZXM6e319LGMpO2Q9JHNwbGF0KGQpO3ZhciBhPVtdO3ZhciBi PTA7cmV0dXJuIG5ldyBFbGVtZW50cyhkLm1hcChmdW5jdGlvbihlKXtyZXR1cm4g QXNzZXQuaW1hZ2UoZSwkZXh0ZW5kKGMucHJvcGVydGllcyx7b25sb2FkOmZ1bmN0 aW9uKCl7Yy5vblByb2dyZXNzLmNhbGwodGhpcyxiLGQuaW5kZXhPZihlKSk7Yisr O2lmKGI9PWQubGVuZ3RoKXtjLm9uQ29tcGxldGUoKX19LG9uZXJyb3I6ZnVuY3Rp b24oKXtjLm9uRXJyb3IuY2FsbCh0aGlzLGIsZC5pbmRleE9mKGUpKTtiKys7aWYo Yj09ZC5sZW5ndGgpe2Mub25Db21wbGV0ZSgpfX19KSl9KSl9fTtpZighd2luZG93 LmNvbnNvbGUpe3ZhciBjb25zb2xlPXt9fWlmKCFjb25zb2xlLmxvZyl7Y29uc29s ZS5sb2c9ZnVuY3Rpb24oKXt9fWlmKCFjb25zb2xlLndhcm4pe2NvbnNvbGUud2Fy bj1jb25zb2xlLmxvZ31pZighY29uc29sZS5lcnJvcil7Y29uc29sZS5lcnJvcj1j b25zb2xlLndhcm59TW9vVG9vbHMudXBncmFkZUxvZz1mdW5jdGlvbigpe2lmKGNv bnNvbGVbdGhpcy51cGdyYWRlTG9nTGV2ZWxdKXtjb25zb2xlW3RoaXMudXBncmFk ZUxvZ0xldmVsXS5hcHBseShjb25zb2xlLGFyZ3VtZW50cyl9fTsoZnVuY3Rpb24o KXtvbGRBPSRBO3dpbmRvdy4kQT1mdW5jdGlvbihrLG0sail7aWYobSE9dW5kZWZp bmVkJiZqIT11bmRlZmluZWQpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+IDEu MjogJEEgbm8gbG9uZ2VyIHRha2VzIHN0YXJ0IGFuZCBsZW5ndGggYXJndW1lbnRz LiIpO2lmKEJyb3dzZXIuRW5naW5lLnRyaWRlbnQmJiR0eXBlKGspPT0iY29sbGVj dGlvbiIpe209bXx8MDtpZihtPDApe209ay5sZW5ndGgrbX1qPWp8fChrLmxlbmd0 aC1tKTt2YXIgbD1bXTtmb3IodmFyIGg9MDtoPGo7aCsrKXtsW2hdPWtbbSsrXX1y ZXR1cm4gbH1tPShtfHwwKSsoKG08MCk/ay5sZW5ndGg6MCk7dmFyIGc9KCghJGNo ayhqKSk/ay5sZW5ndGg6aikrbTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNl LmNhbGwoayxtLGcpfXJldHVybiBvbGRBKGspfTt2YXIgZT1bIkFycmF5IiwiRnVu Y3Rpb24iLCJTdHJpbmciLCJSZWdFeHAiLCJOdW1iZXIiLCJXaW5kb3ciLCJEb2N1 bWVudCIsIkVsZW1lbnQiLCJFbGVtZW50cyJdO2Zvcih2YXIgYz0wLGI9ZS5sZW5n dGg7YzxiO2MrKyl7dmFyIGQ9ZVtjXTt2YXIgYT13aW5kb3dbZF07aWYoYSl7dmFy IGY9YS5leHRlbmQ7YS5leHRlbmQ9ZnVuY3Rpb24oZyl7TW9vVG9vbHMudXBncmFk ZUxvZygiMS4xID4gMS4yOiBuYXRpdmUgdHlwZXMgbm8gbG9uZ2VyIHVzZSAuZXh0 ZW5kIHRvIGFkZCBtZXRob2RzIHRvIHByb3RvdHlwZXMgYnV0IGluc3RlYWQgdXNl IC5pbXBsZW1lbnQuIE5PVEU6IFlPVVIgTUVUSE9EUyBXRVJFIE5PVCBJTVBMRU1F TlRFRCBPTiBUSEUgTkFUSVZFICIrZC50b1VwcGVyQ2FzZSgpKyIgUFJPVE9UWVBF LiIpO3JldHVybiBmLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fX0pKCk7d2luZG93 Lm9uRG9tUmVhZHk9V2luZG93Lm9uRG9tUmVhZHk9ZnVuY3Rpb24oYSl7TW9vVG9v bHMudXBncmFkZUxvZygnMS4xID4gMS4yOiB3aW5kb3cub25Eb21SZWFkeSBpcyBu byBsb25nZXIgc3VwcG9ydGVkLiBVc2Ugd2luZG93LmFkZEV2ZW50KCJkb21yZWFk eSIpIGluc3RlYWQnKTtyZXR1cm4gd2luZG93LmFkZEV2ZW50KCJkb21yZWFkeSIs YSl9O2lmKEJyb3dzZXIuX19kZWZpbmVHZXR0ZXJfXyl7QnJvd3Nlci5fX2RlZmlu ZUdldHRlcl9fKCJoYXNHZXR0ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRydWV9KX1p ZihCcm93c2VyLmhhc0dldHRlcil7d2luZG93Ll9fZGVmaW5lR2V0dGVyX18oImll IixmdW5jdGlvbigpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+IDEuMjogd2lu ZG93LmllIGlzIGRlcHJlY2F0ZWQuIFVzZSBCcm93c2VyLkVuZ2luZS50cmlkZW50 Iik7cmV0dXJuKEJyb3dzZXIuRW5naW5lLm5hbWU9PSJ0cmlkZW50Iik/dHJ1ZTpm YWxzZX0pO3dpbmRvdy5fX2RlZmluZUdldHRlcl9fKCJpZTYiLGZ1bmN0aW9uKCl7 TW9vVG9vbHMudXBncmFkZUxvZygiMS4xID4gMS4yOiB3aW5kb3cuaWU2IGlzIGRl cHJlY2F0ZWQuIFVzZSBCcm93c2VyLkVuZ2luZS50cmlkZW50IGFuZCBCcm93c2Vy LkVuZ2luZS52ZXJzaW9uIik7cmV0dXJuKEJyb3dzZXIuRW5naW5lLm5hbWU9PSJ0 cmlkZW50IiYmQnJvd3Nlci5FbmdpbmUudmVyc2lvbj09NCk/dHJ1ZTpmYWxzZX0p O3dpbmRvdy5fX2RlZmluZUdldHRlcl9fKCJpZTciLGZ1bmN0aW9uKCl7TW9vVG9v bHMudXBncmFkZUxvZygiMS4xID4gMS4yOiB3aW5kb3cuaWU3IGlzIGRlcHJlY2F0 ZWQuIFVzZSBCcm93c2VyLkVuZ2luZS50cmlkZW50IGFuZCBCcm93c2VyLkVuZ2lu ZS52ZXJzaW9uIik7cmV0dXJuKEJyb3dzZXIuRW5naW5lLm5hbWU9PSJ0cmlkZW50 IiYmQnJvd3Nlci5FbmdpbmUudmVyc2lvbj09NSk/dHJ1ZTpmYWxzZX0pO3dpbmRv dy5fX2RlZmluZUdldHRlcl9fKCJnZWNrbyIsZnVuY3Rpb24oKXtNb29Ub29scy51 cGdyYWRlTG9nKCIxLjEgPiAxLjI6IHdpbmRvdy5nZWNrbyBpcyBkZXByZWNhdGVk LiBVc2UgQnJvd3Nlci5FbmdpbmUuZ2Vja28iKTtyZXR1cm4oQnJvd3Nlci5Fbmdp bmUubmFtZT09ImdlY2tvIik/dHJ1ZTpmYWxzZX0pO3dpbmRvdy5fX2RlZmluZUdl dHRlcl9fKCJ3ZWJraXQiLGZ1bmN0aW9uKCl7TW9vVG9vbHMudXBncmFkZUxvZygi MS4xID4gMS4yOiB3aW5kb3cud2Via2l0IGlzIGRlcHJlY2F0ZWQuIFVzZSBCcm93 c2VyLkVuZ2luZS53ZWJraXQiKTtyZXR1cm4oQnJvd3Nlci5FbmdpbmUubmFtZT09 IndlYmtpdCIpP3RydWU6ZmFsc2V9KTt3aW5kb3cuX19kZWZpbmVHZXR0ZXJfXygi d2Via2l0NDE5IixmdW5jdGlvbigpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+ IDEuMjogd2luZG93LndlYmtpdCBpcyBkZXByZWNhdGVkLiBVc2UgQnJvd3Nlci5F bmdpbmUud2Via2l0IGFuZCBCcm93c2VyLkVuZ2luZS52ZXJzaW9uIik7cmV0dXJu KEJyb3dzZXIuRW5naW5lLm5hbWU9PSJ3ZWJraXQiJiZCcm93c2VyLkVuZ2luZS52 ZXJzaW9uPT00MTkpP3RydWU6ZmFsc2V9KTt3aW5kb3cuX19kZWZpbmVHZXR0ZXJf Xygid2Via2l0NDIwIixmdW5jdGlvbigpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEu MSA+IDEuMjogd2luZG93LndlYmtpdCBpcyBkZXByZWNhdGVkLiBVc2UgQnJvd3Nl ci5FbmdpbmUud2Via2l0IGFuZCBCcm93c2VyLkVuZ2luZS52ZXJzaW9uIik7cmV0 dXJuKEJyb3dzZXIuRW5naW5lLm5hbWU9PSJ3ZWJraXQiJiZCcm93c2VyLkVuZ2lu ZS52ZXJzaW9uPT00MjApP3RydWU6ZmFsc2V9KTt3aW5kb3cuX19kZWZpbmVHZXR0 ZXJfXygib3BlcmEiLGZ1bmN0aW9uKCl7TW9vVG9vbHMudXBncmFkZUxvZygiMS4x ID4gMS4yOiB3aW5kb3cub3BlcmEgaXMgZGVwcmVjYXRlZC4gVXNlIEJyb3dzZXIu RW5naW5lLnByZXN0byIpO3JldHVybihCcm93c2VyLkVuZ2luZS5uYW1lPT0icHJl c3RvIik/dHJ1ZTpmYWxzZX0pfWVsc2V7d2luZG93W0Jyb3dzZXIuRW5naW5lLm5h bWVdPXdpbmRvd1tCcm93c2VyLkVuZ2luZS5uYW1lK0Jyb3dzZXIuRW5naW5lLnZl cnNpb25dPXRydWU7d2luZG93LmllPXdpbmRvdy50cmlkZW50O3dpbmRvdy5pZTY9 d2luZG93LnRyaWRlbnQ0O3dpbmRvdy5pZTc9d2luZG93LnRyaWRlbnQ1fUFycmF5 LmltcGxlbWVudCh7Y29weTpmdW5jdGlvbihiLGEpe01vb1Rvb2xzLnVwZ3JhZGVM b2coIjEuMSA+IDEuMjogQXJyYXkuY29weSBpcyBkZXByZWNhdGVkLiBVc2UgQXJy YXkuc3BsaWNlIik7cmV0dXJuICRBKHRoaXMsYixhKX0scmVtb3ZlOmZ1bmN0aW9u KGEpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+IDEuMjogQXJyYXkucmVtb3Zl IGlzIGRlcHJlY2F0ZWQuIFVzZSBBcnJheS5lcmFzZSIpO3JldHVybiB0aGlzLmVy YXNlKGEpfSxtZXJnZTpmdW5jdGlvbihhKXtNb29Ub29scy51cGdyYWRlTG9nKCIx LjEgPiAxLjI6IEFycmF5Lm1lcmdlIGlzIGRlcHJlY2F0ZWQuIFVzZSBBcnJheS5j b21iaW5lIik7cmV0dXJuIHRoaXMuY29tYmluZShhKX19KTtGdW5jdGlvbi5pbXBs ZW1lbnQoe2JpbmRBc0V2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYixhKXtNb29Ub29s cy51cGdyYWRlTG9nKCIxLjEgPiAxLjI6IEZ1bmN0aW9uLmJpbmRBc0V2ZW50TGlz dGVuZXIgaXMgZGVwcmVjYXRlZC4gVXNlIGJpbmRXaXRoRXZlbnQuIik7cmV0dXJu IHRoaXMuYmluZFdpdGhFdmVudC5jYWxsKHRoaXMsYixhKX19KTtGdW5jdGlvbi5l bXB0eT1mdW5jdGlvbigpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+IDEuMjog RnVuY3Rpb24uZW1wdHkgaXMgbm93IGp1c3QgJGVtcHR5LiIpfTtIYXNoLmltcGxl bWVudCh7a2V5czpmdW5jdGlvbigpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+ IDEuMjogSGFzaC5rZXlzIGlzIGRlcHJlY2F0ZWQuIFVzZSBIYXNoLmdldEtleXMi KTtyZXR1cm4gdGhpcy5nZXRLZXlzKCl9LHZhbHVlczpmdW5jdGlvbigpe01vb1Rv b2xzLnVwZ3JhZGVMb2coIjEuMSA+IDEuMjogSGFzaC52YWx1ZXMgaXMgZGVwcmVj YXRlZC4gVXNlIEhhc2guZ2V0VmFsdWVzIik7cmV0dXJuIHRoaXMuZ2V0VmFsdWVz KCl9LGhhc0tleTpmdW5jdGlvbihhKXtNb29Ub29scy51cGdyYWRlTG9nKCIxLjEg PiAxLjI6IEhhc2guaGFzS2V5IGlzIGRlcHJlY2F0ZWQuIFVzZSBIYXNoLmhhcyIp O3JldHVybiB0aGlzLmhhcyhhKX0sbWVyZ2U6ZnVuY3Rpb24oYSl7TW9vVG9vbHMu dXBncmFkZUxvZygiMS4xID4gMS4yOiBIYXNoLm1lcmdlIGlzIGRlcHJlY2F0ZWQu IFVzZSBIYXNoLmNvbWJpbmUiKTtyZXR1cm4gdGhpcy5leHRlbmQoYSl9LHJlbW92 ZTpmdW5jdGlvbihhKXtNb29Ub29scy51cGdyYWRlTG9nKCIxLjEgPiAxLjI6IEhh c2gucmVtb3ZlIGlzIGRlcHJlY2F0ZWQuIHVzZSBIYXNoLmVyYXNlIik7cmV0dXJu IHRoaXMuZXJhc2UoYSl9fSk7T2JqZWN0LnRvUXVlcnlTdHJpbmc9ZnVuY3Rpb24o YSl7TW9vVG9vbHMudXBncmFkZUxvZygiMS4xID4gMS4yOiBPYmplY3QudG9RdWVy eVN0cmluZygpIGlzIGRlcHJlY2F0ZWQuIHVzZSBIYXNoLnRvUXVlcnlTdHJpbmco KSBpbnN0ZWFkIik7JEgoYSkuZWFjaChmdW5jdGlvbihjLGIpe2lmKCR0eXBlKGMp PT0ib2JqZWN0Inx8JHR5cGUoYyk9PSJhcnJheSIpe2FbYl09Yy50b1N0cmluZygp fX0pO3JldHVybiBIYXNoLnRvUXVlcnlTdHJpbmcoYSl9O3ZhciBBYnN0cmFjdD1m dW5jdGlvbihhKXtNb29Ub29scy51cGdyYWRlTG9nKCIxLjEgPiAxLjI6IEFic3Ry YWN0IGlzIGRlcHJlY2F0ZWQuIFVzZSBIYXNoIik7cmV0dXJuIG5ldyBIYXNoKGEp fTtDbGFzcy5lbXB0eT1mdW5jdGlvbigpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEu MSA+IDEuMjogcmVwbGFjZSBDbGFzcy5lbXB0eSB3aXRoICRlbXB0eSIpO3JldHVy biAkZW1wdHl9OyhmdW5jdGlvbigpe3ZhciBhPWZ1bmN0aW9uKGQpe3ZhciBjPWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlPWQ7cmV0dXJuIGN9O0Ns YXNzLnByb3RvdHlwZS5leHRlbmQ9ZnVuY3Rpb24oZCl7TW9vVG9vbHMudXBncmFk ZUxvZygiMS4xID4gMS4yOiBDbGFzcy5leHRlbmQgaXMgZGVwcmVjYXRlZC4gU2Vl IHRoZSBjbGFzcyBFeHRlbmQgbXV0YXRvci4iKTt2YXIgYz1hKGQpO3ZhciBlPW5l dyBjKCk7ZS5FeHRlbmRzPXRoaXM7cmV0dXJuIG5ldyBDbGFzcyhlKX07dmFyIGI9 Q2xhc3MucHJvdG90eXBlLmltcGxlbWVudDtDbGFzcy5wcm90b3R5cGUuaW1wbGVt ZW50PWZ1bmN0aW9uKCl7aWYoYXJndW1lbnRzLmxlbmd0aD4xJiZBcnJheS5ldmVy eShhcmd1bWVudHMsT2JqZWN0LnR5cGUpKXtNb29Ub29scy51cGdyYWRlTG9nKCIx LjEgPiAxLjI6IENsYXNzLmltcGxlbWVudCBubyBsb25nZXIgdGFrZXMgbW9yZSB0 aGFuIG9uZSB0aGluZyBhdCBhIHRpbWUsIGVpdGhlciBNeUNsYXNzLmltcGxlbWVu dChrZXksIHZhbHVlKSBvciBNeUNsYXNzLmltcGxlbWVudChvYmplY3QpIGJ1dCBO T1QgTXlDbGFzcy5pbXBsZW1lbnQobmV3IEZvbywgbmV3IEJhciwgbmV3IEJheiku IFNlZSBhbHNvOiB0aGUgY2xhc3MgSW1wbGVtZW50cyBtdXRhdG9yLiIpO0FycmF5 LmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGMpe2IuY2FsbCh0aGlzLGMpfSx0aGlz KTtyZXR1cm4gdGhpc31yZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSko KTsoZnVuY3Rpb24oKXt2YXIgYz1FbGVtZW50LnByb3RvdHlwZS5nZXRQb3NpdGlv bjt2YXIgYT1FbGVtZW50LnByb3RvdHlwZS5nZXRDb29yZGluYXRlcztmdW5jdGlv biBiKGUpe3JldHVybigvXig/OmJvZHl8aHRtbCkkL2kpLnRlc3QoZS50YWdOYW1l KX12YXIgZD1FbGVtZW50LnByb3RvdHlwZS5nZXRTaXplO0VsZW1lbnQuaW1wbGVt ZW50KHtnZXRTaXplOmZ1bmN0aW9uKCl7TW9vVG9vbHMudXBncmFkZUxvZygiMS4x ID4gMS4yOiBOT1RFOiBnZXRTaXplIGlzIGRpZmZlcmVudCBpbiAxLjI7IGl0IG5v IGxvbmdlciByZXR1cm5zIHZhbHVlcyBmb3Igc2l6ZSwgc2Nyb2xsLCBhbmQgc2Ny b2xsU2l6ZSwgYnV0IGluc3RlYWQganVzdCByZXR1cm5zIHgveSB2YWx1ZXMgZm9y IHRoZSBkaW1lbnNpb25zIG9mIHRoZSBlbGVtZW50LiIpO3ZhciBlPWQuYXBwbHko dGhpcyxhcmd1bWVudHMpO3JldHVybiAkbWVyZ2UoZSx7c2l6ZTplLHNjcm9sbDp0 aGlzLmdldFNjcm9sbCgpLHNjcm9sbFNpemU6dGhpcy5nZXRTY3JvbGxTaXplKCl9 KX0sZ2V0UG9zaXRpb246ZnVuY3Rpb24oZSl7aWYoZSYmJHR5cGUoZSk9PSJhcnJh eSIpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+IDEuMjogRWxlbWVudC5nZXRQ b3NpdGlvbiBubyBsb25nZXIgYWNjZXB0cyBhbiBhcnJheSBvZiBvdmVyZmxvd24g ZWxlbWVudHMgYnV0IHJhdGhlciwgb3B0aW9uYWxseSwgYSBzaW5nbGUgZWxlbWVu dCB0byBnZXQgcmVsYXRpdmUgY29vcmRpbmF0ZXMuIik7ZT1udWxsfXJldHVybiBj LmFwcGx5KHRoaXMsW2VdKX0sZ2V0Q29vcmRpbmF0ZXM6ZnVuY3Rpb24oZSl7aWYo ZSYmJHR5cGUoZSk9PSJhcnJheSIpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+ IDEuMjogRWxlbWVudC5nZXRDb29yZGluYXRlcyBubyBsb25nZXIgYWNjZXB0cyBh biBhcnJheSBvZiBvdmVyZmxvd24gZWxlbWVudHMgYnV0IHJhdGhlciwgb3B0aW9u YWxseSwgYSBzaW5nbGUgZWxlbWVudCB0byBnZXQgcmVsYXRpdmUgY29vcmRpbmF0 ZXMuIik7ZT1udWxsfXJldHVybiBhLmFwcGx5KHRoaXMsW2VdKX19KTtOYXRpdmUu aW1wbGVtZW50KFtEb2N1bWVudCxXaW5kb3ddLHtnZXRTaXplOmZ1bmN0aW9uKCl7 TW9vVG9vbHMudXBncmFkZUxvZygiMS4xID4gMS4yOiBOT1RFOiBnZXRTaXplIGlz IGRpZmZlcmVudCBpbiAxLjI7IGl0IG5vIGxvbmdlciByZXR1cm5zIHZhbHVlcyBm b3Igc2l6ZSwgc2Nyb2xsLCBhbmQgc2Nyb2xsU2l6ZSwgYnV0IGluc3RlYWQganVz dCByZXR1cm5zIHgveSB2YWx1ZXMgZm9yIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBl bGVtZW50LiIpO3ZhciBlO3ZhciBnPXRoaXMuZ2V0V2luZG93KCk7dmFyIGY9dGhp cy5nZXREb2N1bWVudCgpO2Y9KCFmLmNvbXBhdE1vZGV8fGYuY29tcGF0TW9kZT09 IkNTUzFDb21wYXQiKT9mLmh0bWw6Zi5ib2R5O2lmKEJyb3dzZXIuRW5naW5lLnBy ZXN0b3x8QnJvd3Nlci5FbmdpbmUud2Via2l0KXtlPXt4OmcuaW5uZXJXaWR0aCx5 OmcuaW5uZXJIZWlnaHR9fWVsc2V7ZT17eDpmLmNsaWVudFdpZHRoLHk6Zi5jbGll bnRIZWlnaHR9fXJldHVybiAkZXh0ZW5kKGUse3NpemU6ZSxzY3JvbGw6e3g6Zy5w YWdlWE9mZnNldHx8Zi5zY3JvbGxMZWZ0LHk6Zy5wYWdlWU9mZnNldHx8Zi5zY3Jv bGxUb3B9LHNjcm9sbFNpemU6e3g6TWF0aC5tYXgoZi5zY3JvbGxXaWR0aCxlLngp LHk6TWF0aC5tYXgoZi5zY3JvbGxIZWlnaHQsZS55KX19KX19KX0pKCk7RXZlbnQu a2V5cz1FdmVudC5LZXlzOyhmdW5jdGlvbigpe3ZhciBhPUVsZW1lbnQucHJvdG90 eXBlLnRvUXVlcnlTdHJpbmc7RWxlbWVudC5pbXBsZW1lbnQoe2dldEZvcm1FbGVt ZW50czpmdW5jdGlvbigpe01vb1Rvb2xzLnVwZ3JhZGVMb2coJzEuMSA+IDEuMjog RWxlbWVudC5nZXRGb3JtRWxlbWVudHMgaXMgZGVwcmVjYXRlZCwgdXNlIEVsZW1l bnQuZ2V0RWxlbWVudHMoImlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0Iik7Jyk7cmV0 dXJuIHRoaXMuZ2V0RWxlbWVudHMoImlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0Iil9 LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKGIpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEu MSA+IDEuMjogRWxlbWVudC5yZXBsYWNlV2l0aCBpcyBkZXByZWNhdGVkLCB1c2Ug RWxlbWVudC5yZXBsYWNlcyBpbnN0ZWFkLiIpO2I9JChiKTt0aGlzLnBhcmVudE5v ZGUucmVwbGFjZUNoaWxkKGIsdGhpcyk7cmV0dXJuIGJ9LHJlbW92ZTpmdW5jdGlv bigpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+IDEuMjogRWxlbWVudC5yZW1v dmUgaXMgZGVwcmVjYXRlZCAtIHVzZSBFbGVtZW50LmRpc3Bvc2UuIik7cmV0dXJu IHRoaXMuZGlzcG9zZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGdldFRleHQ6ZnVu Y3Rpb24oKXtNb29Ub29scy51cGdyYWRlTG9nKCcxLjEgPiAxLjI6IEVsZW1lbnQu Z2V0VGV4dCBpcyBkZXByZWNhdGVkIC0gdXNlIEVsZW1lbnQuZ2V0KCJ0ZXh0Iiku Jyk7cmV0dXJuIHRoaXMuZ2V0KCJ0ZXh0Iil9LHNldFRleHQ6ZnVuY3Rpb24oYil7 TW9vVG9vbHMudXBncmFkZUxvZygnMS4xID4gMS4yOiBFbGVtZW50LnNldFRleHQg aXMgZGVwcmVjYXRlZCAtIHVzZSBFbGVtZW50LnNldCgidGV4dCIsIHRleHQpLicp O3JldHVybiB0aGlzLnNldCgidGV4dCIsYil9LHNldEhUTUw6ZnVuY3Rpb24oKXtN b29Ub29scy51cGdyYWRlTG9nKCcxLjEgPiAxLjI6IEVsZW1lbnQuc2V0SFRNTCBp cyBkZXByZWNhdGVkIC0gdXNlIEVsZW1lbnQuc2V0KCJodG1sIiwgSFRNTCkuJyk7 cmV0dXJuIHRoaXMuc2V0KCJodG1sIixhcmd1bWVudHMpfSxnZXRIVE1MOmZ1bmN0 aW9uKCl7TW9vVG9vbHMudXBncmFkZUxvZygnMS4xID4gMS4yOiBFbGVtZW50Lmdl dEhUTUwgaXMgZGVwcmVjYXRlZCAtIHVzZSBFbGVtZW50LmdldCgiaHRtbCIpLicp O3JldHVybiB0aGlzLmdldCgiaHRtbCIpfSxnZXRUYWc6ZnVuY3Rpb24oKXtNb29U b29scy51cGdyYWRlTG9nKCcxLjEgPiAxLjI6IEVsZW1lbnQuZ2V0VGFnIGlzIGRl cHJlY2F0ZWQgLSB1c2UgRWxlbWVudC5nZXQoInRhZyIpLicpO3JldHVybiB0aGlz LmdldCgidGFnIil9LGdldFZhbHVlOmZ1bmN0aW9uKCl7TW9vVG9vbHMudXBncmFk ZUxvZygnMS4xID4gMS4yOiBFbGVtZW50LmdldFZhbHVlIGlzIGRlcHJlY2F0ZWQg LSB1c2UgRWxlbWVudC5nZXQoInZhbHVlIikuJyk7c3dpdGNoKHRoaXMuZ2V0VGFn KCkpe2Nhc2Uic2VsZWN0Ijp2YXIgYj1bXTskZWFjaCh0aGlzLm9wdGlvbnMsZnVu Y3Rpb24oYyl7aWYoYy5zZWxlY3RlZCl7Yi5wdXNoKCRwaWNrKGMudmFsdWUsYy50 ZXh0KSl9fSk7cmV0dXJuKHRoaXMubXVsdGlwbGUpP2I6YlswXTtjYXNlImlucHV0 IjppZighKHRoaXMuY2hlY2tlZCYmWyJjaGVja2JveCIsInJhZGlvIl0uY29udGFp bnModGhpcy50eXBlKSkmJiFbImhpZGRlbiIsInRleHQiLCJwYXNzd29yZCJdLmNv bnRhaW5zKHRoaXMudHlwZSkpe2JyZWFrfWNhc2UidGV4dGFyZWEiOnJldHVybiB0 aGlzLnZhbHVlfXJldHVybiBmYWxzZX0sdG9RdWVyeVN0cmluZzpmdW5jdGlvbigp e01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+IDEuMjogd2FybmluZyBFbGVtZW50 LnRvUXVlcnlTdHJpbmcgaXMgc2xpZ2h0bHkgZGlmZmVyZW50OyBpbnB1dHMgd2l0 aG91dCBuYW1lcyBhcmUgZXhjbHVkZWQsIGlucHV0cyB3aXRoIHR5cGUgPT0gc3Vi bWl0LCByZXNldCwgYW5kIGZpbGUgYXJlIGV4Y2x1ZGVkLCBhbmQgaW5wdXRzIHdp dGggdW5kZWZpbmVkIHZhbHVlcyBhcmUgZXhjbHVkZWQuIik7cmV0dXJuIGEuYXBw bHkodGhpcyxhcmd1bWVudHMpfX0pfSkoKTtFbGVtZW50LlByb3BlcnRpZXMucHJv cGVydGllcz17c2V0OmZ1bmN0aW9uKGEpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEu MSA+IDEuMjogRWxlbWVudC5zZXQoe3Byb3BlcnRpZXM6IHt9fSkgaXMgZGVwcmVj YXRlZDsgaW5zdGVhZCBvZiBwcm9wZXJ0aWVzLCBqdXN0IG5hbWUgdGhlIHZhbHVl cyBhdCB0aGUgcm9vdCBvZiB0aGUgb2JqZWN0IChFbGVtZW50LnNldCh7c3JjOiB1 cmx9KSkuIik7JEgoYSkuZWFjaChmdW5jdGlvbihjLGIpe3RoaXMuc2V0KGIsYyl9 LHRoaXMpfX07RWxlbWVudC5pbXBsZW1lbnQoe3NldE9wYWNpdHk6ZnVuY3Rpb24o YSl7TW9vVG9vbHMudXBncmFkZUxvZygnMS4xID4gMS4yOiBFbGVtZW50LnNldE9w YWNpdHkgaXMgZGVwcmVjYXRlZDsgdXNlIEVsZW1lbnQuc2V0U3R5bGUoIm9wYWNp dHkiLCB2YWx1ZSkuJyk7cmV0dXJuIHRoaXMuc2V0U3R5bGUoIm9wYWNpdHkiLGEp fX0pO0VsZW1lbnQuUHJvcGVydGllcy5zdHlsZXM9e3NldDpmdW5jdGlvbihhKXtN b29Ub29scy51cGdyYWRlTG9nKCcxLjEgPiAxLjI6IEVsZW1lbnQuc2V0KCJzdHls ZXMiKSBubyBsb25nZXIgYWNjZXB0cyBhIHN0cmluZyBhcyBhbiBhcmd1bWVudC4g UGFzcyBhbiBvYmplY3QgaW5zdGVhZC4nKTtpZigkdHlwZShhKT09InN0cmluZyIp e2Euc3BsaXQoIjsiKS5lYWNoKGZ1bmN0aW9uKGIpe3RoaXMuc2V0U3R5bGUoYi5z cGxpdCgiOiIpWzBdLGIuc3BsaXQoIjoiKVsxXSl9LHRoaXMpfWVsc2V7dGhpcy5z ZXRTdHlsZXMoYSl9fX07RnguaW1wbGVtZW50KHtjdXN0b206ZnVuY3Rpb24oYixh KXtNb29Ub29scy51cGdyYWRlTG9nKCIxLjEgPiAxLjI6IEZ4LmN1c3RvbSBpcyBk ZXByZWNhdGVkLiB1c2UgRnguc3RhcnQuIik7cmV0dXJuIHRoaXMuc3RhcnQoYixh KX0sY2xlYXJUaW1lcjpmdW5jdGlvbigpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEu MSA+IDEuMjogRnguY2xlYXJUaW1lciBpcyBkZXByZWNhdGVkLiB1c2UgRnguY2Fu Y2VsLiIpO3JldHVybiB0aGlzLmNhbmNlbCgpfSxzdG9wOmZ1bmN0aW9uKCl7TW9v VG9vbHMudXBncmFkZUxvZygiMS4xID4gMS4yOiBGeC5zdG9wIGlzIGRlcHJlY2F0 ZWQuIHVzZSBGeC5jYW5jZWwuIik7cmV0dXJuIHRoaXMuY2FuY2VsKCl9fSk7Rngu QmFzZT1uZXcgQ2xhc3Moe0V4dGVuZHM6RngsaW5pdGlhbGl6ZTpmdW5jdGlvbigp e01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+IDEuMjogRnguQmFzZSBpcyBkZXBy ZWNhdGVkLiB1c2UgRnguIik7dGhpcy5wYXJlbnQuYXBwbHkodGhpcyxhcmd1bWVu dHMpfX0pO0Z4LlN0eWxlPW5ldyBDbGFzcyh7RXh0ZW5kczpGeC5Ud2Vlbixpbml0 aWFsaXplOmZ1bmN0aW9uKGIsYyxhKXtNb29Ub29scy51cGdyYWRlTG9nKCIxLjEg PiAxLjI6IEZ4LlN0eWxlIGlzIGRlcHJlY2F0ZWQuIHVzZSBGeC5Ud2Vlbi4iKTt0 aGlzLnByb3BlcnR5PWM7dGhpcy5wYXJlbnQoYixhKX0sc3RhcnQ6ZnVuY3Rpb24o YixhKXtyZXR1cm4gdGhpcy5wYXJlbnQodGhpcy5wcm9wZXJ0eSxiLGEpfSxzZXQ6 ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucGFyZW50KHRoaXMucHJvcGVydHksYSl9 LGhpZGU6ZnVuY3Rpb24oKXtNb29Ub29scy51cGdyYWRlTG9nKCIxLjEgPiAxLjI6 IEZ4LlN0eWxlIC5oaWRlKCkgaXMgZGVwcmVjYXRlZDsgdXNlIEZ4LlR3ZWVuIC5z ZXQoMCkgaW5zdGVhZCIpO3JldHVybiB0aGlzLnNldCgwKX19KTtFbGVtZW50Lmlt cGxlbWVudCh7ZWZmZWN0OmZ1bmN0aW9uKGIsYSl7TW9vVG9vbHMudXBncmFkZUxv ZygiMS4xID4gMS4yOiBFbGVtZW50LmVmZmVjdCBpcyBkZXByZWNhdGVkOyB1c2Ug RnguVHdlZW4gb3IgRWxlbWVudC50d2Vlbi4iKTtyZXR1cm4gbmV3IEZ4LlN0eWxl KHRoaXMsYixhKX19KTtGeC5TdHlsZXM9bmV3IENsYXNzKHtFeHRlbmRzOkZ4Lk1v cnBoLGluaXRpYWxpemU6ZnVuY3Rpb24oKXtNb29Ub29scy51cGdyYWRlTG9nKCIx LjEgPiAxLjI6IEZ4LlN0eWxlcyBpcyBkZXByZWNhdGVkLiB1c2UgRnguTW9ycGgu Iik7dGhpcy5wYXJlbnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pO0VsZW1lbnQu aW1wbGVtZW50KHtlZmZlY3RzOmZ1bmN0aW9uKGEpe01vb1Rvb2xzLnVwZ3JhZGVM b2coIjEuMSA+IDEuMjogRWxlbWVudC5lZmZlY3RzIGlzIGRlcHJlY2F0ZWQ7IHVz ZSBGeC5Nb3JwaCBvciBFbGVtZW50Lm1vcnBoLiIpO3JldHVybiBuZXcgRnguTW9y cGgodGhpcyxhKX19KTtGeC5TY3JvbGwuaW1wbGVtZW50KHtzY3JvbGxUbzpmdW5j dGlvbihiLGEpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+IDEuMjogRnguU2Ny b2xsJ3MgLnNjcm9sbFRvIGlzIGRlcHJlY2F0ZWQ7IHVzZSAuc3RhcnQuIik7cmV0 dXJuIHRoaXMuc3RhcnQoYixhKX19KTtSZXF1ZXN0LmltcGxlbWVudCh7b25TdGF0 ZUNoYW5nZTpmdW5jdGlvbigpe2lmKHRoaXMueGhyLnJlYWR5U3RhdGUhPTR8fCF0 aGlzLnJ1bm5pbmcpe3JldHVybn10aGlzLnJ1bm5pbmc9ZmFsc2U7dGhpcy5zdGF0 dXM9MDskdHJ5KGZ1bmN0aW9uKCl7dGhpcy5zdGF0dXM9dGhpcy54aHIuc3RhdHVz fS5iaW5kKHRoaXMpKTt0aGlzLnhoci5vbnJlYWR5c3RhdGVjaGFuZ2U9JGVtcHR5 O3RoaXMucmVzcG9uc2U9e3RleHQ6dGhpcy54aHIucmVzcG9uc2VUZXh0LHhtbDp0 aGlzLnhoci5yZXNwb25zZVhNTH07aWYodGhpcy5vcHRpb25zLmlzU3VjY2Vzcy5j YWxsKHRoaXMsdGhpcy5zdGF0dXMpKXt0aGlzLnN1Y2Nlc3ModGhpcy5yZXNwb25z ZS50ZXh0LHRoaXMucmVzcG9uc2UueG1sKX1lbHNle3RoaXMuZmFpbHVyZSh0aGlz LnJlc3BvbnNlLnRleHQsdGhpcy5yZXNwb25zZS54bWwpfX0sZmFpbHVyZTpmdW5j dGlvbigpe3RoaXMub25GYWlsdXJlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sb25G YWlsdXJlOmZ1bmN0aW9uKCl7TW9vVG9vbHMudXBncmFkZUxvZygiMS4xID4gMS4y OiBOb3RlIHRoYXQgb25Db21wbGV0ZSBkb2VzIG5vdCByZWNlaXZlIGFyZ3VtZW50 cyBpbiAxLjIuIEFsc28gbm90ZSB0aGF0IG9uQ29tcGxldGUgaXMgaW52b2tlZCBv biBCT1RIIHN1Y2Nlc3MgYW5kIGZhaWx1cmUgKHdoaWxlIGluIDEuMSBpdCB3YXMg b25seSBpbnZva2VkIG9uIHN1Y2Nlc3MpLiBVc2UgdGhlIG9uU3VjY2VzcyBldmVu dCBpbnN0ZWFkIGlmIHlvdSB3aXNoIHRvIGxpbWl0IHRoaXMgaW52b2NhdGlvbiB0 byBzdWNjZXNzLiIpO3RoaXMuZmlyZUV2ZW50KCJjb21wbGV0ZSIsYXJndW1lbnRz KS5maXJlRXZlbnQoImZhaWx1cmUiLHRoaXMueGhyKX19KTt2YXIgWEhSPW5ldyBD bGFzcyh7RXh0ZW5kczpSZXF1ZXN0LG9wdGlvbnM6e3VwZGF0ZTpmYWxzZX0saW5p dGlhbGl6ZTpmdW5jdGlvbihhKXtNb29Ub29scy51cGdyYWRlTG9nKCIxLjEgPiAx LjI6IFhIUiBpcyBkZXByZWNhdGVkLiBVc2UgUmVxdWVzdC4iKTt0aGlzLnBhcmVu dChhKTt0aGlzLnRyYW5zcG9ydD10aGlzLnhocn0scmVxdWVzdDpmdW5jdGlvbihh KXtNb29Ub29scy51cGdyYWRlTG9nKCIxLjEgPiAxLjI6IFhIUi5yZXF1ZXN0KCkg aXMgZGVwcmVjYXRlZC4gVXNlIFJlcXVlc3Quc2VuZCgpIGluc3RlYWQuIik7cmV0 dXJuIHRoaXMuc2VuZCh0aGlzLnVybCxhfHx0aGlzLm9wdGlvbnMuZGF0YSl9LHNl bmQ6ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5jaGVjayhhcmd1bWVudHMuY2FsbGVl LGEsYikpe3JldHVybiB0aGlzfXJldHVybiB0aGlzLnBhcmVudCh7dXJsOmEsZGF0 YTpifSl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYixhKXtiPXRoaXMucHJvY2Vzc1Njcmlw dHMoYik7aWYodGhpcy5vcHRpb25zLnVwZGF0ZSl7JCh0aGlzLm9wdGlvbnMudXBk YXRlKS5lbXB0eSgpLnNldCgiaHRtbCIsYil9dGhpcy5vblN1Y2Nlc3MoYixhKX0s ZmFpbHVyZTpmdW5jdGlvbigpe3RoaXMuZmlyZUV2ZW50KCJmYWlsdXJlIix0aGlz Lnhocil9fSk7dmFyIEFqYXg9bmV3IENsYXNzKHtFeHRlbmRzOlhIUixpbml0aWFs aXplOmZ1bmN0aW9uKGIsYSl7TW9vVG9vbHMudXBncmFkZUxvZygiMS4xID4gMS4y OiBBamF4IGlzIGRlcHJlY2F0ZWQuIFVzZSBSZXF1ZXN0LiIpO3RoaXMudXJsPWI7 dGhpcy5wYXJlbnQoYSl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYixhKXt0aGlzLnByb2Nl c3NTY3JpcHRzKGIpO3Jlc3BvbnNlPXRoaXMucmVzcG9uc2U7cmVzcG9uc2UuaHRt bD1iLnN0cmlwU2NyaXB0cyhmdW5jdGlvbihjKXtyZXNwb25zZS5qYXZhc2NyaXB0 PWN9KTtpZih0aGlzLm9wdGlvbnMudXBkYXRlKXskKHRoaXMub3B0aW9ucy51cGRh dGUpLmVtcHR5KCkuc2V0KCJodG1sIixyZXNwb25zZS5odG1sKX1pZih0aGlzLm9w dGlvbnMuZXZhbFNjcmlwdHMpeyRleGVjKHJlc3BvbnNlLmphdmFzY3JpcHQpfXRo aXMub25TdWNjZXNzKGIsYSl9fSk7KGZ1bmN0aW9uKCl7dmFyIGE9RWxlbWVudC5w cm90b3R5cGUuc2VuZDtFbGVtZW50LmltcGxlbWVudCh7c2VuZDpmdW5jdGlvbihi KXtpZigkdHlwZShiKT09InN0cmluZyIpe3JldHVybiBhLmFwcGx5KHRoaXMsYXJn dW1lbnRzKX1pZigkdHlwZShiKT09Im9iamVjdCIpe01vb1Rvb2xzLnVwZ3JhZGVM b2coIjEuMSA+IDEuMjogRWxlbWVudC5zZW5kIG5vIGxvbmdlciB0YWtlcyBhbiBv cHRpb25zIGFyZ3VtZW50IGFzIGl0cyBvYmplY3QgYnV0IHJhdGhlciBhIHVybC4g U2VlIGRvY3MuIik7dGhpcy5zZXQoInNlbmQiLGIpO2EuY2FsbCh0aGlzKX1yZXR1 cm4gdGhpc319KX0pKCk7SlNPTi5SZW1vdGU9bmV3IENsYXNzKHtvcHRpb25zOntr ZXk6Impzb24ifSxFeHRlbmRzOlJlcXVlc3QuSlNPTixpbml0aWFsaXplOmZ1bmN0 aW9uKGIsYSl7TW9vVG9vbHMudXBncmFkZUxvZygiSlNPTi5SZW1vdGUgaXMgZGVw cmVjYXRlZC4gVXNlIFJlcXVlc3QuSlNPTiIpO3RoaXMucGFyZW50KGEpO3RoaXMu b25Db21wbGV0ZT0kZW1wdHk7dGhpcy51cmw9Yn0sc2VuZDpmdW5jdGlvbihhKXtp ZighdGhpcy5jaGVjayhhcmd1bWVudHMuY2FsbGVlLGEpKXtyZXR1cm4gdGhpc31y ZXR1cm4gdGhpcy5wYXJlbnQoe3VybDp0aGlzLnVybCxkYXRhOntqc29uOkpzb24u ZW5jb2RlKGEpfX0pfSxmYWlsdXJlOmZ1bmN0aW9uKCl7dGhpcy5maXJlRXZlbnQo ImZhaWx1cmUiLHRoaXMueGhyKX19KTtDb29raWUuc2V0PWZ1bmN0aW9uKGIsYyxh KXtNb29Ub29scy51cGdyYWRlTG9nKCIxLjEgPiAxLjI6IENvb2tpZS5zZXQgaXMg ZGVwcmVjYXRlZC4gVXNlIENvb2tpZS53cml0ZSIpO3JldHVybiBuZXcgQ29va2ll KGIsYSkud3JpdGUoYyl9O0Nvb2tpZS5nZXQ9ZnVuY3Rpb24oYSl7TW9vVG9vbHMu dXBncmFkZUxvZygiMS4xID4gMS4yOiBDb29raWUuZ2V0IGlzIGRlcHJlY2F0ZWQu IFVzZSBDb29raWUucmVhZCIpO3JldHVybiBuZXcgQ29va2llKGEpLnJlYWQoKX07 Q29va2llLnJlbW92ZT1mdW5jdGlvbihiLGEpe01vb1Rvb2xzLnVwZ3JhZGVMb2co IjEuMSA+IDEuMjogQ29va2llLnJlbW92ZSBpcyBkZXByZWNhdGVkLiBVc2UgQ29v a2llLmRpc3Bvc2UiKTtyZXR1cm4gbmV3IENvb2tpZShiLGEpLmRpc3Bvc2UoKX07 SlNPTi50b1N0cmluZz1mdW5jdGlvbihhKXtNb29Ub29scy51cGdyYWRlTG9nKCIx LjEgPiAxLjI6IEpTT04udG9TdHJpbmcgaXMgZGVwcmVjYXRlZC4gVXNlIEpTT04u ZW5jb2RlIik7cmV0dXJuIEpTT04uZW5jb2RlKGEpfTtKU09OLmV2YWx1YXRlPWZ1 bmN0aW9uKGEpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+IDEuMjogSlNPTi5l dmFsdWF0ZSBpcyBkZXByZWNhdGVkLiBVc2UgSlNPTi5kZWNvZGUiKTtyZXR1cm4g SlNPTi5kZWNvZGUoYSl9O3ZhciBKc29uPUpTT047TmF0aXZlLmltcGxlbWVudChb RWxlbWVudCxEb2N1bWVudF0se2dldEVsZW1lbnRzQnlDbGFzc05hbWU6ZnVuY3Rp b24oYSl7TW9vVG9vbHMudXBncmFkZUxvZygiMS4xID4gMS4yOiBFbGVtZW50LmZp bHRlckJ5VGFnIGlzIGRlcHJlY2F0ZWQuIik7cmV0dXJuIHRoaXMuZ2V0RWxlbWVu dHMoIi4iK2EpfSxnZXRFbGVtZW50c0J5U2VsZWN0b3I6ZnVuY3Rpb24oYSl7TW9v VG9vbHMudXBncmFkZUxvZygiMS4xID4gMS4yOiBFbGVtZW50LmdldEVsZW1lbnRz QnlTZWxlY3RvciBpcyBkZXByZWNhdGVkLiBVc2UgZ2V0RWxlbWVudHMoKSIpO3Jl dHVybiB0aGlzLmdldEVsZW1lbnRzKGEpfX0pO0VsZW1lbnRzLmltcGxlbWVudCh7 ZmlsdGVyQnlUYWc6ZnVuY3Rpb24oYSl7TW9vVG9vbHMudXBncmFkZUxvZygiMS4x ID4gMS4yOiBFbGVtZW50cy5maWx0ZXJCeVRhZyBpcyBkZXByZWNhdGVkLiBVc2Ug RWxlbWVudHMuZmlsdGVyLiIpO3JldHVybiB0aGlzLmZpbHRlcihhKX0sZmlsdGVy QnlDbGFzczpmdW5jdGlvbihhKXtNb29Ub29scy51cGdyYWRlTG9nKCIxLjEgPiAx LjI6IEVsZW1lbnRzLmZpbHRlckJ5Q2xhc3MgaXMgZGVwcmVjYXRlZC4gVXNlIEVs ZW1lbnRzLmZpbHRlci4iKTtyZXR1cm4gdGhpcy5maWx0ZXIoIi4iK2EpfSxmaWx0 ZXJCeUlkOmZ1bmN0aW9uKGEpe01vb1Rvb2xzLnVwZ3JhZGVMb2coIjEuMSA+IDEu MjogRWxlbWVudHMuZmlsdGVyQnlJZCBpcyBkZXByZWNhdGVkLiBVc2UgRWxlbWVu dHMuZmlsdGVyLiIpO3JldHVybiB0aGlzLmZpbHRlcigiIyIrYSl9LGZpbHRlckJ5 QXR0cmlidXRlOmZ1bmN0aW9uKGMsYSxkKXtNb29Ub29scy51cGdyYWRlTG9nKCIx LjEgPiAxLjI6IEVsZW1lbnRzLmZpbHRlckJ5QXR0cmlidXRlIGlzIGRlcHJlY2F0 ZWQuIFVzZSBFbGVtZW50cy5maWx0ZXIuIik7dmFyIGI9dGhpcy5maWx0ZXIoIlsi K2MrKGF8fCIiKSsoZHx8IiIpKyJdIik7aWYoZCl7Yj1iLmZpbHRlcigiWyIrYysi XSIpfXJldHVybiBifX0pO3ZhciAkRT1mdW5jdGlvbihhLGIpe01vb1Rvb2xzLnVw Z3JhZGVMb2coIjEuMSA+IDEuMjogJEUgaXMgZGVwcmVjYXRlZCwgdXNlIGRvY3Vt ZW50LmdldEVsZW1lbnQuIik7cmV0dXJuKCQoYil8fGRvY3VtZW50KS5nZXRFbGVt ZW50KGEpfTt2YXIgJEVTPWZ1bmN0aW9uKGEsYil7TW9vVG9vbHMudXBncmFkZUxv ZygiMS4xID4gMS4yOiAkRVMgaXMgZGVwcmVjYXRlZC4gVXNlICQkLiIpO3JldHVy bigkKGIpfHxkb2N1bWVudCkuZ2V0RWxlbWVudHMoYSl9OyhmdW5jdGlvbigpe2lm KCF3aW5kb3cuVGlwcyl7cmV0dXJufVRpcHMuaW1wbGVtZW50KHtpbml0aWFsaXpl OmZ1bmN0aW9uKCl7TW9vVG9vbHMudXBncmFkZUxvZygiMS4xID4gMS4yOiBUaXBz IERPTSBlbGVtZW50IGxheW91dCBoYXMgY2hhbmdlZCBhbmQgeW91ciBDU1MgY2xh c3NlcyBtYXkgbmVlZCB0byBjaGFuZ2UuIik7dmFyIGE9QXJyYXkubGluayhhcmd1 bWVudHMse29wdGlvbnM6T2JqZWN0LnR5cGUsZWxlbWVudHM6JGRlZmluZWR9KTt0 aGlzLnNldE9wdGlvbnMoYS5vcHRpb25zKTtpZih0aGlzLm9wdGlvbnMub2Zmc2V0 cyl7TW9vVG9vbHMudXBncmFkZUxvZygnMS4xID4gMS4yOiBUaXBzIG5vIGxvbmdl ciBoYXZlIGFuICJvZmZzZXRzIiBvcHRpb247IHVzZSAib2Zmc2V0Ii4nKTt0aGlz Lm9wdGlvbnMub2Zmc2V0PXRoaXMub3B0aW9ucy5vZmZzZXRzfWRvY3VtZW50Lmlk KHRoaXMpO3RoaXMuYWRkRXZlbnQoInNob3ciLGZ1bmN0aW9uKCl7dGhpcy50aXAu YWRkQ2xhc3MoInRvb2wtdGlwIik7dGhpcy50aXAuZ2V0RWxlbWVudCgiLnRpcC10 aXRsZSIpLmFkZENsYXNzKCJ0b29sLXRpdGxlIik7dGhpcy50aXAuZ2V0RWxlbWVu dCgiLnRpcC10ZXh0IikuYWRkQ2xhc3MoInRvb2wtdGV4dCIpfSk7dGhpcy5wYXJz ZVRpdGxlKGEuZWxlbWVudHMpO2lmKGEuZWxlbWVudHMpe3RoaXMuYXR0YWNoKGEu ZWxlbWVudHMpfX0scGFyc2VUaXRsZTpmdW5jdGlvbihhKXthLmVhY2goZnVuY3Rp b24oYil7dmFyIGM9Yi5nZXQoInRpdGxlIik7aWYoYy50ZXN0KCI6OiIpKXtNb29U b29scy51cGdyYWRlTG9nKCcxLjEgPiAxLjI6IFRpcHMgbm8gbG9uZ2VyIHBhcnNl IHRoZSB0aXRsZSBhdHRyaWJ1dGUgZm9yICI6OiIgZm9yIHRpdGxlL2NhcHRpb247 IHVzZSB0aXRsZSBhbmQgcmVsIGF0dHJpYnV0ZXMgaW5zdGVhZC4nKTtiLnN0b3Jl KCJ0aXA6dGl0bGUiLGMuc3BsaXQoIjo6IilbMF0pO2Iuc3RvcmUoInRpcDp0ZXh0 IixjLnNwbGl0KCI6OiIpWzFdKTtiLnNldCgidGl0bGUiLCIiKX19KX19KX0pKCk7 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=jquery.js Content-Type: application/x-javascript; name=jquery.js Content-Location: http://ege.edu.ru/common/js/jquery.js Content-Transfer-Encoding: Base64 LyohCiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjEuNy4yCiAqIGh0dHA6 Ly9qcXVlcnkuY29tLwogKgogKiBDb3B5cmlnaHQgMjAxMSwgSm9obiBSZXNpZwog KiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBs aWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBJbmNs dWRlcyBTaXp6bGUuanMKICogaHR0cDovL3NpenpsZWpzLmNvbS8KICogQ29weXJp Z2h0IDIwMTEsIFRoZSBEb2pvIEZvdW5kYXRpb24KICogUmVsZWFzZWQgdW5kZXIg dGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgogKgogKiBEYXRlOiBXZWQg TWFyIDIxIDEyOjQ2OjM0IDIwMTIgLTA3MDAKICovCihmdW5jdGlvbiggd2luZG93 LCB1bmRlZmluZWQgKSB7CgovLyBVc2UgdGhlIGNvcnJlY3QgZG9jdW1lbnQgYWNj b3JkaW5nbHkgd2l0aCB3aW5kb3cgYXJndW1lbnQgKHNhbmRib3gpCnZhciBkb2N1 bWVudCA9IHdpbmRvdy5kb2N1bWVudCwKCW5hdmlnYXRvciA9IHdpbmRvdy5uYXZp Z2F0b3IsCglsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjsKdmFyIGpRdWVyeSA9 IChmdW5jdGlvbigpIHsKCi8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5 CnZhciBqUXVlcnkgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7CgkJ Ly8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0dWFsbHkganVzdCB0aGUgaW5pdCBj b25zdHJ1Y3RvciAnZW5oYW5jZWQnCgkJcmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5p dCggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3RqUXVlcnkgKTsKCX0sCgoJLy8gTWFw IG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlCglfalF1ZXJ5ID0gd2lu ZG93LmpRdWVyeSwKCgkvLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3 cml0ZQoJXyQgPSB3aW5kb3cuJCwKCgkvLyBBIGNlbnRyYWwgcmVmZXJlbmNlIHRv IHRoZSByb290IGpRdWVyeShkb2N1bWVudCkKCXJvb3RqUXVlcnksCgoJLy8gQSBz aW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3Mgb3IgSUQgc3RyaW5n cwoJLy8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8dGFnPiB0byBhdm9pZCBYU1Mgdmlh IGxvY2F0aW9uLmhhc2ggKCM5NTIxKQoJcXVpY2tFeHByID0gL14oPzpbXiM8XSoo PFtcd1xXXSs+KVtePl0qJHwjKFtcd1wtXSopJCkvLAoKCS8vIENoZWNrIGlmIGEg c3RyaW5nIGhhcyBhIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlciBpbiBpdAoJcm5v dHdoaXRlID0gL1xTLywKCgkvLyBVc2VkIGZvciB0cmltbWluZyB3aGl0ZXNwYWNl Cgl0cmltTGVmdCA9IC9eXHMrLywKCXRyaW1SaWdodCA9IC9ccyskLywKCgkvLyBN YXRjaCBhIHN0YW5kYWxvbmUgdGFnCglyc2luZ2xlVGFnID0gL148KFx3Kylccypc Lz8+KD86PFwvXDE+KT8kLywKCgkvLyBKU09OIFJlZ0V4cAoJcnZhbGlkY2hhcnMg PSAvXltcXSw6e31cc10qJC8sCglydmFsaWRlc2NhcGUgPSAvXFwoPzpbIlxcXC9i Zm5ydF18dVswLTlhLWZBLUZdezR9KS9nLAoJcnZhbGlkdG9rZW5zID0gLyJbXiJc XFxuXHJdKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/XGQrKD86XC5cZCopPyg/OltlRV1b K1wtXT9cZCspPy9nLAoJcnZhbGlkYnJhY2VzID0gLyg/Ol58OnwsKSg/OlxzKlxb KSsvZywKCgkvLyBVc2VyYWdlbnQgUmVnRXhwCglyd2Via2l0ID0gLyh3ZWJraXQp WyBcL10oW1x3Ll0rKS8sCglyb3BlcmEgPSAvKG9wZXJhKSg/Oi4qdmVyc2lvbik/ WyBcL10oW1x3Ll0rKS8sCglybXNpZSA9IC8obXNpZSkgKFtcdy5dKykvLAoJcm1v emlsbGEgPSAvKG1vemlsbGEpKD86Lio/IHJ2OihbXHcuXSspKT8vLAoKCS8vIE1h dGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZwoJcmRhc2hBbHBoYSA9 IC8tKFthLXpdfFswLTldKS9pZywKCXJtc1ByZWZpeCA9IC9eLW1zLS8sCgoJLy8g VXNlZCBieSBqUXVlcnkuY2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJlcGxhY2Uo KQoJZmNhbWVsQ2FzZSA9IGZ1bmN0aW9uKCBhbGwsIGxldHRlciApIHsKCQlyZXR1 cm4gKCBsZXR0ZXIgKyAiIiApLnRvVXBwZXJDYXNlKCk7Cgl9LAoKCS8vIEtlZXAg YSBVc2VyQWdlbnQgc3RyaW5nIGZvciB1c2Ugd2l0aCBqUXVlcnkuYnJvd3NlcgoJ dXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudCwKCgkvLyBGb3IgbWF0Y2hp bmcgdGhlIGVuZ2luZSBhbmQgdmVyc2lvbiBvZiB0aGUgYnJvd3NlcgoJYnJvd3Nl ck1hdGNoLAoKCS8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSByZWFkeQoJcmVh ZHlMaXN0LAoKCS8vIFRoZSByZWFkeSBldmVudCBoYW5kbGVyCglET01Db250ZW50 TG9hZGVkLAoKCS8vIFNhdmUgYSByZWZlcmVuY2UgdG8gc29tZSBjb3JlIG1ldGhv ZHMKCXRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZywKCWhhc093 biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksCglwdXNoID0gQXJy YXkucHJvdG90eXBlLnB1c2gsCglzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGlj ZSwKCXRyaW0gPSBTdHJpbmcucHJvdG90eXBlLnRyaW0sCglpbmRleE9mID0gQXJy YXkucHJvdG90eXBlLmluZGV4T2YsCgoJLy8gW1tDbGFzc11dIC0+IHR5cGUgcGFp cnMKCWNsYXNzMnR5cGUgPSB7fTsKCmpRdWVyeS5mbiA9IGpRdWVyeS5wcm90b3R5 cGUgPSB7Cgljb25zdHJ1Y3RvcjogalF1ZXJ5LAoJaW5pdDogZnVuY3Rpb24oIHNl bGVjdG9yLCBjb250ZXh0LCByb290alF1ZXJ5ICkgewoJCXZhciBtYXRjaCwgZWxl bSwgcmV0LCBkb2M7CgoJCS8vIEhhbmRsZSAkKCIiKSwgJChudWxsKSwgb3IgJCh1 bmRlZmluZWQpCgkJaWYgKCAhc2VsZWN0b3IgKSB7CgkJCXJldHVybiB0aGlzOwoJ CX0KCgkJLy8gSGFuZGxlICQoRE9NRWxlbWVudCkKCQlpZiAoIHNlbGVjdG9yLm5v ZGVUeXBlICkgewoJCQl0aGlzLmNvbnRleHQgPSB0aGlzWzBdID0gc2VsZWN0b3I7 CgkJCXRoaXMubGVuZ3RoID0gMTsKCQkJcmV0dXJuIHRoaXM7CgkJfQoKCQkvLyBU aGUgYm9keSBlbGVtZW50IG9ubHkgZXhpc3RzIG9uY2UsIG9wdGltaXplIGZpbmRp bmcgaXQKCQlpZiAoIHNlbGVjdG9yID09PSAiYm9keSIgJiYgIWNvbnRleHQgJiYg ZG9jdW1lbnQuYm9keSApIHsKCQkJdGhpcy5jb250ZXh0ID0gZG9jdW1lbnQ7CgkJ CXRoaXNbMF0gPSBkb2N1bWVudC5ib2R5OwoJCQl0aGlzLnNlbGVjdG9yID0gc2Vs ZWN0b3I7CgkJCXRoaXMubGVuZ3RoID0gMTsKCQkJcmV0dXJuIHRoaXM7CgkJfQoK CQkvLyBIYW5kbGUgSFRNTCBzdHJpbmdzCgkJaWYgKCB0eXBlb2Ygc2VsZWN0b3Ig PT09ICJzdHJpbmciICkgewoJCQkvLyBBcmUgd2UgZGVhbGluZyB3aXRoIEhUTUwg c3RyaW5nIG9yIGFuIElEPwoJCQlpZiAoIHNlbGVjdG9yLmNoYXJBdCgwKSA9PT0g IjwiICYmIHNlbGVjdG9yLmNoYXJBdCggc2VsZWN0b3IubGVuZ3RoIC0gMSApID09 PSAiPiIgJiYgc2VsZWN0b3IubGVuZ3RoID49IDMgKSB7CgkJCQkvLyBBc3N1bWUg dGhhdCBzdHJpbmdzIHRoYXQgc3RhcnQgYW5kIGVuZCB3aXRoIDw+IGFyZSBIVE1M IGFuZCBza2lwIHRoZSByZWdleCBjaGVjawoJCQkJbWF0Y2ggPSBbIG51bGwsIHNl bGVjdG9yLCBudWxsIF07CgoJCQl9IGVsc2UgewoJCQkJbWF0Y2ggPSBxdWlja0V4 cHIuZXhlYyggc2VsZWN0b3IgKTsKCQkJfQoKCQkJLy8gVmVyaWZ5IGEgbWF0Y2gs IGFuZCB0aGF0IG5vIGNvbnRleHQgd2FzIHNwZWNpZmllZCBmb3IgI2lkCgkJCWlm ICggbWF0Y2ggJiYgKG1hdGNoWzFdIHx8ICFjb250ZXh0KSApIHsKCgkJCQkvLyBI QU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSkKCQkJCWlmICggbWF0Y2hbMV0gKSB7 CgkJCQkJY29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250 ZXh0WzBdIDogY29udGV4dDsKCQkJCQlkb2MgPSAoIGNvbnRleHQgPyBjb250ZXh0 Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IGRvY3VtZW50ICk7CgoJCQkJCS8v IElmIGEgc2luZ2xlIHN0cmluZyBpcyBwYXNzZWQgaW4gYW5kIGl0J3MgYSBzaW5n bGUgdGFnCgkJCQkJLy8ganVzdCBkbyBhIGNyZWF0ZUVsZW1lbnQgYW5kIHNraXAg dGhlIHJlc3QKCQkJCQlyZXQgPSByc2luZ2xlVGFnLmV4ZWMoIHNlbGVjdG9yICk7 CgoJCQkJCWlmICggcmV0ICkgewoJCQkJCQlpZiAoIGpRdWVyeS5pc1BsYWluT2Jq ZWN0KCBjb250ZXh0ICkgKSB7CgkJCQkJCQlzZWxlY3RvciA9IFsgZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCggcmV0WzFdICkgXTsKCQkJCQkJCWpRdWVyeS5mbi5hdHRy LmNhbGwoIHNlbGVjdG9yLCBjb250ZXh0LCB0cnVlICk7CgoJCQkJCQl9IGVsc2Ug ewoJCQkJCQkJc2VsZWN0b3IgPSBbIGRvYy5jcmVhdGVFbGVtZW50KCByZXRbMV0g KSBdOwoJCQkJCQl9CgoJCQkJCX0gZWxzZSB7CgkJCQkJCXJldCA9IGpRdWVyeS5i dWlsZEZyYWdtZW50KCBbIG1hdGNoWzFdIF0sIFsgZG9jIF0gKTsKCQkJCQkJc2Vs ZWN0b3IgPSAoIHJldC5jYWNoZWFibGUgPyBqUXVlcnkuY2xvbmUocmV0LmZyYWdt ZW50KSA6IHJldC5mcmFnbWVudCApLmNoaWxkTm9kZXM7CgkJCQkJfQoKCQkJCQly ZXR1cm4galF1ZXJ5Lm1lcmdlKCB0aGlzLCBzZWxlY3RvciApOwoKCQkJCS8vIEhB TkRMRTogJCgiI2lkIikKCQkJCX0gZWxzZSB7CgkJCQkJZWxlbSA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCBtYXRjaFsyXSApOwoKCQkJCQkvLyBDaGVjayBwYXJl bnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJucwoJCQkJ CS8vIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQgIzY5 NjMKCQkJCQlpZiAoIGVsZW0gJiYgZWxlbS5wYXJlbnROb2RlICkgewoJCQkJCQkv LyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgSUUgYW5kIE9wZXJhIHJldHVybiBpdGVt cwoJCQkJCQkvLyBieSBuYW1lIGluc3RlYWQgb2YgSUQKCQkJCQkJaWYgKCBlbGVt LmlkICE9PSBtYXRjaFsyXSApIHsKCQkJCQkJCXJldHVybiByb290alF1ZXJ5LmZp bmQoIHNlbGVjdG9yICk7CgkJCQkJCX0KCgkJCQkJCS8vIE90aGVyd2lzZSwgd2Ug aW5qZWN0IHRoZSBlbGVtZW50IGRpcmVjdGx5IGludG8gdGhlIGpRdWVyeSBvYmpl Y3QKCQkJCQkJdGhpcy5sZW5ndGggPSAxOwoJCQkJCQl0aGlzWzBdID0gZWxlbTsK CQkJCQl9CgoJCQkJCXRoaXMuY29udGV4dCA9IGRvY3VtZW50OwoJCQkJCXRoaXMu c2VsZWN0b3IgPSBzZWxlY3RvcjsKCQkJCQlyZXR1cm4gdGhpczsKCQkJCX0KCgkJ CS8vIEhBTkRMRTogJChleHByLCAkKC4uLikpCgkJCX0gZWxzZSBpZiAoICFjb250 ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkgewoJCQkJcmV0dXJuICggY29udGV4dCB8 fCByb290alF1ZXJ5ICkuZmluZCggc2VsZWN0b3IgKTsKCgkJCS8vIEhBTkRMRTog JChleHByLCBjb250ZXh0KQoJCQkvLyAod2hpY2ggaXMganVzdCBlcXVpdmFsZW50 IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcikKCQkJfSBlbHNlIHsKCQkJCXJldHVy biB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTsK CQkJfQoKCQkvLyBIQU5ETEU6ICQoZnVuY3Rpb24pCgkJLy8gU2hvcnRjdXQgZm9y IGRvY3VtZW50IHJlYWR5CgkJfSBlbHNlIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24o IHNlbGVjdG9yICkgKSB7CgkJCXJldHVybiByb290alF1ZXJ5LnJlYWR5KCBzZWxl Y3RvciApOwoJCX0KCgkJaWYgKCBzZWxlY3Rvci5zZWxlY3RvciAhPT0gdW5kZWZp bmVkICkgewoJCQl0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3Iuc2VsZWN0b3I7CgkJ CXRoaXMuY29udGV4dCA9IHNlbGVjdG9yLmNvbnRleHQ7CgkJfQoKCQlyZXR1cm4g alF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IsIHRoaXMgKTsKCX0sCgoJLy8gU3Rh cnQgd2l0aCBhbiBlbXB0eSBzZWxlY3RvcgoJc2VsZWN0b3I6ICIiLAoKCS8vIFRo ZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVzZWQKCWpxdWVyeTog IjEuNy4yIiwKCgkvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2Jq ZWN0IGlzIDAKCWxlbmd0aDogMCwKCgkvLyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRz IGNvbnRhaW5lZCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldAoJc2l6ZTogZnVu Y3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMubGVuZ3RoOwoJfSwKCgl0b0FycmF5OiBm dW5jdGlvbigpIHsKCQlyZXR1cm4gc2xpY2UuY2FsbCggdGhpcywgMCApOwoJfSwK CgkvLyBHZXQgdGhlIE50aCBlbGVtZW50IGluIHRoZSBtYXRjaGVkIGVsZW1lbnQg c2V0IE9SCgkvLyBHZXQgdGhlIHdob2xlIG1hdGNoZWQgZWxlbWVudCBzZXQgYXMg YSBjbGVhbiBhcnJheQoJZ2V0OiBmdW5jdGlvbiggbnVtICkgewoJCXJldHVybiBu dW0gPT0gbnVsbCA/CgoJCQkvLyBSZXR1cm4gYSAnY2xlYW4nIGFycmF5CgkJCXRo aXMudG9BcnJheSgpIDoKCgkJCS8vIFJldHVybiBqdXN0IHRoZSBvYmplY3QKCQkJ KCBudW0gPCAwID8gdGhpc1sgdGhpcy5sZW5ndGggKyBudW0gXSA6IHRoaXNbIG51 bSBdICk7Cgl9LAoKCS8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMgYW5kIHB1 c2ggaXQgb250byB0aGUgc3RhY2sKCS8vIChyZXR1cm5pbmcgdGhlIG5ldyBtYXRj aGVkIGVsZW1lbnQgc2V0KQoJcHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMsIG5h bWUsIHNlbGVjdG9yICkgewoJCS8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVk IGVsZW1lbnQgc2V0CgkJdmFyIHJldCA9IHRoaXMuY29uc3RydWN0b3IoKTsKCgkJ aWYgKCBqUXVlcnkuaXNBcnJheSggZWxlbXMgKSApIHsKCQkJcHVzaC5hcHBseSgg cmV0LCBlbGVtcyApOwoKCQl9IGVsc2UgewoJCQlqUXVlcnkubWVyZ2UoIHJldCwg ZWxlbXMgKTsKCQl9CgoJCS8vIEFkZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBz dGFjayAoYXMgYSByZWZlcmVuY2UpCgkJcmV0LnByZXZPYmplY3QgPSB0aGlzOwoK CQlyZXQuY29udGV4dCA9IHRoaXMuY29udGV4dDsKCgkJaWYgKCBuYW1lID09PSAi ZmluZCIgKSB7CgkJCXJldC5zZWxlY3RvciA9IHRoaXMuc2VsZWN0b3IgKyAoIHRo aXMuc2VsZWN0b3IgPyAiICIgOiAiIiApICsgc2VsZWN0b3I7CgkJfSBlbHNlIGlm ICggbmFtZSApIHsKCQkJcmV0LnNlbGVjdG9yID0gdGhpcy5zZWxlY3RvciArICIu IiArIG5hbWUgKyAiKCIgKyBzZWxlY3RvciArICIpIjsKCQl9CgoJCS8vIFJldHVy biB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0CgkJcmV0dXJuIHJldDsKCX0s CgoJLy8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRo ZSBtYXRjaGVkIHNldC4KCS8vIChZb3UgY2FuIHNlZWQgdGhlIGFyZ3VtZW50cyB3 aXRoIGFuIGFycmF5IG9mIGFyZ3MsIGJ1dCB0aGlzIGlzCgkvLyBvbmx5IHVzZWQg aW50ZXJuYWxseS4pCgllYWNoOiBmdW5jdGlvbiggY2FsbGJhY2ssIGFyZ3MgKSB7 CgkJcmV0dXJuIGpRdWVyeS5lYWNoKCB0aGlzLCBjYWxsYmFjaywgYXJncyApOwoJ fSwKCglyZWFkeTogZnVuY3Rpb24oIGZuICkgewoJCS8vIEF0dGFjaCB0aGUgbGlz dGVuZXJzCgkJalF1ZXJ5LmJpbmRSZWFkeSgpOwoKCQkvLyBBZGQgdGhlIGNhbGxi YWNrCgkJcmVhZHlMaXN0LmFkZCggZm4gKTsKCgkJcmV0dXJuIHRoaXM7Cgl9LAoK CWVxOiBmdW5jdGlvbiggaSApIHsKCQlpID0gK2k7CgkJcmV0dXJuIGkgPT09IC0x ID8KCQkJdGhpcy5zbGljZSggaSApIDoKCQkJdGhpcy5zbGljZSggaSwgaSArIDEg KTsKCX0sCgoJZmlyc3Q6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLmVxKCAw ICk7Cgl9LAoKCWxhc3Q6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLmVxKCAt MSApOwoJfSwKCglzbGljZTogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMucHVz aFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICksCgkJCSJzbGlj ZSIsIHNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikgKTsKCX0sCgoJbWFw OiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7CgkJcmV0dXJuIHRoaXMucHVzaFN0YWNr KCBqUXVlcnkubWFwKHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgewoJCQlyZXR1 cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApOwoJCX0pKTsKCX0sCgoJ ZW5kOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRo aXMuY29uc3RydWN0b3IobnVsbCk7Cgl9LAoKCS8vIEZvciBpbnRlcm5hbCB1c2Ug b25seS4KCS8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhvZCwgbm90IGxp a2UgYSBqUXVlcnkgbWV0aG9kLgoJcHVzaDogcHVzaCwKCXNvcnQ6IFtdLnNvcnQs CglzcGxpY2U6IFtdLnNwbGljZQp9OwoKLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlv biB0aGUgalF1ZXJ5IHByb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvbgpq UXVlcnkuZm4uaW5pdC5wcm90b3R5cGUgPSBqUXVlcnkuZm47CgpqUXVlcnkuZXh0 ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgewoJdmFyIG9wdGlv bnMsIG5hbWUsIHNyYywgY29weSwgY29weUlzQXJyYXksIGNsb25lLAoJCXRhcmdl dCA9IGFyZ3VtZW50c1swXSB8fCB7fSwKCQlpID0gMSwKCQlsZW5ndGggPSBhcmd1 bWVudHMubGVuZ3RoLAoJCWRlZXAgPSBmYWxzZTsKCgkvLyBIYW5kbGUgYSBkZWVw IGNvcHkgc2l0dWF0aW9uCglpZiAoIHR5cGVvZiB0YXJnZXQgPT09ICJib29sZWFu IiApIHsKCQlkZWVwID0gdGFyZ2V0OwoJCXRhcmdldCA9IGFyZ3VtZW50c1sxXSB8 fCB7fTsKCQkvLyBza2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0CgkJaSA9 IDI7Cgl9CgoJLy8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcg b3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpCglpZiAoIHR5cGVv ZiB0YXJnZXQgIT09ICJvYmplY3QiICYmICFqUXVlcnkuaXNGdW5jdGlvbih0YXJn ZXQpICkgewoJCXRhcmdldCA9IHt9OwoJfQoKCS8vIGV4dGVuZCBqUXVlcnkgaXRz ZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBhc3NlZAoJaWYgKCBsZW5ndGgg PT09IGkgKSB7CgkJdGFyZ2V0ID0gdGhpczsKCQktLWk7Cgl9CgoJZm9yICggOyBp IDwgbGVuZ3RoOyBpKysgKSB7CgkJLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwv dW5kZWZpbmVkIHZhbHVlcwoJCWlmICggKG9wdGlvbnMgPSBhcmd1bWVudHNbIGkg XSkgIT0gbnVsbCApIHsKCQkJLy8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdAoJCQlm b3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7CgkJCQlzcmMgPSB0YXJnZXRbIG5hbWUg XTsKCQkJCWNvcHkgPSBvcHRpb25zWyBuYW1lIF07CgoJCQkJLy8gUHJldmVudCBu ZXZlci1lbmRpbmcgbG9vcAoJCQkJaWYgKCB0YXJnZXQgPT09IGNvcHkgKSB7CgkJ CQkJY29udGludWU7CgkJCQl9CgoJCQkJLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJn aW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzCgkJCQlpZiAoIGRlZXAgJiYgY29w eSAmJiAoIGpRdWVyeS5pc1BsYWluT2JqZWN0KGNvcHkpIHx8IChjb3B5SXNBcnJh eSA9IGpRdWVyeS5pc0FycmF5KGNvcHkpKSApICkgewoJCQkJCWlmICggY29weUlz QXJyYXkgKSB7CgkJCQkJCWNvcHlJc0FycmF5ID0gZmFsc2U7CgkJCQkJCWNsb25l ID0gc3JjICYmIGpRdWVyeS5pc0FycmF5KHNyYykgPyBzcmMgOiBbXTsKCgkJCQkJ fSBlbHNlIHsKCQkJCQkJY2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzUGxhaW5PYmpl Y3Qoc3JjKSA/IHNyYyA6IHt9OwoJCQkJCX0KCgkJCQkJLy8gTmV2ZXIgbW92ZSBv cmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtCgkJCQkJdGFyZ2V0WyBuYW1lIF0g PSBqUXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApOwoKCQkJCS8vIERv bid0IGJyaW5nIGluIHVuZGVmaW5lZCB2YWx1ZXMKCQkJCX0gZWxzZSBpZiAoIGNv cHkgIT09IHVuZGVmaW5lZCApIHsKCQkJCQl0YXJnZXRbIG5hbWUgXSA9IGNvcHk7 CgkJCQl9CgkJCX0KCQl9Cgl9CgoJLy8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmpl Y3QKCXJldHVybiB0YXJnZXQ7Cn07CgpqUXVlcnkuZXh0ZW5kKHsKCW5vQ29uZmxp Y3Q6IGZ1bmN0aW9uKCBkZWVwICkgewoJCWlmICggd2luZG93LiQgPT09IGpRdWVy eSApIHsKCQkJd2luZG93LiQgPSBfJDsKCQl9CgoJCWlmICggZGVlcCAmJiB3aW5k b3cualF1ZXJ5ID09PSBqUXVlcnkgKSB7CgkJCXdpbmRvdy5qUXVlcnkgPSBfalF1 ZXJ5OwoJCX0KCgkJcmV0dXJuIGpRdWVyeTsKCX0sCgoJLy8gSXMgdGhlIERPTSBy ZWFkeSB0byBiZSB1c2VkPyBTZXQgdG8gdHJ1ZSBvbmNlIGl0IG9jY3Vycy4KCWlz UmVhZHk6IGZhbHNlLAoKCS8vIEEgY291bnRlciB0byB0cmFjayBob3cgbWFueSBp dGVtcyB0byB3YWl0IGZvciBiZWZvcmUKCS8vIHRoZSByZWFkeSBldmVudCBmaXJl cy4gU2VlICM2NzgxCglyZWFkeVdhaXQ6IDEsCgoJLy8gSG9sZCAob3IgcmVsZWFz ZSkgdGhlIHJlYWR5IGV2ZW50Cglob2xkUmVhZHk6IGZ1bmN0aW9uKCBob2xkICkg ewoJCWlmICggaG9sZCApIHsKCQkJalF1ZXJ5LnJlYWR5V2FpdCsrOwoJCX0gZWxz ZSB7CgkJCWpRdWVyeS5yZWFkeSggdHJ1ZSApOwoJCX0KCX0sCgoJLy8gSGFuZGxl IHdoZW4gdGhlIERPTSBpcyByZWFkeQoJcmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkg ewoJCS8vIEVpdGhlciBhIHJlbGVhc2VkIGhvbGQgb3IgYW4gRE9NcmVhZHkvbG9h ZCBldmVudCBhbmQgbm90IHlldCByZWFkeQoJCWlmICggKHdhaXQgPT09IHRydWUg JiYgIS0talF1ZXJ5LnJlYWR5V2FpdCkgfHwgKHdhaXQgIT09IHRydWUgJiYgIWpR dWVyeS5pc1JlYWR5KSApIHsKCQkJLy8gTWFrZSBzdXJlIGJvZHkgZXhpc3RzLCBh dCBsZWFzdCwgaW4gY2FzZSBJRSBnZXRzIGEgbGl0dGxlIG92ZXJ6ZWFsb3VzICh0 aWNrZXQgIzU0NDMpLgoJCQlpZiAoICFkb2N1bWVudC5ib2R5ICkgewoJCQkJcmV0 dXJuIHNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSwgMSApOwoJCQl9CgoJCQkvLyBS ZW1lbWJlciB0aGF0IHRoZSBET00gaXMgcmVhZHkKCQkJalF1ZXJ5LmlzUmVhZHkg PSB0cnVlOwoKCQkJLy8gSWYgYSBub3JtYWwgRE9NIFJlYWR5IGV2ZW50IGZpcmVk LCBkZWNyZW1lbnQsIGFuZCB3YWl0IGlmIG5lZWQgYmUKCQkJaWYgKCB3YWl0ICE9 PSB0cnVlICYmIC0talF1ZXJ5LnJlYWR5V2FpdCA+IDAgKSB7CgkJCQlyZXR1cm47 CgkJCX0KCgkJCS8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4 ZWN1dGUKCQkJcmVhZHlMaXN0LmZpcmVXaXRoKCBkb2N1bWVudCwgWyBqUXVlcnkg XSApOwoKCQkJLy8gVHJpZ2dlciBhbnkgYm91bmQgcmVhZHkgZXZlbnRzCgkJCWlm ICggalF1ZXJ5LmZuLnRyaWdnZXIgKSB7CgkJCQlqUXVlcnkoIGRvY3VtZW50ICku dHJpZ2dlciggInJlYWR5IiApLm9mZiggInJlYWR5IiApOwoJCQl9CgkJfQoJfSwK CgliaW5kUmVhZHk6IGZ1bmN0aW9uKCkgewoJCWlmICggcmVhZHlMaXN0ICkgewoJ CQlyZXR1cm47CgkJfQoKCQlyZWFkeUxpc3QgPSBqUXVlcnkuQ2FsbGJhY2tzKCAi b25jZSBtZW1vcnkiICk7CgoJCS8vIENhdGNoIGNhc2VzIHdoZXJlICQoZG9jdW1l bnQpLnJlYWR5KCkgaXMgY2FsbGVkIGFmdGVyIHRoZQoJCS8vIGJyb3dzZXIgZXZl bnQgaGFzIGFscmVhZHkgb2NjdXJyZWQuCgkJaWYgKCBkb2N1bWVudC5yZWFkeVN0 YXRlID09PSAiY29tcGxldGUiICkgewoJCQkvLyBIYW5kbGUgaXQgYXN5bmNocm9u b3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkg cmVhZHkKCQkJcmV0dXJuIHNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSwgMSApOwoJ CX0KCgkJLy8gTW96aWxsYSwgT3BlcmEgYW5kIHdlYmtpdCBuaWdodGxpZXMgY3Vy cmVudGx5IHN1cHBvcnQgdGhpcyBldmVudAoJCWlmICggZG9jdW1lbnQuYWRkRXZl bnRMaXN0ZW5lciApIHsKCQkJLy8gVXNlIHRoZSBoYW5keSBldmVudCBjYWxsYmFj awoJCQlkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRl ZCIsIERPTUNvbnRlbnRMb2FkZWQsIGZhbHNlICk7CgoJCQkvLyBBIGZhbGxiYWNr IHRvIHdpbmRvdy5vbmxvYWQsIHRoYXQgd2lsbCBhbHdheXMgd29yawoJCQl3aW5k b3cuYWRkRXZlbnRMaXN0ZW5lciggImxvYWQiLCBqUXVlcnkucmVhZHksIGZhbHNl ICk7CgoJCS8vIElmIElFIGV2ZW50IG1vZGVsIGlzIHVzZWQKCQl9IGVsc2UgaWYg KCBkb2N1bWVudC5hdHRhY2hFdmVudCApIHsKCQkJLy8gZW5zdXJlIGZpcmluZyBi ZWZvcmUgb25sb2FkLAoJCQkvLyBtYXliZSBsYXRlIGJ1dCBzYWZlIGFsc28gZm9y IGlmcmFtZXMKCQkJZG9jdW1lbnQuYXR0YWNoRXZlbnQoICJvbnJlYWR5c3RhdGVj aGFuZ2UiLCBET01Db250ZW50TG9hZGVkICk7CgoJCQkvLyBBIGZhbGxiYWNrIHRv IHdpbmRvdy5vbmxvYWQsIHRoYXQgd2lsbCBhbHdheXMgd29yawoJCQl3aW5kb3cu YXR0YWNoRXZlbnQoICJvbmxvYWQiLCBqUXVlcnkucmVhZHkgKTsKCgkJCS8vIElm IElFIGFuZCBub3QgYSBmcmFtZQoJCQkvLyBjb250aW51YWxseSBjaGVjayB0byBz ZWUgaWYgdGhlIGRvY3VtZW50IGlzIHJlYWR5CgkJCXZhciB0b3BsZXZlbCA9IGZh bHNlOwoKCQkJdHJ5IHsKCQkJCXRvcGxldmVsID0gd2luZG93LmZyYW1lRWxlbWVu dCA9PSBudWxsOwoJCQl9IGNhdGNoKGUpIHt9CgoJCQlpZiAoIGRvY3VtZW50LmRv Y3VtZW50RWxlbWVudC5kb1Njcm9sbCAmJiB0b3BsZXZlbCApIHsKCQkJCWRvU2Ny b2xsQ2hlY2soKTsKCQkJfQoJCX0KCX0sCgoJLy8gU2VlIHRlc3QvdW5pdC9jb3Jl LmpzIGZvciBkZXRhaWxzIGNvbmNlcm5pbmcgaXNGdW5jdGlvbi4KCS8vIFNpbmNl IHZlcnNpb24gMS4zLCBET00gbWV0aG9kcyBhbmQgZnVuY3Rpb25zIGxpa2UgYWxl cnQKCS8vIGFyZW4ndCBzdXBwb3J0ZWQuIFRoZXkgcmV0dXJuIGZhbHNlIG9uIElF ICgjMjk2OCkuCglpc0Z1bmN0aW9uOiBmdW5jdGlvbiggb2JqICkgewoJCXJldHVy biBqUXVlcnkudHlwZShvYmopID09PSAiZnVuY3Rpb24iOwoJfSwKCglpc0FycmF5 OiBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uKCBvYmogKSB7CgkJcmV0dXJuIGpR dWVyeS50eXBlKG9iaikgPT09ICJhcnJheSI7Cgl9LAoKCWlzV2luZG93OiBmdW5j dGlvbiggb2JqICkgewoJCXJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT0gb2Jq LndpbmRvdzsKCX0sCgoJaXNOdW1lcmljOiBmdW5jdGlvbiggb2JqICkgewoJCXJl dHVybiAhaXNOYU4oIHBhcnNlRmxvYXQob2JqKSApICYmIGlzRmluaXRlKCBvYmog KTsKCX0sCgoJdHlwZTogZnVuY3Rpb24oIG9iaiApIHsKCQlyZXR1cm4gb2JqID09 IG51bGwgPwoJCQlTdHJpbmcoIG9iaiApIDoKCQkJY2xhc3MydHlwZVsgdG9TdHJp bmcuY2FsbChvYmopIF0gfHwgIm9iamVjdCI7Cgl9LAoKCWlzUGxhaW5PYmplY3Q6 IGZ1bmN0aW9uKCBvYmogKSB7CgkJLy8gTXVzdCBiZSBhbiBPYmplY3QuCgkJLy8g QmVjYXVzZSBvZiBJRSwgd2UgYWxzbyBoYXZlIHRvIGNoZWNrIHRoZSBwcmVzZW5j ZSBvZiB0aGUgY29uc3RydWN0b3IgcHJvcGVydHkuCgkJLy8gTWFrZSBzdXJlIHRo YXQgRE9NIG5vZGVzIGFuZCB3aW5kb3cgb2JqZWN0cyBkb24ndCBwYXNzIHRocm91 Z2gsIGFzIHdlbGwKCQlpZiAoICFvYmogfHwgalF1ZXJ5LnR5cGUob2JqKSAhPT0g Im9iamVjdCIgfHwgb2JqLm5vZGVUeXBlIHx8IGpRdWVyeS5pc1dpbmRvdyggb2Jq ICkgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCXRyeSB7CgkJCS8vIE5vdCBv d24gY29uc3RydWN0b3IgcHJvcGVydHkgbXVzdCBiZSBPYmplY3QKCQkJaWYgKCBv YmouY29uc3RydWN0b3IgJiYKCQkJCSFoYXNPd24uY2FsbChvYmosICJjb25zdHJ1 Y3RvciIpICYmCgkJCQkhaGFzT3duLmNhbGwob2JqLmNvbnN0cnVjdG9yLnByb3Rv dHlwZSwgImlzUHJvdG90eXBlT2YiKSApIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJ fQoJCX0gY2F0Y2ggKCBlICkgewoJCQkvLyBJRTgsOSBXaWxsIHRocm93IGV4Y2Vw dGlvbnMgb24gY2VydGFpbiBob3N0IG9iamVjdHMgIzk4OTcKCQkJcmV0dXJuIGZh bHNlOwoJCX0KCgkJLy8gT3duIHByb3BlcnRpZXMgYXJlIGVudW1lcmF0ZWQgZmly c3RseSwgc28gdG8gc3BlZWQgdXAsCgkJLy8gaWYgbGFzdCBvbmUgaXMgb3duLCB0 aGVuIGFsbCBwcm9wZXJ0aWVzIGFyZSBvd24uCgoJCXZhciBrZXk7CgkJZm9yICgg a2V5IGluIG9iaiApIHt9CgoJCXJldHVybiBrZXkgPT09IHVuZGVmaW5lZCB8fCBo YXNPd24uY2FsbCggb2JqLCBrZXkgKTsKCX0sCgoJaXNFbXB0eU9iamVjdDogZnVu Y3Rpb24oIG9iaiApIHsKCQlmb3IgKCB2YXIgbmFtZSBpbiBvYmogKSB7CgkJCXJl dHVybiBmYWxzZTsKCQl9CgkJcmV0dXJuIHRydWU7Cgl9LAoKCWVycm9yOiBmdW5j dGlvbiggbXNnICkgewoJCXRocm93IG5ldyBFcnJvciggbXNnICk7Cgl9LAoKCXBh cnNlSlNPTjogZnVuY3Rpb24oIGRhdGEgKSB7CgkJaWYgKCB0eXBlb2YgZGF0YSAh PT0gInN0cmluZyIgfHwgIWRhdGEgKSB7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJ Ly8gTWFrZSBzdXJlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBpcyByZW1v dmVkIChJRSBjYW4ndCBoYW5kbGUgaXQpCgkJZGF0YSA9IGpRdWVyeS50cmltKCBk YXRhICk7CgoJCS8vIEF0dGVtcHQgdG8gcGFyc2UgdXNpbmcgdGhlIG5hdGl2ZSBK U09OIHBhcnNlciBmaXJzdAoJCWlmICggd2luZG93LkpTT04gJiYgd2luZG93LkpT T04ucGFyc2UgKSB7CgkJCXJldHVybiB3aW5kb3cuSlNPTi5wYXJzZSggZGF0YSAp OwoJCX0KCgkJLy8gTWFrZSBzdXJlIHRoZSBpbmNvbWluZyBkYXRhIGlzIGFjdHVh bCBKU09OCgkJLy8gTG9naWMgYm9ycm93ZWQgZnJvbSBodHRwOi8vanNvbi5vcmcv anNvbjIuanMKCQlpZiAoIHJ2YWxpZGNoYXJzLnRlc3QoIGRhdGEucmVwbGFjZSgg cnZhbGlkZXNjYXBlLCAiQCIgKQoJCQkucmVwbGFjZSggcnZhbGlkdG9rZW5zLCAi XSIgKQoJCQkucmVwbGFjZSggcnZhbGlkYnJhY2VzLCAiIikpICkgewoKCQkJcmV0 dXJuICggbmV3IEZ1bmN0aW9uKCAicmV0dXJuICIgKyBkYXRhICkgKSgpOwoKCQl9 CgkJalF1ZXJ5LmVycm9yKCAiSW52YWxpZCBKU09OOiAiICsgZGF0YSApOwoJfSwK CgkvLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nCglwYXJzZVhNTDogZnVuY3Rp b24oIGRhdGEgKSB7CgkJaWYgKCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgfHwg IWRhdGEgKSB7CgkJCXJldHVybiBudWxsOwoJCX0KCQl2YXIgeG1sLCB0bXA7CgkJ dHJ5IHsKCQkJaWYgKCB3aW5kb3cuRE9NUGFyc2VyICkgeyAvLyBTdGFuZGFyZAoJ CQkJdG1wID0gbmV3IERPTVBhcnNlcigpOwoJCQkJeG1sID0gdG1wLnBhcnNlRnJv bVN0cmluZyggZGF0YSAsICJ0ZXh0L3htbCIgKTsKCQkJfSBlbHNlIHsgLy8gSUUK CQkJCXhtbCA9IG5ldyBBY3RpdmVYT2JqZWN0KCAiTWljcm9zb2Z0LlhNTERPTSIg KTsKCQkJCXhtbC5hc3luYyA9ICJmYWxzZSI7CgkJCQl4bWwubG9hZFhNTCggZGF0 YSApOwoJCQl9CgkJfSBjYXRjaCggZSApIHsKCQkJeG1sID0gdW5kZWZpbmVkOwoJ CX0KCQlpZiAoICF4bWwgfHwgIXhtbC5kb2N1bWVudEVsZW1lbnQgfHwgeG1sLmdl dEVsZW1lbnRzQnlUYWdOYW1lKCAicGFyc2VyZXJyb3IiICkubGVuZ3RoICkgewoJ CQlqUXVlcnkuZXJyb3IoICJJbnZhbGlkIFhNTDogIiArIGRhdGEgKTsKCQl9CgkJ cmV0dXJuIHhtbDsKCX0sCgoJbm9vcDogZnVuY3Rpb24oKSB7fSwKCgkvLyBFdmFs dWF0ZXMgYSBzY3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dAoJLy8gV29ya2Fyb3Vu ZHMgYmFzZWQgb24gZmluZGluZ3MgYnkgSmltIERyaXNjb2xsCgkvLyBodHRwOi8v d2VibG9ncy5qYXZhLm5ldC9ibG9nL2RyaXNjb2xsL2FyY2hpdmUvMjAwOS8wOS8w OC9ldmFsLWphdmFzY3JpcHQtZ2xvYmFsLWNvbnRleHQKCWdsb2JhbEV2YWw6IGZ1 bmN0aW9uKCBkYXRhICkgewoJCWlmICggZGF0YSAmJiBybm90d2hpdGUudGVzdCgg ZGF0YSApICkgewoJCQkvLyBXZSB1c2UgZXhlY1NjcmlwdCBvbiBJbnRlcm5ldCBF eHBsb3JlcgoJCQkvLyBXZSB1c2UgYW4gYW5vbnltb3VzIGZ1bmN0aW9uIHNvIHRo YXQgY29udGV4dCBpcyB3aW5kb3cKCQkJLy8gcmF0aGVyIHRoYW4galF1ZXJ5IGlu IEZpcmVmb3gKCQkJKCB3aW5kb3cuZXhlY1NjcmlwdCB8fCBmdW5jdGlvbiggZGF0 YSApIHsKCQkJCXdpbmRvd1sgImV2YWwiIF0uY2FsbCggd2luZG93LCBkYXRhICk7 CgkJCX0gKSggZGF0YSApOwoJCX0KCX0sCgoJLy8gQ29udmVydCBkYXNoZWQgdG8g Y2FtZWxDYXNlOyB1c2VkIGJ5IHRoZSBjc3MgYW5kIGRhdGEgbW9kdWxlcwoJLy8g TWljcm9zb2Z0IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5 NTcyKQoJY2FtZWxDYXNlOiBmdW5jdGlvbiggc3RyaW5nICkgewoJCXJldHVybiBz dHJpbmcucmVwbGFjZSggcm1zUHJlZml4LCAibXMtIiApLnJlcGxhY2UoIHJkYXNo QWxwaGEsIGZjYW1lbENhc2UgKTsKCX0sCgoJbm9kZU5hbWU6IGZ1bmN0aW9uKCBl bGVtLCBuYW1lICkgewoJCXJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9k ZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gbmFtZS50b1VwcGVyQ2FzZSgpOwoJfSwK CgkvLyBhcmdzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5CgllYWNoOiBmdW5j dGlvbiggb2JqZWN0LCBjYWxsYmFjaywgYXJncyApIHsKCQl2YXIgbmFtZSwgaSA9 IDAsCgkJCWxlbmd0aCA9IG9iamVjdC5sZW5ndGgsCgkJCWlzT2JqID0gbGVuZ3Ro ID09PSB1bmRlZmluZWQgfHwgalF1ZXJ5LmlzRnVuY3Rpb24oIG9iamVjdCApOwoK CQlpZiAoIGFyZ3MgKSB7CgkJCWlmICggaXNPYmogKSB7CgkJCQlmb3IgKCBuYW1l IGluIG9iamVjdCApIHsKCQkJCQlpZiAoIGNhbGxiYWNrLmFwcGx5KCBvYmplY3Rb IG5hbWUgXSwgYXJncyApID09PSBmYWxzZSApIHsKCQkJCQkJYnJlYWs7CgkJCQkJ fQoJCQkJfQoJCQl9IGVsc2UgewoJCQkJZm9yICggOyBpIDwgbGVuZ3RoOyApIHsK CQkJCQlpZiAoIGNhbGxiYWNrLmFwcGx5KCBvYmplY3RbIGkrKyBdLCBhcmdzICkg PT09IGZhbHNlICkgewoJCQkJCQlicmVhazsKCQkJCQl9CgkJCQl9CgkJCX0KCgkJ Ly8gQSBzcGVjaWFsLCBmYXN0LCBjYXNlIGZvciB0aGUgbW9zdCBjb21tb24gdXNl IG9mIGVhY2gKCQl9IGVsc2UgewoJCQlpZiAoIGlzT2JqICkgewoJCQkJZm9yICgg bmFtZSBpbiBvYmplY3QgKSB7CgkJCQkJaWYgKCBjYWxsYmFjay5jYWxsKCBvYmpl Y3RbIG5hbWUgXSwgbmFtZSwgb2JqZWN0WyBuYW1lIF0gKSA9PT0gZmFsc2UgKSB7 CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfSBlbHNlIHsKCQkJCWZvciAo IDsgaSA8IGxlbmd0aDsgKSB7CgkJCQkJaWYgKCBjYWxsYmFjay5jYWxsKCBvYmpl Y3RbIGkgXSwgaSwgb2JqZWN0WyBpKysgXSApID09PSBmYWxzZSApIHsKCQkJCQkJ YnJlYWs7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gb2JqZWN0OwoJ fSwKCgkvLyBVc2UgbmF0aXZlIFN0cmluZy50cmltIGZ1bmN0aW9uIHdoZXJldmVy IHBvc3NpYmxlCgl0cmltOiB0cmltID8KCQlmdW5jdGlvbiggdGV4dCApIHsKCQkJ cmV0dXJuIHRleHQgPT0gbnVsbCA/CgkJCQkiIiA6CgkJCQl0cmltLmNhbGwoIHRl eHQgKTsKCQl9IDoKCgkJLy8gT3RoZXJ3aXNlIHVzZSBvdXIgb3duIHRyaW1taW5n IGZ1bmN0aW9uYWxpdHkKCQlmdW5jdGlvbiggdGV4dCApIHsKCQkJcmV0dXJuIHRl eHQgPT0gbnVsbCA/CgkJCQkiIiA6CgkJCQl0ZXh0LnRvU3RyaW5nKCkucmVwbGFj ZSggdHJpbUxlZnQsICIiICkucmVwbGFjZSggdHJpbVJpZ2h0LCAiIiApOwoJCX0s CgoJLy8gcmVzdWx0cyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seQoJbWFrZUFy cmF5OiBmdW5jdGlvbiggYXJyYXksIHJlc3VsdHMgKSB7CgkJdmFyIHJldCA9IHJl c3VsdHMgfHwgW107CgoJCWlmICggYXJyYXkgIT0gbnVsbCApIHsKCQkJLy8gVGhl IHdpbmRvdywgc3RyaW5ncyAoYW5kIGZ1bmN0aW9ucykgYWxzbyBoYXZlICdsZW5n dGgnCgkJCS8vIFR3ZWFrZWQgbG9naWMgc2xpZ2h0bHkgdG8gaGFuZGxlIEJsYWNr YmVycnkgNC43IFJlZ0V4cCBpc3N1ZXMgIzY5MzAKCQkJdmFyIHR5cGUgPSBqUXVl cnkudHlwZSggYXJyYXkgKTsKCgkJCWlmICggYXJyYXkubGVuZ3RoID09IG51bGwg fHwgdHlwZSA9PT0gInN0cmluZyIgfHwgdHlwZSA9PT0gImZ1bmN0aW9uIiB8fCB0 eXBlID09PSAicmVnZXhwIiB8fCBqUXVlcnkuaXNXaW5kb3coIGFycmF5ICkgKSB7 CgkJCQlwdXNoLmNhbGwoIHJldCwgYXJyYXkgKTsKCQkJfSBlbHNlIHsKCQkJCWpR dWVyeS5tZXJnZSggcmV0LCBhcnJheSApOwoJCQl9CgkJfQoKCQlyZXR1cm4gcmV0 OwoJfSwKCglpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyYXksIGkgKSB7CgkJ dmFyIGxlbjsKCgkJaWYgKCBhcnJheSApIHsKCQkJaWYgKCBpbmRleE9mICkgewoJ CQkJcmV0dXJuIGluZGV4T2YuY2FsbCggYXJyYXksIGVsZW0sIGkgKTsKCQkJfQoK CQkJbGVuID0gYXJyYXkubGVuZ3RoOwoJCQlpID0gaSA/IGkgPCAwID8gTWF0aC5t YXgoIDAsIGxlbiArIGkgKSA6IGkgOiAwOwoKCQkJZm9yICggOyBpIDwgbGVuOyBp KysgKSB7CgkJCQkvLyBTa2lwIGFjY2Vzc2luZyBpbiBzcGFyc2UgYXJyYXlzCgkJ CQlpZiAoIGkgaW4gYXJyYXkgJiYgYXJyYXlbIGkgXSA9PT0gZWxlbSApIHsKCQkJ CQlyZXR1cm4gaTsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuIC0xOwoJfSwKCglt ZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7CgkJdmFyIGkgPSBmaXJz dC5sZW5ndGgsCgkJCWogPSAwOwoKCQlpZiAoIHR5cGVvZiBzZWNvbmQubGVuZ3Ro ID09PSAibnVtYmVyIiApIHsKCQkJZm9yICggdmFyIGwgPSBzZWNvbmQubGVuZ3Ro OyBqIDwgbDsgaisrICkgewoJCQkJZmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqIF07 CgkJCX0KCgkJfSBlbHNlIHsKCQkJd2hpbGUgKCBzZWNvbmRbal0gIT09IHVuZGVm aW5lZCApIHsKCQkJCWZpcnN0WyBpKysgXSA9IHNlY29uZFsgaisrIF07CgkJCX0K CQl9CgoJCWZpcnN0Lmxlbmd0aCA9IGk7CgoJCXJldHVybiBmaXJzdDsKCX0sCgoJ Z3JlcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgaW52ICkgewoJCXZhciBy ZXQgPSBbXSwgcmV0VmFsOwoJCWludiA9ICEhaW52OwoKCQkvLyBHbyB0aHJvdWdo IHRoZSBhcnJheSwgb25seSBzYXZpbmcgdGhlIGl0ZW1zCgkJLy8gdGhhdCBwYXNz IHRoZSB2YWxpZGF0b3IgZnVuY3Rpb24KCQlmb3IgKCB2YXIgaSA9IDAsIGxlbmd0 aCA9IGVsZW1zLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrICkgewoJCQlyZXRWYWwg PSAhIWNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpICk7CgkJCWlmICggaW52ICE9PSBy ZXRWYWwgKSB7CgkJCQlyZXQucHVzaCggZWxlbXNbIGkgXSApOwoJCQl9CgkJfQoK CQlyZXR1cm4gcmV0OwoJfSwKCgkvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdl IG9ubHkKCW1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJnICkgewoJ CXZhciB2YWx1ZSwga2V5LCByZXQgPSBbXSwKCQkJaSA9IDAsCgkJCWxlbmd0aCA9 IGVsZW1zLmxlbmd0aCwKCQkJLy8ganF1ZXJ5IG9iamVjdHMgYXJlIHRyZWF0ZWQg YXMgYXJyYXlzCgkJCWlzQXJyYXkgPSBlbGVtcyBpbnN0YW5jZW9mIGpRdWVyeSB8 fCBsZW5ndGggIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgbGVuZ3RoID09PSAibnVt YmVyIiAmJiAoICggbGVuZ3RoID4gMCAmJiBlbGVtc1sgMCBdICYmIGVsZW1zWyBs ZW5ndGggLTEgXSApIHx8IGxlbmd0aCA9PT0gMCB8fCBqUXVlcnkuaXNBcnJheSgg ZWxlbXMgKSApIDsKCgkJLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0 aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyCgkJaWYgKCBpc0FycmF5ICkg ewoJCQlmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKCQkJCXZhbHVlID0gY2Fs bGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApOwoKCQkJCWlmICggdmFsdWUgIT0g bnVsbCApIHsKCQkJCQlyZXRbIHJldC5sZW5ndGggXSA9IHZhbHVlOwoJCQkJfQoJ CQl9CgoJCS8vIEdvIHRocm91Z2ggZXZlcnkga2V5IG9uIHRoZSBvYmplY3QsCgkJ fSBlbHNlIHsKCQkJZm9yICgga2V5IGluIGVsZW1zICkgewoJCQkJdmFsdWUgPSBj YWxsYmFjayggZWxlbXNbIGtleSBdLCBrZXksIGFyZyApOwoKCQkJCWlmICggdmFs dWUgIT0gbnVsbCApIHsKCQkJCQlyZXRbIHJldC5sZW5ndGggXSA9IHZhbHVlOwoJ CQkJfQoJCQl9CgkJfQoKCQkvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzCgkJ cmV0dXJuIHJldC5jb25jYXQuYXBwbHkoIFtdLCByZXQgKTsKCX0sCgoJLy8gQSBn bG9iYWwgR1VJRCBjb3VudGVyIGZvciBvYmplY3RzCglndWlkOiAxLAoKCS8vIEJp bmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFsbHkgcGFydGlhbGx5 IGFwcGx5aW5nIGFueQoJLy8gYXJndW1lbnRzLgoJcHJveHk6IGZ1bmN0aW9uKCBm biwgY29udGV4dCApIHsKCQlpZiAoIHR5cGVvZiBjb250ZXh0ID09PSAic3RyaW5n IiApIHsKCQkJdmFyIHRtcCA9IGZuWyBjb250ZXh0IF07CgkJCWNvbnRleHQgPSBm bjsKCQkJZm4gPSB0bXA7CgkJfQoKCQkvLyBRdWljayBjaGVjayB0byBkZXRlcm1p bmUgaWYgdGFyZ2V0IGlzIGNhbGxhYmxlLCBpbiB0aGUgc3BlYwoJCS8vIHRoaXMg dGhyb3dzIGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1bmRl ZmluZWQuCgkJaWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIGZuICkgKSB7CgkJCXJl dHVybiB1bmRlZmluZWQ7CgkJfQoKCQkvLyBTaW11bGF0ZWQgYmluZAoJCXZhciBh cmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzLCAyICksCgkJCXByb3h5ID0gZnVu Y3Rpb24oKSB7CgkJCQlyZXR1cm4gZm4uYXBwbHkoIGNvbnRleHQsIGFyZ3MuY29u Y2F0KCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSApICk7CgkJCX07CgoJCS8vIFNl dCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBvcmln aW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZAoJCXByb3h5Lmd1aWQg PSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBwcm94eS5ndWlkIHx8IGpRdWVyeS5ndWlk Kys7CgoJCXJldHVybiBwcm94eTsKCX0sCgoJLy8gTXV0aWZ1bmN0aW9uYWwgbWV0 aG9kIHRvIGdldCBhbmQgc2V0IHZhbHVlcyB0byBhIGNvbGxlY3Rpb24KCS8vIFRo ZSB2YWx1ZS9zIGNhbiBvcHRpb25hbGx5IGJlIGV4ZWN1dGVkIGlmIGl0J3MgYSBm dW5jdGlvbgoJYWNjZXNzOiBmdW5jdGlvbiggZWxlbXMsIGZuLCBrZXksIHZhbHVl LCBjaGFpbmFibGUsIGVtcHR5R2V0LCBwYXNzICkgewoJCXZhciBleGVjLAoJCQli dWxrID0ga2V5ID09IG51bGwsCgkJCWkgPSAwLAoJCQlsZW5ndGggPSBlbGVtcy5s ZW5ndGg7CgoJCS8vIFNldHMgbWFueSB2YWx1ZXMKCQlpZiAoIGtleSAmJiB0eXBl b2Yga2V5ID09PSAib2JqZWN0IiApIHsKCQkJZm9yICggaSBpbiBrZXkgKSB7CgkJ CQlqUXVlcnkuYWNjZXNzKCBlbGVtcywgZm4sIGksIGtleVtpXSwgMSwgZW1wdHlH ZXQsIHZhbHVlICk7CgkJCX0KCQkJY2hhaW5hYmxlID0gMTsKCgkJLy8gU2V0cyBv bmUgdmFsdWUKCQl9IGVsc2UgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgewoJ CQkvLyBPcHRpb25hbGx5LCBmdW5jdGlvbiB2YWx1ZXMgZ2V0IGV4ZWN1dGVkIGlm IGV4ZWMgaXMgdHJ1ZQoJCQlleGVjID0gcGFzcyA9PT0gdW5kZWZpbmVkICYmIGpR dWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApOwoKCQkJaWYgKCBidWxrICkgewoJCQkJ Ly8gQnVsayBvcGVyYXRpb25zIG9ubHkgaXRlcmF0ZSB3aGVuIGV4ZWN1dGluZyBm dW5jdGlvbiB2YWx1ZXMKCQkJCWlmICggZXhlYyApIHsKCQkJCQlleGVjID0gZm47 CgkJCQkJZm4gPSBmdW5jdGlvbiggZWxlbSwga2V5LCB2YWx1ZSApIHsKCQkJCQkJ cmV0dXJuIGV4ZWMuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7CgkJCQkJ fTsKCgkJCQkvLyBPdGhlcndpc2UgdGhleSBydW4gYWdhaW5zdCB0aGUgZW50aXJl IHNldAoJCQkJfSBlbHNlIHsKCQkJCQlmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTsK CQkJCQlmbiA9IG51bGw7CgkJCQl9CgkJCX0KCgkJCWlmICggZm4gKSB7CgkJCQlm b3IgKDsgaSA8IGxlbmd0aDsgaSsrICkgewoJCQkJCWZuKCBlbGVtc1tpXSwga2V5 LCBleGVjID8gdmFsdWUuY2FsbCggZWxlbXNbaV0sIGksIGZuKCBlbGVtc1tpXSwg a2V5ICkgKSA6IHZhbHVlLCBwYXNzICk7CgkJCQl9CgkJCX0KCgkJCWNoYWluYWJs ZSA9IDE7CgkJfQoKCQlyZXR1cm4gY2hhaW5hYmxlID8KCQkJZWxlbXMgOgoKCQkJ Ly8gR2V0cwoJCQlidWxrID8KCQkJCWZuLmNhbGwoIGVsZW1zICkgOgoJCQkJbGVu Z3RoID8gZm4oIGVsZW1zWzBdLCBrZXkgKSA6IGVtcHR5R2V0OwoJfSwKCglub3c6 IGZ1bmN0aW9uKCkgewoJCXJldHVybiAoIG5ldyBEYXRlKCkgKS5nZXRUaW1lKCk7 Cgl9LAoKCS8vIFVzZSBvZiBqUXVlcnkuYnJvd3NlciBpcyBmcm93bmVkIHVwb24u CgkvLyBNb3JlIGRldGFpbHM6IGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVXRpbGl0 aWVzL2pRdWVyeS5icm93c2VyCgl1YU1hdGNoOiBmdW5jdGlvbiggdWEgKSB7CgkJ dWEgPSB1YS50b0xvd2VyQ2FzZSgpOwoKCQl2YXIgbWF0Y2ggPSByd2Via2l0LmV4 ZWMoIHVhICkgfHwKCQkJcm9wZXJhLmV4ZWMoIHVhICkgfHwKCQkJcm1zaWUuZXhl YyggdWEgKSB8fAoJCQl1YS5pbmRleE9mKCJjb21wYXRpYmxlIikgPCAwICYmIHJt b3ppbGxhLmV4ZWMoIHVhICkgfHwKCQkJW107CgoJCXJldHVybiB7IGJyb3dzZXI6 IG1hdGNoWzFdIHx8ICIiLCB2ZXJzaW9uOiBtYXRjaFsyXSB8fCAiMCIgfTsKCX0s CgoJc3ViOiBmdW5jdGlvbigpIHsKCQlmdW5jdGlvbiBqUXVlcnlTdWIoIHNlbGVj dG9yLCBjb250ZXh0ICkgewoJCQlyZXR1cm4gbmV3IGpRdWVyeVN1Yi5mbi5pbml0 KCBzZWxlY3RvciwgY29udGV4dCApOwoJCX0KCQlqUXVlcnkuZXh0ZW5kKCB0cnVl LCBqUXVlcnlTdWIsIHRoaXMgKTsKCQlqUXVlcnlTdWIuc3VwZXJjbGFzcyA9IHRo aXM7CgkJalF1ZXJ5U3ViLmZuID0galF1ZXJ5U3ViLnByb3RvdHlwZSA9IHRoaXMo KTsKCQlqUXVlcnlTdWIuZm4uY29uc3RydWN0b3IgPSBqUXVlcnlTdWI7CgkJalF1 ZXJ5U3ViLnN1YiA9IHRoaXMuc3ViOwoJCWpRdWVyeVN1Yi5mbi5pbml0ID0gZnVu Y3Rpb24gaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKSB7CgkJCWlmICggY29udGV4 dCAmJiBjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5ICYmICEoY29udGV4dCBpbnN0 YW5jZW9mIGpRdWVyeVN1YikgKSB7CgkJCQljb250ZXh0ID0galF1ZXJ5U3ViKCBj b250ZXh0ICk7CgkJCX0KCgkJCXJldHVybiBqUXVlcnkuZm4uaW5pdC5jYWxsKCB0 aGlzLCBzZWxlY3RvciwgY29udGV4dCwgcm9vdGpRdWVyeVN1YiApOwoJCX07CgkJ alF1ZXJ5U3ViLmZuLmluaXQucHJvdG90eXBlID0galF1ZXJ5U3ViLmZuOwoJCXZh ciByb290alF1ZXJ5U3ViID0galF1ZXJ5U3ViKGRvY3VtZW50KTsKCQlyZXR1cm4g alF1ZXJ5U3ViOwoJfSwKCglicm93c2VyOiB7fQp9KTsKCi8vIFBvcHVsYXRlIHRo ZSBjbGFzczJ0eXBlIG1hcApqUXVlcnkuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3Ry aW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCIuc3BsaXQoIiAi KSwgZnVuY3Rpb24oaSwgbmFtZSkgewoJY2xhc3MydHlwZVsgIltvYmplY3QgIiAr IG5hbWUgKyAiXSIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKfSk7Cgpicm93c2Vy TWF0Y2ggPSBqUXVlcnkudWFNYXRjaCggdXNlckFnZW50ICk7CmlmICggYnJvd3Nl ck1hdGNoLmJyb3dzZXIgKSB7CglqUXVlcnkuYnJvd3NlclsgYnJvd3Nlck1hdGNo LmJyb3dzZXIgXSA9IHRydWU7CglqUXVlcnkuYnJvd3Nlci52ZXJzaW9uID0gYnJv d3Nlck1hdGNoLnZlcnNpb247Cn0KCi8vIERlcHJlY2F0ZWQsIHVzZSBqUXVlcnku YnJvd3Nlci53ZWJraXQgaW5zdGVhZAppZiAoIGpRdWVyeS5icm93c2VyLndlYmtp dCApIHsKCWpRdWVyeS5icm93c2VyLnNhZmFyaSA9IHRydWU7Cn0KCi8vIElFIGRv ZXNuJ3QgbWF0Y2ggbm9uLWJyZWFraW5nIHNwYWNlcyB3aXRoIFxzCmlmICggcm5v dHdoaXRlLnRlc3QoICJceEEwIiApICkgewoJdHJpbUxlZnQgPSAvXltcc1x4QTBd Ky87Cgl0cmltUmlnaHQgPSAvW1xzXHhBMF0rJC87Cn0KCi8vIEFsbCBqUXVlcnkg b2JqZWN0cyBzaG91bGQgcG9pbnQgYmFjayB0byB0aGVzZQpyb290alF1ZXJ5ID0g alF1ZXJ5KGRvY3VtZW50KTsKCi8vIENsZWFudXAgZnVuY3Rpb25zIGZvciB0aGUg ZG9jdW1lbnQgcmVhZHkgbWV0aG9kCmlmICggZG9jdW1lbnQuYWRkRXZlbnRMaXN0 ZW5lciApIHsKCURPTUNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpIHsKCQlkb2N1 bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRlZCIsIERP TUNvbnRlbnRMb2FkZWQsIGZhbHNlICk7CgkJalF1ZXJ5LnJlYWR5KCk7Cgl9OwoK fSBlbHNlIGlmICggZG9jdW1lbnQuYXR0YWNoRXZlbnQgKSB7CglET01Db250ZW50 TG9hZGVkID0gZnVuY3Rpb24oKSB7CgkJLy8gTWFrZSBzdXJlIGJvZHkgZXhpc3Rz LCBhdCBsZWFzdCwgaW4gY2FzZSBJRSBnZXRzIGEgbGl0dGxlIG92ZXJ6ZWFsb3Vz ICh0aWNrZXQgIzU0NDMpLgoJCWlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0g ImNvbXBsZXRlIiApIHsKCQkJZG9jdW1lbnQuZGV0YWNoRXZlbnQoICJvbnJlYWR5 c3RhdGVjaGFuZ2UiLCBET01Db250ZW50TG9hZGVkICk7CgkJCWpRdWVyeS5yZWFk eSgpOwoJCX0KCX07Cn0KCi8vIFRoZSBET00gcmVhZHkgY2hlY2sgZm9yIEludGVy bmV0IEV4cGxvcmVyCmZ1bmN0aW9uIGRvU2Nyb2xsQ2hlY2soKSB7CglpZiAoIGpR dWVyeS5pc1JlYWR5ICkgewoJCXJldHVybjsKCX0KCgl0cnkgewoJCS8vIElmIElF IGlzIHVzZWQsIHVzZSB0aGUgdHJpY2sgYnkgRGllZ28gUGVyaW5pCgkJLy8gaHR0 cDovL2phdmFzY3JpcHQubndib3guY29tL0lFQ29udGVudExvYWRlZC8KCQlkb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwoImxlZnQiKTsKCX0gY2F0Y2go ZSkgewoJCXNldFRpbWVvdXQoIGRvU2Nyb2xsQ2hlY2ssIDEgKTsKCQlyZXR1cm47 Cgl9CgoJLy8gYW5kIGV4ZWN1dGUgYW55IHdhaXRpbmcgZnVuY3Rpb25zCglqUXVl cnkucmVhZHkoKTsKfQoKcmV0dXJuIGpRdWVyeTsKCn0pKCk7CgoKLy8gU3RyaW5n IHRvIE9iamVjdCBmbGFncyBmb3JtYXQgY2FjaGUKdmFyIGZsYWdzQ2FjaGUgPSB7 fTsKCi8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBmbGFncyBpbnRvIE9iamVj dC1mb3JtYXR0ZWQgb25lcyBhbmQgc3RvcmUgaW4gY2FjaGUKZnVuY3Rpb24gY3Jl YXRlRmxhZ3MoIGZsYWdzICkgewoJdmFyIG9iamVjdCA9IGZsYWdzQ2FjaGVbIGZs YWdzIF0gPSB7fSwKCQlpLCBsZW5ndGg7CglmbGFncyA9IGZsYWdzLnNwbGl0KCAv XHMrLyApOwoJZm9yICggaSA9IDAsIGxlbmd0aCA9IGZsYWdzLmxlbmd0aDsgaSA8 IGxlbmd0aDsgaSsrICkgewoJCW9iamVjdFsgZmxhZ3NbaV0gXSA9IHRydWU7Cgl9 CglyZXR1cm4gb2JqZWN0Owp9CgovKgogKiBDcmVhdGUgYSBjYWxsYmFjayBsaXN0 IHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKICoKICoJZmxhZ3M6CWFu IG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIGZsYWdzIHRoYXQgd2ls bCBjaGFuZ2UgaG93CiAqCQkJdGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcwogKgog KiBCeSBkZWZhdWx0IGEgY2FsbGJhY2sgbGlzdCB3aWxsIGFjdCBsaWtlIGFuIGV2 ZW50IGNhbGxiYWNrIGxpc3QgYW5kIGNhbiBiZQogKiAiZmlyZWQiIG11bHRpcGxl IHRpbWVzLgogKgogKiBQb3NzaWJsZSBmbGFnczoKICoKICoJb25jZToJCQl3aWxs IGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNl IChsaWtlIGEgRGVmZXJyZWQpCiAqCiAqCW1lbW9yeToJCQl3aWxsIGtlZXAgdHJh Y2sgb2YgcHJldmlvdXMgdmFsdWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNr IGFkZGVkCiAqCQkJCQlhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdo dCBhd2F5IHdpdGggdGhlIGxhdGVzdCAibWVtb3JpemVkIgogKgkJCQkJdmFsdWVz IChsaWtlIGEgRGVmZXJyZWQpCiAqCiAqCXVuaXF1ZToJCQl3aWxsIGVuc3VyZSBh IGNhbGxiYWNrIGNhbiBvbmx5IGJlIGFkZGVkIG9uY2UgKG5vIGR1cGxpY2F0ZSBp biB0aGUgbGlzdCkKICoKICoJc3RvcE9uRmFsc2U6CWludGVycnVwdCBjYWxsaW5n cyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZQogKgogKi8KalF1ZXJ5LkNh bGxiYWNrcyA9IGZ1bmN0aW9uKCBmbGFncyApIHsKCgkvLyBDb252ZXJ0IGZsYWdz IGZyb20gU3RyaW5nLWZvcm1hdHRlZCB0byBPYmplY3QtZm9ybWF0dGVkCgkvLyAo d2UgY2hlY2sgaW4gY2FjaGUgZmlyc3QpCglmbGFncyA9IGZsYWdzID8gKCBmbGFn c0NhY2hlWyBmbGFncyBdIHx8IGNyZWF0ZUZsYWdzKCBmbGFncyApICkgOiB7fTsK Cgl2YXIgLy8gQWN0dWFsIGNhbGxiYWNrIGxpc3QKCQlsaXN0ID0gW10sCgkJLy8g U3RhY2sgb2YgZmlyZSBjYWxscyBmb3IgcmVwZWF0YWJsZSBsaXN0cwoJCXN0YWNr ID0gW10sCgkJLy8gTGFzdCBmaXJlIHZhbHVlIChmb3Igbm9uLWZvcmdldHRhYmxl IGxpc3RzKQoJCW1lbW9yeSwKCQkvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCB3YXMg YWxyZWFkeSBmaXJlZAoJCWZpcmVkLAoJCS8vIEZsYWcgdG8ga25vdyBpZiBsaXN0 IGlzIGN1cnJlbnRseSBmaXJpbmcKCQlmaXJpbmcsCgkJLy8gRmlyc3QgY2FsbGJh Y2sgdG8gZmlyZSAodXNlZCBpbnRlcm5hbGx5IGJ5IGFkZCBhbmQgZmlyZVdpdGgp CgkJZmlyaW5nU3RhcnQsCgkJLy8gRW5kIG9mIHRoZSBsb29wIHdoZW4gZmlyaW5n CgkJZmlyaW5nTGVuZ3RoLAoJCS8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcg Y2FsbGJhY2sgKG1vZGlmaWVkIGJ5IHJlbW92ZSBpZiBuZWVkZWQpCgkJZmlyaW5n SW5kZXgsCgkJLy8gQWRkIG9uZSBvciBzZXZlcmFsIGNhbGxiYWNrcyB0byB0aGUg bGlzdAoJCWFkZCA9IGZ1bmN0aW9uKCBhcmdzICkgewoJCQl2YXIgaSwKCQkJCWxl bmd0aCwKCQkJCWVsZW0sCgkJCQl0eXBlLAoJCQkJYWN0dWFsOwoJCQlmb3IgKCBp ID0gMCwgbGVuZ3RoID0gYXJncy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKyApIHsK CQkJCWVsZW0gPSBhcmdzWyBpIF07CgkJCQl0eXBlID0galF1ZXJ5LnR5cGUoIGVs ZW0gKTsKCQkJCWlmICggdHlwZSA9PT0gImFycmF5IiApIHsKCQkJCQkvLyBJbnNw ZWN0IHJlY3Vyc2l2ZWx5CgkJCQkJYWRkKCBlbGVtICk7CgkJCQl9IGVsc2UgaWYg KCB0eXBlID09PSAiZnVuY3Rpb24iICkgewoJCQkJCS8vIEFkZCBpZiBub3QgaW4g dW5pcXVlIG1vZGUgYW5kIGNhbGxiYWNrIGlzIG5vdCBpbgoJCQkJCWlmICggIWZs YWdzLnVuaXF1ZSB8fCAhc2VsZi5oYXMoIGVsZW0gKSApIHsKCQkJCQkJbGlzdC5w dXNoKCBlbGVtICk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfSwKCQkvLyBGaXJlIGNh bGxiYWNrcwoJCWZpcmUgPSBmdW5jdGlvbiggY29udGV4dCwgYXJncyApIHsKCQkJ YXJncyA9IGFyZ3MgfHwgW107CgkJCW1lbW9yeSA9ICFmbGFncy5tZW1vcnkgfHwg WyBjb250ZXh0LCBhcmdzIF07CgkJCWZpcmVkID0gdHJ1ZTsKCQkJZmlyaW5nID0g dHJ1ZTsKCQkJZmlyaW5nSW5kZXggPSBmaXJpbmdTdGFydCB8fCAwOwoJCQlmaXJp bmdTdGFydCA9IDA7CgkJCWZpcmluZ0xlbmd0aCA9IGxpc3QubGVuZ3RoOwoJCQlm b3IgKCA7IGxpc3QgJiYgZmlyaW5nSW5kZXggPCBmaXJpbmdMZW5ndGg7IGZpcmlu Z0luZGV4KysgKSB7CgkJCQlpZiAoIGxpc3RbIGZpcmluZ0luZGV4IF0uYXBwbHko IGNvbnRleHQsIGFyZ3MgKSA9PT0gZmFsc2UgJiYgZmxhZ3Muc3RvcE9uRmFsc2Ug KSB7CgkJCQkJbWVtb3J5ID0gdHJ1ZTsgLy8gTWFyayBhcyBoYWx0ZWQKCQkJCQli cmVhazsKCQkJCX0KCQkJfQoJCQlmaXJpbmcgPSBmYWxzZTsKCQkJaWYgKCBsaXN0 ICkgewoJCQkJaWYgKCAhZmxhZ3Mub25jZSApIHsKCQkJCQlpZiAoIHN0YWNrICYm IHN0YWNrLmxlbmd0aCApIHsKCQkJCQkJbWVtb3J5ID0gc3RhY2suc2hpZnQoKTsK CQkJCQkJc2VsZi5maXJlV2l0aCggbWVtb3J5WyAwIF0sIG1lbW9yeVsgMSBdICk7 CgkJCQkJfQoJCQkJfSBlbHNlIGlmICggbWVtb3J5ID09PSB0cnVlICkgewoJCQkJ CXNlbGYuZGlzYWJsZSgpOwoJCQkJfSBlbHNlIHsKCQkJCQlsaXN0ID0gW107CgkJ CQl9CgkJCX0KCQl9LAoJCS8vIEFjdHVhbCBDYWxsYmFja3Mgb2JqZWN0CgkJc2Vs ZiA9IHsKCQkJLy8gQWRkIGEgY2FsbGJhY2sgb3IgYSBjb2xsZWN0aW9uIG9mIGNh bGxiYWNrcyB0byB0aGUgbGlzdAoJCQlhZGQ6IGZ1bmN0aW9uKCkgewoJCQkJaWYg KCBsaXN0ICkgewoJCQkJCXZhciBsZW5ndGggPSBsaXN0Lmxlbmd0aDsKCQkJCQlh ZGQoIGFyZ3VtZW50cyApOwoJCQkJCS8vIERvIHdlIG5lZWQgdG8gYWRkIHRoZSBj YWxsYmFja3MgdG8gdGhlCgkJCQkJLy8gY3VycmVudCBmaXJpbmcgYmF0Y2g/CgkJ CQkJaWYgKCBmaXJpbmcgKSB7CgkJCQkJCWZpcmluZ0xlbmd0aCA9IGxpc3QubGVu Z3RoOwoJCQkJCS8vIFdpdGggbWVtb3J5LCBpZiB3ZSdyZSBub3QgZmlyaW5nIHRo ZW4KCQkJCQkvLyB3ZSBzaG91bGQgY2FsbCByaWdodCBhd2F5LCB1bmxlc3MgcHJl dmlvdXMKCQkJCQkvLyBmaXJpbmcgd2FzIGhhbHRlZCAoc3RvcE9uRmFsc2UpCgkJ CQkJfSBlbHNlIGlmICggbWVtb3J5ICYmIG1lbW9yeSAhPT0gdHJ1ZSApIHsKCQkJ CQkJZmlyaW5nU3RhcnQgPSBsZW5ndGg7CgkJCQkJCWZpcmUoIG1lbW9yeVsgMCBd LCBtZW1vcnlbIDEgXSApOwoJCQkJCX0KCQkJCX0KCQkJCXJldHVybiB0aGlzOwoJ CQl9LAoJCQkvLyBSZW1vdmUgYSBjYWxsYmFjayBmcm9tIHRoZSBsaXN0CgkJCXJl bW92ZTogZnVuY3Rpb24oKSB7CgkJCQlpZiAoIGxpc3QgKSB7CgkJCQkJdmFyIGFy Z3MgPSBhcmd1bWVudHMsCgkJCQkJCWFyZ0luZGV4ID0gMCwKCQkJCQkJYXJnTGVu Z3RoID0gYXJncy5sZW5ndGg7CgkJCQkJZm9yICggOyBhcmdJbmRleCA8IGFyZ0xl bmd0aCA7IGFyZ0luZGV4KysgKSB7CgkJCQkJCWZvciAoIHZhciBpID0gMDsgaSA8 IGxpc3QubGVuZ3RoOyBpKysgKSB7CgkJCQkJCQlpZiAoIGFyZ3NbIGFyZ0luZGV4 IF0gPT09IGxpc3RbIGkgXSApIHsKCQkJCQkJCQkvLyBIYW5kbGUgZmlyaW5nSW5k ZXggYW5kIGZpcmluZ0xlbmd0aAoJCQkJCQkJCWlmICggZmlyaW5nICkgewoJCQkJ CQkJCQlpZiAoIGkgPD0gZmlyaW5nTGVuZ3RoICkgewoJCQkJCQkJCQkJZmlyaW5n TGVuZ3RoLS07CgkJCQkJCQkJCQlpZiAoIGkgPD0gZmlyaW5nSW5kZXggKSB7CgkJ CQkJCQkJCQkJZmlyaW5nSW5kZXgtLTsKCQkJCQkJCQkJCX0KCQkJCQkJCQkJfQoJ CQkJCQkJCX0KCQkJCQkJCQkvLyBSZW1vdmUgdGhlIGVsZW1lbnQKCQkJCQkJCQls aXN0LnNwbGljZSggaS0tLCAxICk7CgkJCQkJCQkJLy8gSWYgd2UgaGF2ZSBzb21l IHVuaWNpdHkgcHJvcGVydHkgdGhlbgoJCQkJCQkJCS8vIHdlIG9ubHkgbmVlZCB0 byBkbyB0aGlzIG9uY2UKCQkJCQkJCQlpZiAoIGZsYWdzLnVuaXF1ZSApIHsKCQkJ CQkJCQkJYnJlYWs7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJ CQkJfQoJCQkJcmV0dXJuIHRoaXM7CgkJCX0sCgkJCS8vIENvbnRyb2wgaWYgYSBn aXZlbiBjYWxsYmFjayBpcyBpbiB0aGUgbGlzdAoJCQloYXM6IGZ1bmN0aW9uKCBm biApIHsKCQkJCWlmICggbGlzdCApIHsKCQkJCQl2YXIgaSA9IDAsCgkJCQkJCWxl bmd0aCA9IGxpc3QubGVuZ3RoOwoJCQkJCWZvciAoIDsgaSA8IGxlbmd0aDsgaSsr ICkgewoJCQkJCQlpZiAoIGZuID09PSBsaXN0WyBpIF0gKSB7CgkJCQkJCQlyZXR1 cm4gdHJ1ZTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCXJldHVybiBmYWxzZTsK CQkJfSwKCQkJLy8gUmVtb3ZlIGFsbCBjYWxsYmFja3MgZnJvbSB0aGUgbGlzdAoJ CQllbXB0eTogZnVuY3Rpb24oKSB7CgkJCQlsaXN0ID0gW107CgkJCQlyZXR1cm4g dGhpczsKCQkJfSwKCQkJLy8gSGF2ZSB0aGUgbGlzdCBkbyBub3RoaW5nIGFueW1v cmUKCQkJZGlzYWJsZTogZnVuY3Rpb24oKSB7CgkJCQlsaXN0ID0gc3RhY2sgPSBt ZW1vcnkgPSB1bmRlZmluZWQ7CgkJCQlyZXR1cm4gdGhpczsKCQkJfSwKCQkJLy8g SXMgaXQgZGlzYWJsZWQ/CgkJCWRpc2FibGVkOiBmdW5jdGlvbigpIHsKCQkJCXJl dHVybiAhbGlzdDsKCQkJfSwKCQkJLy8gTG9jayB0aGUgbGlzdCBpbiBpdHMgY3Vy cmVudCBzdGF0ZQoJCQlsb2NrOiBmdW5jdGlvbigpIHsKCQkJCXN0YWNrID0gdW5k ZWZpbmVkOwoJCQkJaWYgKCAhbWVtb3J5IHx8IG1lbW9yeSA9PT0gdHJ1ZSApIHsK CQkJCQlzZWxmLmRpc2FibGUoKTsKCQkJCX0KCQkJCXJldHVybiB0aGlzOwoJCQl9 LAoJCQkvLyBJcyBpdCBsb2NrZWQ/CgkJCWxvY2tlZDogZnVuY3Rpb24oKSB7CgkJ CQlyZXR1cm4gIXN0YWNrOwoJCQl9LAoJCQkvLyBDYWxsIGFsbCBjYWxsYmFja3Mg d2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzCgkJCWZpcmVXaXRo OiBmdW5jdGlvbiggY29udGV4dCwgYXJncyApIHsKCQkJCWlmICggc3RhY2sgKSB7 CgkJCQkJaWYgKCBmaXJpbmcgKSB7CgkJCQkJCWlmICggIWZsYWdzLm9uY2UgKSB7 CgkJCQkJCQlzdGFjay5wdXNoKCBbIGNvbnRleHQsIGFyZ3MgXSApOwoJCQkJCQl9 CgkJCQkJfSBlbHNlIGlmICggISggZmxhZ3Mub25jZSAmJiBtZW1vcnkgKSApIHsK CQkJCQkJZmlyZSggY29udGV4dCwgYXJncyApOwoJCQkJCX0KCQkJCX0KCQkJCXJl dHVybiB0aGlzOwoJCQl9LAoJCQkvLyBDYWxsIGFsbCB0aGUgY2FsbGJhY2tzIHdp dGggdGhlIGdpdmVuIGFyZ3VtZW50cwoJCQlmaXJlOiBmdW5jdGlvbigpIHsKCQkJ CXNlbGYuZmlyZVdpdGgoIHRoaXMsIGFyZ3VtZW50cyApOwoJCQkJcmV0dXJuIHRo aXM7CgkJCX0sCgkJCS8vIFRvIGtub3cgaWYgdGhlIGNhbGxiYWNrcyBoYXZlIGFs cmVhZHkgYmVlbiBjYWxsZWQgYXQgbGVhc3Qgb25jZQoJCQlmaXJlZDogZnVuY3Rp b24oKSB7CgkJCQlyZXR1cm4gISFmaXJlZDsKCQkJfQoJCX07CgoJcmV0dXJuIHNl bGY7Cn07CgoKCgp2YXIgLy8gU3RhdGljIHJlZmVyZW5jZSB0byBzbGljZQoJc2xp Y2VEZWZlcnJlZCA9IFtdLnNsaWNlOwoKalF1ZXJ5LmV4dGVuZCh7CgoJRGVmZXJy ZWQ6IGZ1bmN0aW9uKCBmdW5jICkgewoJCXZhciBkb25lTGlzdCA9IGpRdWVyeS5D YWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwKCQkJZmFpbExpc3QgPSBqUXVlcnku Q2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICksCgkJCXByb2dyZXNzTGlzdCA9IGpR dWVyeS5DYWxsYmFja3MoICJtZW1vcnkiICksCgkJCXN0YXRlID0gInBlbmRpbmci LAoJCQlsaXN0cyA9IHsKCQkJCXJlc29sdmU6IGRvbmVMaXN0LAoJCQkJcmVqZWN0 OiBmYWlsTGlzdCwKCQkJCW5vdGlmeTogcHJvZ3Jlc3NMaXN0CgkJCX0sCgkJCXBy b21pc2UgPSB7CgkJCQlkb25lOiBkb25lTGlzdC5hZGQsCgkJCQlmYWlsOiBmYWls TGlzdC5hZGQsCgkJCQlwcm9ncmVzczogcHJvZ3Jlc3NMaXN0LmFkZCwKCgkJCQlz dGF0ZTogZnVuY3Rpb24oKSB7CgkJCQkJcmV0dXJuIHN0YXRlOwoJCQkJfSwKCgkJ CQkvLyBEZXByZWNhdGVkCgkJCQlpc1Jlc29sdmVkOiBkb25lTGlzdC5maXJlZCwK CQkJCWlzUmVqZWN0ZWQ6IGZhaWxMaXN0LmZpcmVkLAoKCQkJCXRoZW46IGZ1bmN0 aW9uKCBkb25lQ2FsbGJhY2tzLCBmYWlsQ2FsbGJhY2tzLCBwcm9ncmVzc0NhbGxi YWNrcyApIHsKCQkJCQlkZWZlcnJlZC5kb25lKCBkb25lQ2FsbGJhY2tzICkuZmFp bCggZmFpbENhbGxiYWNrcyApLnByb2dyZXNzKCBwcm9ncmVzc0NhbGxiYWNrcyAp OwoJCQkJCXJldHVybiB0aGlzOwoJCQkJfSwKCQkJCWFsd2F5czogZnVuY3Rpb24o KSB7CgkJCQkJZGVmZXJyZWQuZG9uZS5hcHBseSggZGVmZXJyZWQsIGFyZ3VtZW50 cyApLmZhaWwuYXBwbHkoIGRlZmVycmVkLCBhcmd1bWVudHMgKTsKCQkJCQlyZXR1 cm4gdGhpczsKCQkJCX0sCgkJCQlwaXBlOiBmdW5jdGlvbiggZm5Eb25lLCBmbkZh aWwsIGZuUHJvZ3Jlc3MgKSB7CgkJCQkJcmV0dXJuIGpRdWVyeS5EZWZlcnJlZChm dW5jdGlvbiggbmV3RGVmZXIgKSB7CgkJCQkJCWpRdWVyeS5lYWNoKCB7CgkJCQkJ CQlkb25lOiBbIGZuRG9uZSwgInJlc29sdmUiIF0sCgkJCQkJCQlmYWlsOiBbIGZu RmFpbCwgInJlamVjdCIgXSwKCQkJCQkJCXByb2dyZXNzOiBbIGZuUHJvZ3Jlc3Ms ICJub3RpZnkiIF0KCQkJCQkJfSwgZnVuY3Rpb24oIGhhbmRsZXIsIGRhdGEgKSB7 CgkJCQkJCQl2YXIgZm4gPSBkYXRhWyAwIF0sCgkJCQkJCQkJYWN0aW9uID0gZGF0 YVsgMSBdLAoJCQkJCQkJCXJldHVybmVkOwoJCQkJCQkJaWYgKCBqUXVlcnkuaXNG dW5jdGlvbiggZm4gKSApIHsKCQkJCQkJCQlkZWZlcnJlZFsgaGFuZGxlciBdKGZ1 bmN0aW9uKCkgewoJCQkJCQkJCQlyZXR1cm5lZCA9IGZuLmFwcGx5KCB0aGlzLCBh cmd1bWVudHMgKTsKCQkJCQkJCQkJaWYgKCByZXR1cm5lZCAmJiBqUXVlcnkuaXNG dW5jdGlvbiggcmV0dXJuZWQucHJvbWlzZSApICkgewoJCQkJCQkJCQkJcmV0dXJu ZWQucHJvbWlzZSgpLnRoZW4oIG5ld0RlZmVyLnJlc29sdmUsIG5ld0RlZmVyLnJl amVjdCwgbmV3RGVmZXIubm90aWZ5ICk7CgkJCQkJCQkJCX0gZWxzZSB7CgkJCQkJ CQkJCQluZXdEZWZlclsgYWN0aW9uICsgIldpdGgiIF0oIHRoaXMgPT09IGRlZmVy cmVkID8gbmV3RGVmZXIgOiB0aGlzLCBbIHJldHVybmVkIF0gKTsKCQkJCQkJCQkJ fQoJCQkJCQkJCX0pOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQlkZWZlcnJlZFsg aGFuZGxlciBdKCBuZXdEZWZlclsgYWN0aW9uIF0gKTsKCQkJCQkJCX0KCQkJCQkJ fSk7CgkJCQkJfSkucHJvbWlzZSgpOwoJCQkJfSwKCQkJCS8vIEdldCBhIHByb21p c2UgZm9yIHRoaXMgZGVmZXJyZWQKCQkJCS8vIElmIG9iaiBpcyBwcm92aWRlZCwg dGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3QKCQkJCXBy b21pc2U6IGZ1bmN0aW9uKCBvYmogKSB7CgkJCQkJaWYgKCBvYmogPT0gbnVsbCAp IHsKCQkJCQkJb2JqID0gcHJvbWlzZTsKCQkJCQl9IGVsc2UgewoJCQkJCQlmb3Ig KCB2YXIga2V5IGluIHByb21pc2UgKSB7CgkJCQkJCQlvYmpbIGtleSBdID0gcHJv bWlzZVsga2V5IF07CgkJCQkJCX0KCQkJCQl9CgkJCQkJcmV0dXJuIG9iajsKCQkJ CX0KCQkJfSwKCQkJZGVmZXJyZWQgPSBwcm9taXNlLnByb21pc2Uoe30pLAoJCQlr ZXk7CgoJCWZvciAoIGtleSBpbiBsaXN0cyApIHsKCQkJZGVmZXJyZWRbIGtleSBd ID0gbGlzdHNbIGtleSBdLmZpcmU7CgkJCWRlZmVycmVkWyBrZXkgKyAiV2l0aCIg XSA9IGxpc3RzWyBrZXkgXS5maXJlV2l0aDsKCQl9CgoJCS8vIEhhbmRsZSBzdGF0 ZQoJCWRlZmVycmVkLmRvbmUoIGZ1bmN0aW9uKCkgewoJCQlzdGF0ZSA9ICJyZXNv bHZlZCI7CgkJfSwgZmFpbExpc3QuZGlzYWJsZSwgcHJvZ3Jlc3NMaXN0LmxvY2sg KS5mYWlsKCBmdW5jdGlvbigpIHsKCQkJc3RhdGUgPSAicmVqZWN0ZWQiOwoJCX0s IGRvbmVMaXN0LmRpc2FibGUsIHByb2dyZXNzTGlzdC5sb2NrICk7CgoJCS8vIENh bGwgZ2l2ZW4gZnVuYyBpZiBhbnkKCQlpZiAoIGZ1bmMgKSB7CgkJCWZ1bmMuY2Fs bCggZGVmZXJyZWQsIGRlZmVycmVkICk7CgkJfQoKCQkvLyBBbGwgZG9uZSEKCQly ZXR1cm4gZGVmZXJyZWQ7Cgl9LAoKCS8vIERlZmVycmVkIGhlbHBlcgoJd2hlbjog ZnVuY3Rpb24oIGZpcnN0UGFyYW0gKSB7CgkJdmFyIGFyZ3MgPSBzbGljZURlZmVy cmVkLmNhbGwoIGFyZ3VtZW50cywgMCApLAoJCQlpID0gMCwKCQkJbGVuZ3RoID0g YXJncy5sZW5ndGgsCgkJCXBWYWx1ZXMgPSBuZXcgQXJyYXkoIGxlbmd0aCApLAoJ CQljb3VudCA9IGxlbmd0aCwKCQkJcENvdW50ID0gbGVuZ3RoLAoJCQlkZWZlcnJl ZCA9IGxlbmd0aCA8PSAxICYmIGZpcnN0UGFyYW0gJiYgalF1ZXJ5LmlzRnVuY3Rp b24oIGZpcnN0UGFyYW0ucHJvbWlzZSApID8KCQkJCWZpcnN0UGFyYW0gOgoJCQkJ alF1ZXJ5LkRlZmVycmVkKCksCgkJCXByb21pc2UgPSBkZWZlcnJlZC5wcm9taXNl KCk7CgkJZnVuY3Rpb24gcmVzb2x2ZUZ1bmMoIGkgKSB7CgkJCXJldHVybiBmdW5j dGlvbiggdmFsdWUgKSB7CgkJCQlhcmdzWyBpIF0gPSBhcmd1bWVudHMubGVuZ3Ro ID4gMSA/IHNsaWNlRGVmZXJyZWQuY2FsbCggYXJndW1lbnRzLCAwICkgOiB2YWx1 ZTsKCQkJCWlmICggISggLS1jb3VudCApICkgewoJCQkJCWRlZmVycmVkLnJlc29s dmVXaXRoKCBkZWZlcnJlZCwgYXJncyApOwoJCQkJfQoJCQl9OwoJCX0KCQlmdW5j dGlvbiBwcm9ncmVzc0Z1bmMoIGkgKSB7CgkJCXJldHVybiBmdW5jdGlvbiggdmFs dWUgKSB7CgkJCQlwVmFsdWVzWyBpIF0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/ IHNsaWNlRGVmZXJyZWQuY2FsbCggYXJndW1lbnRzLCAwICkgOiB2YWx1ZTsKCQkJ CWRlZmVycmVkLm5vdGlmeVdpdGgoIHByb21pc2UsIHBWYWx1ZXMgKTsKCQkJfTsK CQl9CgkJaWYgKCBsZW5ndGggPiAxICkgewoJCQlmb3IgKCA7IGkgPCBsZW5ndGg7 IGkrKyApIHsKCQkJCWlmICggYXJnc1sgaSBdICYmIGFyZ3NbIGkgXS5wcm9taXNl ICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBhcmdzWyBpIF0ucHJvbWlzZSApICkgewoJ CQkJCWFyZ3NbIGkgXS5wcm9taXNlKCkudGhlbiggcmVzb2x2ZUZ1bmMoaSksIGRl ZmVycmVkLnJlamVjdCwgcHJvZ3Jlc3NGdW5jKGkpICk7CgkJCQl9IGVsc2UgewoJ CQkJCS0tY291bnQ7CgkJCQl9CgkJCX0KCQkJaWYgKCAhY291bnQgKSB7CgkJCQlk ZWZlcnJlZC5yZXNvbHZlV2l0aCggZGVmZXJyZWQsIGFyZ3MgKTsKCQkJfQoJCX0g ZWxzZSBpZiAoIGRlZmVycmVkICE9PSBmaXJzdFBhcmFtICkgewoJCQlkZWZlcnJl ZC5yZXNvbHZlV2l0aCggZGVmZXJyZWQsIGxlbmd0aCA/IFsgZmlyc3RQYXJhbSBd IDogW10gKTsKCQl9CgkJcmV0dXJuIHByb21pc2U7Cgl9Cn0pOwoKCgoKalF1ZXJ5 LnN1cHBvcnQgPSAoZnVuY3Rpb24oKSB7CgoJdmFyIHN1cHBvcnQsCgkJYWxsLAoJ CWEsCgkJc2VsZWN0LAoJCW9wdCwKCQlpbnB1dCwKCQlmcmFnbWVudCwKCQl0ZHMs CgkJZXZlbnRzLAoJCWV2ZW50TmFtZSwKCQlpLAoJCWlzU3VwcG9ydGVkLAoJCWRp diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYiICksCgkJZG9jdW1lbnRF bGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwoKCS8vIFByZWxpbWlu YXJ5IHRlc3RzCglkaXYuc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCAidCIpOwoJ ZGl2LmlubmVySFRNTCA9ICIgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJl Zj0nL2EnIHN0eWxlPSd0b3A6MXB4O2Zsb2F0OmxlZnQ7b3BhY2l0eTouNTU7Jz5h PC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiI7CgoJYWxsID0gZGl2LmdldEVs ZW1lbnRzQnlUYWdOYW1lKCAiKiIgKTsKCWEgPSBkaXYuZ2V0RWxlbWVudHNCeVRh Z05hbWUoICJhIiApWyAwIF07CgoJLy8gQ2FuJ3QgZ2V0IGJhc2ljIHRlc3Qgc3Vw cG9ydAoJaWYgKCAhYWxsIHx8ICFhbGwubGVuZ3RoIHx8ICFhICkgewoJCXJldHVy biB7fTsKCX0KCgkvLyBGaXJzdCBiYXRjaCBvZiBzdXBwb3J0cyB0ZXN0cwoJc2Vs ZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggInNlbGVjdCIgKTsKCW9wdCA9 IHNlbGVjdC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0 aW9uIikgKTsKCWlucHV0ID0gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCAiaW5w dXQiIClbIDAgXTsKCglzdXBwb3J0ID0gewoJCS8vIElFIHN0cmlwcyBsZWFkaW5n IHdoaXRlc3BhY2Ugd2hlbiAuaW5uZXJIVE1MIGlzIHVzZWQKCQlsZWFkaW5nV2hp dGVzcGFjZTogKCBkaXYuZmlyc3RDaGlsZC5ub2RlVHlwZSA9PT0gMyApLAoKCQkv LyBNYWtlIHN1cmUgdGhhdCB0Ym9keSBlbGVtZW50cyBhcmVuJ3QgYXV0b21hdGlj YWxseSBpbnNlcnRlZAoJCS8vIElFIHdpbGwgaW5zZXJ0IHRoZW0gaW50byBlbXB0 eSB0YWJsZXMKCQl0Ym9keTogIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJv ZHkiKS5sZW5ndGgsCgoJCS8vIE1ha2Ugc3VyZSB0aGF0IGxpbmsgZWxlbWVudHMg Z2V0IHNlcmlhbGl6ZWQgY29ycmVjdGx5IGJ5IGlubmVySFRNTAoJCS8vIFRoaXMg cmVxdWlyZXMgYSB3cmFwcGVyIGVsZW1lbnQgaW4gSUUKCQlodG1sU2VyaWFsaXpl OiAhIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCwKCgkJ Ly8gR2V0IHRoZSBzdHlsZSBpbmZvcm1hdGlvbiBmcm9tIGdldEF0dHJpYnV0ZQoJ CS8vIChJRSB1c2VzIC5jc3NUZXh0IGluc3RlYWQpCgkJc3R5bGU6IC90b3AvLnRl c3QoIGEuZ2V0QXR0cmlidXRlKCJzdHlsZSIpICksCgoJCS8vIE1ha2Ugc3VyZSB0 aGF0IFVSTHMgYXJlbid0IG1hbmlwdWxhdGVkCgkJLy8gKElFIG5vcm1hbGl6ZXMg aXQgYnkgZGVmYXVsdCkKCQlocmVmTm9ybWFsaXplZDogKCBhLmdldEF0dHJpYnV0 ZSgiaHJlZiIpID09PSAiL2EiICksCgoJCS8vIE1ha2Ugc3VyZSB0aGF0IGVsZW1l bnQgb3BhY2l0eSBleGlzdHMKCQkvLyAoSUUgdXNlcyBmaWx0ZXIgaW5zdGVhZCkK CQkvLyBVc2UgYSByZWdleCB0byB3b3JrIGFyb3VuZCBhIFdlYktpdCBpc3N1ZS4g U2VlICM1MTQ1CgkJb3BhY2l0eTogL14wLjU1Ly50ZXN0KCBhLnN0eWxlLm9wYWNp dHkgKSwKCgkJLy8gVmVyaWZ5IHN0eWxlIGZsb2F0IGV4aXN0ZW5jZQoJCS8vIChJ RSB1c2VzIHN0eWxlRmxvYXQgaW5zdGVhZCBvZiBjc3NGbG9hdCkKCQljc3NGbG9h dDogISFhLnN0eWxlLmNzc0Zsb2F0LAoKCQkvLyBNYWtlIHN1cmUgdGhhdCBpZiBu byB2YWx1ZSBpcyBzcGVjaWZpZWQgZm9yIGEgY2hlY2tib3gKCQkvLyB0aGF0IGl0 IGRlZmF1bHRzIHRvICJvbiIuCgkJLy8gKFdlYktpdCBkZWZhdWx0cyB0byAiIiBp bnN0ZWFkKQoJCWNoZWNrT246ICggaW5wdXQudmFsdWUgPT09ICJvbiIgKSwKCgkJ Ly8gTWFrZSBzdXJlIHRoYXQgYSBzZWxlY3RlZC1ieS1kZWZhdWx0IG9wdGlvbiBo YXMgYSB3b3JraW5nIHNlbGVjdGVkIHByb3BlcnR5LgoJCS8vIChXZWJLaXQgZGVm YXVsdHMgdG8gZmFsc2UgaW5zdGVhZCBvZiB0cnVlLCBJRSB0b28sIGlmIGl0J3Mg aW4gYW4gb3B0Z3JvdXApCgkJb3B0U2VsZWN0ZWQ6IG9wdC5zZWxlY3RlZCwKCgkJ Ly8gVGVzdCBzZXRBdHRyaWJ1dGUgb24gY2FtZWxDYXNlIGNsYXNzLiBJZiBpdCB3 b3Jrcywgd2UgbmVlZCBhdHRyRml4ZXMgd2hlbiBkb2luZyBnZXQvc2V0QXR0cmli dXRlIChpZTYvNykKCQlnZXRTZXRBdHRyaWJ1dGU6IGRpdi5jbGFzc05hbWUgIT09 ICJ0IiwKCgkJLy8gVGVzdHMgZm9yIGVuY3R5cGUgc3VwcG9ydCBvbiBhIGZvcm0o IzY3NDMpCgkJZW5jdHlwZTogISFkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmb3Jt IikuZW5jdHlwZSwKCgkJLy8gTWFrZXMgc3VyZSBjbG9uaW5nIGFuIGh0bWw1IGVs ZW1lbnQgZG9lcyBub3QgY2F1c2UgcHJvYmxlbXMKCQkvLyBXaGVyZSBvdXRlckhU TUwgaXMgdW5kZWZpbmVkLCB0aGlzIHN0aWxsIHdvcmtzCgkJaHRtbDVDbG9uZTog ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibmF2IikuY2xvbmVOb2RlKCB0cnVlICku b3V0ZXJIVE1MICE9PSAiPDpuYXY+PC86bmF2PiIsCgoJCS8vIFdpbGwgYmUgZGVm aW5lZCBsYXRlcgoJCXN1Ym1pdEJ1YmJsZXM6IHRydWUsCgkJY2hhbmdlQnViYmxl czogdHJ1ZSwKCQlmb2N1c2luQnViYmxlczogZmFsc2UsCgkJZGVsZXRlRXhwYW5k bzogdHJ1ZSwKCQlub0Nsb25lRXZlbnQ6IHRydWUsCgkJaW5saW5lQmxvY2tOZWVk c0xheW91dDogZmFsc2UsCgkJc2hyaW5rV3JhcEJsb2NrczogZmFsc2UsCgkJcmVs aWFibGVNYXJnaW5SaWdodDogdHJ1ZSwKCQlwaXhlbE1hcmdpbjogdHJ1ZQoJfTsK CgkvLyBqUXVlcnkuYm94TW9kZWwgREVQUkVDQVRFRCBpbiAxLjMsIHVzZSBqUXVl cnkuc3VwcG9ydC5ib3hNb2RlbCBpbnN0ZWFkCglqUXVlcnkuYm94TW9kZWwgPSBz dXBwb3J0LmJveE1vZGVsID0gKGRvY3VtZW50LmNvbXBhdE1vZGUgPT09ICJDU1Mx Q29tcGF0Iik7CgoJLy8gTWFrZSBzdXJlIGNoZWNrZWQgc3RhdHVzIGlzIHByb3Bl cmx5IGNsb25lZAoJaW5wdXQuY2hlY2tlZCA9IHRydWU7CglzdXBwb3J0Lm5vQ2xv bmVDaGVja2VkID0gaW5wdXQuY2xvbmVOb2RlKCB0cnVlICkuY2hlY2tlZDsKCgkv LyBNYWtlIHN1cmUgdGhhdCB0aGUgb3B0aW9ucyBpbnNpZGUgZGlzYWJsZWQgc2Vs ZWN0cyBhcmVuJ3QgbWFya2VkIGFzIGRpc2FibGVkCgkvLyAoV2ViS2l0IG1hcmtz IHRoZW0gYXMgZGlzYWJsZWQpCglzZWxlY3QuZGlzYWJsZWQgPSB0cnVlOwoJc3Vw cG9ydC5vcHREaXNhYmxlZCA9ICFvcHQuZGlzYWJsZWQ7CgoJLy8gVGVzdCB0byBz ZWUgaWYgaXQncyBwb3NzaWJsZSB0byBkZWxldGUgYW4gZXhwYW5kbyBmcm9tIGFu IGVsZW1lbnQKCS8vIEZhaWxzIGluIEludGVybmV0IEV4cGxvcmVyCgl0cnkgewoJ CWRlbGV0ZSBkaXYudGVzdDsKCX0gY2F0Y2goIGUgKSB7CgkJc3VwcG9ydC5kZWxl dGVFeHBhbmRvID0gZmFsc2U7Cgl9CgoJaWYgKCAhZGl2LmFkZEV2ZW50TGlzdGVu ZXIgJiYgZGl2LmF0dGFjaEV2ZW50ICYmIGRpdi5maXJlRXZlbnQgKSB7CgkJZGl2 LmF0dGFjaEV2ZW50KCAib25jbGljayIsIGZ1bmN0aW9uKCkgewoJCQkvLyBDbG9u aW5nIGEgbm9kZSBzaG91bGRuJ3QgY29weSBvdmVyIGFueQoJCQkvLyBib3VuZCBl dmVudCBoYW5kbGVycyAoSUUgZG9lcyB0aGlzKQoJCQlzdXBwb3J0Lm5vQ2xvbmVF dmVudCA9IGZhbHNlOwoJCX0pOwoJCWRpdi5jbG9uZU5vZGUoIHRydWUgKS5maXJl RXZlbnQoICJvbmNsaWNrIiApOwoJfQoKCS8vIENoZWNrIGlmIGEgcmFkaW8gbWFp bnRhaW5zIGl0cyB2YWx1ZQoJLy8gYWZ0ZXIgYmVpbmcgYXBwZW5kZWQgdG8gdGhl IERPTQoJaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwoJ aW5wdXQudmFsdWUgPSAidCI7CglpbnB1dC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAi cmFkaW8iKTsKCXN1cHBvcnQucmFkaW9WYWx1ZSA9IGlucHV0LnZhbHVlID09PSAi dCI7CgoJaW5wdXQuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwgImNoZWNrZWQiKTsK CgkvLyAjMTEyMTcgLSBXZWJLaXQgbG9zZXMgY2hlY2sgd2hlbiB0aGUgbmFtZSBp cyBhZnRlciB0aGUgY2hlY2tlZCBhdHRyaWJ1dGUKCWlucHV0LnNldEF0dHJpYnV0 ZSggIm5hbWUiLCAidCIgKTsKCglkaXYuYXBwZW5kQ2hpbGQoIGlucHV0ICk7Cglm cmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKCWZy YWdtZW50LmFwcGVuZENoaWxkKCBkaXYubGFzdENoaWxkICk7CgoJLy8gV2ViS2l0 IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21l bnRzCglzdXBwb3J0LmNoZWNrQ2xvbmUgPSBmcmFnbWVudC5jbG9uZU5vZGUoIHRy dWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDsKCgkvLyBD aGVjayBpZiBhIGRpc2Nvbm5lY3RlZCBjaGVja2JveCB3aWxsIHJldGFpbiBpdHMg Y2hlY2tlZAoJLy8gdmFsdWUgb2YgdHJ1ZSBhZnRlciBhcHBlbmRlZCB0byB0aGUg RE9NIChJRTYvNykKCXN1cHBvcnQuYXBwZW5kQ2hlY2tlZCA9IGlucHV0LmNoZWNr ZWQ7CgoJZnJhZ21lbnQucmVtb3ZlQ2hpbGQoIGlucHV0ICk7CglmcmFnbWVudC5h cHBlbmRDaGlsZCggZGl2ICk7CgoJLy8gVGVjaG5pcXVlIGZyb20gSnVyaXkgWmF5 dHNldgoJLy8gaHR0cDovL3BlcmZlY3Rpb25raWxscy5jb20vZGV0ZWN0aW5nLWV2 ZW50LXN1cHBvcnQtd2l0aG91dC1icm93c2VyLXNuaWZmaW5nLwoJLy8gV2Ugb25s eSBjYXJlIGFib3V0IHRoZSBjYXNlIHdoZXJlIG5vbi1zdGFuZGFyZCBldmVudCBz eXN0ZW1zCgkvLyBhcmUgdXNlZCwgbmFtZWx5IGluIElFLiBTaG9ydC1jaXJjdWl0 aW5nIGhlcmUgaGVscHMgdXMgdG8KCS8vIGF2b2lkIGFuIGV2YWwgY2FsbCAoaW4g c2V0QXR0cmlidXRlKSB3aGljaCBjYW4gY2F1c2UgQ1NQCgkvLyB0byBnbyBoYXl3 aXJlLiBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL1NlY3Vy aXR5L0NTUAoJaWYgKCBkaXYuYXR0YWNoRXZlbnQgKSB7CgkJZm9yICggaSBpbiB7 CgkJCXN1Ym1pdDogMSwKCQkJY2hhbmdlOiAxLAoJCQlmb2N1c2luOiAxCgkJfSkg ewoJCQlldmVudE5hbWUgPSAib24iICsgaTsKCQkJaXNTdXBwb3J0ZWQgPSAoIGV2 ZW50TmFtZSBpbiBkaXYgKTsKCQkJaWYgKCAhaXNTdXBwb3J0ZWQgKSB7CgkJCQlk aXYuc2V0QXR0cmlidXRlKCBldmVudE5hbWUsICJyZXR1cm47IiApOwoJCQkJaXNT dXBwb3J0ZWQgPSAoIHR5cGVvZiBkaXZbIGV2ZW50TmFtZSBdID09PSAiZnVuY3Rp b24iICk7CgkJCX0KCQkJc3VwcG9ydFsgaSArICJCdWJibGVzIiBdID0gaXNTdXBw b3J0ZWQ7CgkJfQoJfQoKCWZyYWdtZW50LnJlbW92ZUNoaWxkKCBkaXYgKTsKCgkv LyBOdWxsIGVsZW1lbnRzIHRvIGF2b2lkIGxlYWtzIGluIElFCglmcmFnbWVudCA9 IHNlbGVjdCA9IG9wdCA9IGRpdiA9IGlucHV0ID0gbnVsbDsKCgkvLyBSdW4gdGVz dHMgdGhhdCBuZWVkIGEgYm9keSBhdCBkb2MgcmVhZHkKCWpRdWVyeShmdW5jdGlv bigpIHsKCQl2YXIgY29udGFpbmVyLCBvdXRlciwgaW5uZXIsIHRhYmxlLCB0ZCwg b2Zmc2V0U3VwcG9ydCwKCQkJbWFyZ2luRGl2LCBjb25NYXJnaW5Ub3AsIHN0eWxl LCBodG1sLCBwb3NpdGlvblRvcExlZnRXaWR0aEhlaWdodCwKCQkJcGFkZGluZ01h cmdpbkJvcmRlclZpc2liaWxpdHksIHBhZGRpbmdNYXJnaW5Cb3JkZXIsCgkJCWJv ZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdOwoK CQlpZiAoICFib2R5ICkgewoJCQkvLyBSZXR1cm4gZm9yIGZyYW1lc2V0IGRvY3Mg dGhhdCBkb24ndCBoYXZlIGEgYm9keQoJCQlyZXR1cm47CgkJfQoKCQljb25NYXJn aW5Ub3AgPSAxOwoJCXBhZGRpbmdNYXJnaW5Cb3JkZXIgPSAicGFkZGluZzowO21h cmdpbjowO2JvcmRlcjoiOwoJCXBvc2l0aW9uVG9wTGVmdFdpZHRoSGVpZ2h0ID0g InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxcHg7aGVpZ2h0 OjFweDsiOwoJCXBhZGRpbmdNYXJnaW5Cb3JkZXJWaXNpYmlsaXR5ID0gcGFkZGlu Z01hcmdpbkJvcmRlciArICIwO3Zpc2liaWxpdHk6aGlkZGVuOyI7CgkJc3R5bGUg PSAic3R5bGU9JyIgKyBwb3NpdGlvblRvcExlZnRXaWR0aEhlaWdodCArIHBhZGRp bmdNYXJnaW5Cb3JkZXIgKyAiNXB4IHNvbGlkICMwMDA7IjsKCQlodG1sID0gIjxk aXYgIiArIHN0eWxlICsgImRpc3BsYXk6YmxvY2s7Jz48ZGl2IHN0eWxlPSciICsg cGFkZGluZ01hcmdpbkJvcmRlciArICIwO2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6 aGlkZGVuOyc+PC9kaXY+PC9kaXY+IiArCgkJCSI8dGFibGUgIiArIHN0eWxlICsg IicgY2VsbHBhZGRpbmc9JzAnIGNlbGxzcGFjaW5nPScwJz4iICsKCQkJIjx0cj48 dGQ+PC90ZD48L3RyPjwvdGFibGU+IjsKCgkJY29udGFpbmVyID0gZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgiZGl2Iik7CgkJY29udGFpbmVyLnN0eWxlLmNzc1RleHQg PSBwYWRkaW5nTWFyZ2luQm9yZGVyVmlzaWJpbGl0eSArICJ3aWR0aDowO2hlaWdo dDowO3Bvc2l0aW9uOnN0YXRpYzt0b3A6MDttYXJnaW4tdG9wOiIgKyBjb25NYXJn aW5Ub3AgKyAicHgiOwoJCWJvZHkuaW5zZXJ0QmVmb3JlKCBjb250YWluZXIsIGJv ZHkuZmlyc3RDaGlsZCApOwoKCQkvLyBDb25zdHJ1Y3QgdGhlIHRlc3QgZWxlbWVu dAoJCWRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwoJCWNvbnRh aW5lci5hcHBlbmRDaGlsZCggZGl2ICk7CgoJCS8vIENoZWNrIGlmIHRhYmxlIGNl bGxzIHN0aWxsIGhhdmUgb2Zmc2V0V2lkdGgvSGVpZ2h0IHdoZW4gdGhleSBhcmUg c2V0CgkJLy8gdG8gZGlzcGxheTpub25lIGFuZCB0aGVyZSBhcmUgc3RpbGwgb3Ro ZXIgdmlzaWJsZSB0YWJsZSBjZWxscyBpbiBhCgkJLy8gdGFibGUgcm93OyBpZiBz bywgb2Zmc2V0V2lkdGgvSGVpZ2h0IGFyZSBub3QgcmVsaWFibGUgZm9yIHVzZSB3 aGVuCgkJLy8gZGV0ZXJtaW5pbmcgaWYgYW4gZWxlbWVudCBoYXMgYmVlbiBoaWRk ZW4gZGlyZWN0bHkgdXNpbmcKCQkvLyBkaXNwbGF5Om5vbmUgKGl0IGlzIHN0aWxs IHNhZmUgdG8gdXNlIG9mZnNldHMgaWYgYSBwYXJlbnQgZWxlbWVudCBpcwoJCS8v IGhpZGRlbjsgZG9uIHNhZmV0eSBnb2dnbGVzIGFuZCBzZWUgYnVnICM0NTEyIGZv ciBtb3JlIGluZm9ybWF0aW9uKS4KCQkvLyAob25seSBJRSA4IGZhaWxzIHRoaXMg dGVzdCkKCQlkaXYuaW5uZXJIVE1MID0gIjx0YWJsZT48dHI+PHRkIHN0eWxlPSci ICsgcGFkZGluZ01hcmdpbkJvcmRlciArICIwO2Rpc3BsYXk6bm9uZSc+PC90ZD48 dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiI7CgkJdGRzID0gZGl2LmdldEVsZW1lbnRz QnlUYWdOYW1lKCAidGQiICk7CgkJaXNTdXBwb3J0ZWQgPSAoIHRkc1sgMCBdLm9m ZnNldEhlaWdodCA9PT0gMCApOwoKCQl0ZHNbIDAgXS5zdHlsZS5kaXNwbGF5ID0g IiI7CgkJdGRzWyAxIF0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCgkJLy8gQ2hl Y2sgaWYgZW1wdHkgdGFibGUgY2VsbHMgc3RpbGwgaGF2ZSBvZmZzZXRXaWR0aC9I ZWlnaHQKCQkvLyAoSUUgPD0gOCBmYWlsIHRoaXMgdGVzdCkKCQlzdXBwb3J0LnJl bGlhYmxlSGlkZGVuT2Zmc2V0cyA9IGlzU3VwcG9ydGVkICYmICggdGRzWyAwIF0u b2Zmc2V0SGVpZ2h0ID09PSAwICk7CgoJCS8vIENoZWNrIGlmIGRpdiB3aXRoIGV4 cGxpY2l0IHdpZHRoIGFuZCBubyBtYXJnaW4tcmlnaHQgaW5jb3JyZWN0bHkKCQkv LyBnZXRzIGNvbXB1dGVkIG1hcmdpbi1yaWdodCBiYXNlZCBvbiB3aWR0aCBvZiBj b250YWluZXIuIEZvciBtb3JlCgkJLy8gaW5mbyBzZWUgYnVnICMzMzMzCgkJLy8g RmFpbHMgaW4gV2ViS2l0IGJlZm9yZSBGZWIgMjAxMSBuaWdodGxpZXMKCQkvLyBX ZWJLaXQgQnVnIDEzMzQzIC0gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHdyb25n IHZhbHVlIGZvciBtYXJnaW4tcmlnaHQKCQlpZiAoIHdpbmRvdy5nZXRDb21wdXRl ZFN0eWxlICkgewoJCQlkaXYuaW5uZXJIVE1MID0gIiI7CgkJCW1hcmdpbkRpdiA9 IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYiICk7CgkJCW1hcmdpbkRpdi5z dHlsZS53aWR0aCA9ICIwIjsKCQkJbWFyZ2luRGl2LnN0eWxlLm1hcmdpblJpZ2h0 ID0gIjAiOwoJCQlkaXYuc3R5bGUud2lkdGggPSAiMnB4IjsKCQkJZGl2LmFwcGVu ZENoaWxkKCBtYXJnaW5EaXYgKTsKCQkJc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJp Z2h0ID0KCQkJCSggcGFyc2VJbnQoICggd2luZG93LmdldENvbXB1dGVkU3R5bGUo IG1hcmdpbkRpdiwgbnVsbCApIHx8IHsgbWFyZ2luUmlnaHQ6IDAgfSApLm1hcmdp blJpZ2h0LCAxMCApIHx8IDAgKSA9PT0gMDsKCQl9CgoJCWlmICggdHlwZW9mIGRp di5zdHlsZS56b29tICE9PSAidW5kZWZpbmVkIiApIHsKCQkJLy8gQ2hlY2sgaWYg bmF0aXZlbHkgYmxvY2stbGV2ZWwgZWxlbWVudHMgYWN0IGxpa2UgaW5saW5lLWJs b2NrCgkJCS8vIGVsZW1lbnRzIHdoZW4gc2V0dGluZyB0aGVpciBkaXNwbGF5IHRv ICdpbmxpbmUnIGFuZCBnaXZpbmcKCQkJLy8gdGhlbSBsYXlvdXQKCQkJLy8gKElF IDwgOCBkb2VzIHRoaXMpCgkJCWRpdi5pbm5lckhUTUwgPSAiIjsKCQkJZGl2LnN0 eWxlLndpZHRoID0gZGl2LnN0eWxlLnBhZGRpbmcgPSAiMXB4IjsKCQkJZGl2LnN0 eWxlLmJvcmRlciA9IDA7CgkJCWRpdi5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4i OwoJCQlkaXYuc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUiOwoJCQlkaXYuc3R5bGUu em9vbSA9IDE7CgkJCXN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dCA9ICgg ZGl2Lm9mZnNldFdpZHRoID09PSAzICk7CgoJCQkvLyBDaGVjayBpZiBlbGVtZW50 cyB3aXRoIGxheW91dCBzaHJpbmstd3JhcCB0aGVpciBjaGlsZHJlbgoJCQkvLyAo SUUgNiBkb2VzIHRoaXMpCgkJCWRpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsK CQkJZGl2LnN0eWxlLm92ZXJmbG93ID0gInZpc2libGUiOwoJCQlkaXYuaW5uZXJI VE1MID0gIjxkaXYgc3R5bGU9J3dpZHRoOjVweDsnPjwvZGl2PiI7CgkJCXN1cHBv cnQuc2hyaW5rV3JhcEJsb2NrcyA9ICggZGl2Lm9mZnNldFdpZHRoICE9PSAzICk7 CgkJfQoKCQlkaXYuc3R5bGUuY3NzVGV4dCA9IHBvc2l0aW9uVG9wTGVmdFdpZHRo SGVpZ2h0ICsgcGFkZGluZ01hcmdpbkJvcmRlclZpc2liaWxpdHk7CgkJZGl2Lmlu bmVySFRNTCA9IGh0bWw7CgoJCW91dGVyID0gZGl2LmZpcnN0Q2hpbGQ7CgkJaW5u ZXIgPSBvdXRlci5maXJzdENoaWxkOwoJCXRkID0gb3V0ZXIubmV4dFNpYmxpbmcu Zmlyc3RDaGlsZC5maXJzdENoaWxkOwoKCQlvZmZzZXRTdXBwb3J0ID0gewoJCQlk b2VzTm90QWRkQm9yZGVyOiAoIGlubmVyLm9mZnNldFRvcCAhPT0gNSApLAoJCQlk b2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxsczogKCB0ZC5vZmZzZXRUb3AgPT09 IDUgKQoJCX07CgoJCWlubmVyLnN0eWxlLnBvc2l0aW9uID0gImZpeGVkIjsKCQlp bm5lci5zdHlsZS50b3AgPSAiMjBweCI7CgoJCS8vIHNhZmFyaSBzdWJ0cmFjdHMg cGFyZW50IGJvcmRlciB3aWR0aCBoZXJlIHdoaWNoIGlzIDVweAoJCW9mZnNldFN1 cHBvcnQuZml4ZWRQb3NpdGlvbiA9ICggaW5uZXIub2Zmc2V0VG9wID09PSAyMCB8 fCBpbm5lci5vZmZzZXRUb3AgPT09IDE1ICk7CgkJaW5uZXIuc3R5bGUucG9zaXRp b24gPSBpbm5lci5zdHlsZS50b3AgPSAiIjsKCgkJb3V0ZXIuc3R5bGUub3ZlcmZs b3cgPSAiaGlkZGVuIjsKCQlvdXRlci5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2 ZSI7CgoJCW9mZnNldFN1cHBvcnQuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dO b3RWaXNpYmxlID0gKCBpbm5lci5vZmZzZXRUb3AgPT09IC01ICk7CgkJb2Zmc2V0 U3VwcG9ydC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCA9ICggYm9k eS5vZmZzZXRUb3AgIT09IGNvbk1hcmdpblRvcCApOwoKCQlpZiAoIHdpbmRvdy5n ZXRDb21wdXRlZFN0eWxlICkgewoJCQlkaXYuc3R5bGUubWFyZ2luVG9wID0gIjEl IjsKCQkJc3VwcG9ydC5waXhlbE1hcmdpbiA9ICggd2luZG93LmdldENvbXB1dGVk U3R5bGUoIGRpdiwgbnVsbCApIHx8IHsgbWFyZ2luVG9wOiAwIH0gKS5tYXJnaW5U b3AgIT09ICIxJSI7CgkJfQoKCQlpZiAoIHR5cGVvZiBjb250YWluZXIuc3R5bGUu em9vbSAhPT0gInVuZGVmaW5lZCIgKSB7CgkJCWNvbnRhaW5lci5zdHlsZS56b29t ID0gMTsKCQl9CgoJCWJvZHkucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApOwoJCW1h cmdpbkRpdiA9IGRpdiA9IGNvbnRhaW5lciA9IG51bGw7CgoJCWpRdWVyeS5leHRl bmQoIHN1cHBvcnQsIG9mZnNldFN1cHBvcnQgKTsKCX0pOwoKCXJldHVybiBzdXBw b3J0Owp9KSgpOwoKCgoKdmFyIHJicmFjZSA9IC9eKD86XHsuKlx9fFxbLipcXSkk LywKCXJtdWx0aURhc2ggPSAvKFtBLVpdKS9nOwoKalF1ZXJ5LmV4dGVuZCh7Cglj YWNoZToge30sCgoJLy8gUGxlYXNlIHVzZSB3aXRoIGNhdXRpb24KCXV1aWQ6IDAs CgoJLy8gVW5pcXVlIGZvciBlYWNoIGNvcHkgb2YgalF1ZXJ5IG9uIHRoZSBwYWdl CgkvLyBOb24tZGlnaXRzIHJlbW92ZWQgdG8gbWF0Y2ggcmlubGluZWpRdWVyeQoJ ZXhwYW5kbzogImpRdWVyeSIgKyAoIGpRdWVyeS5mbi5qcXVlcnkgKyBNYXRoLnJh bmRvbSgpICkucmVwbGFjZSggL1xEL2csICIiICksCgoJLy8gVGhlIGZvbGxvd2lu ZyBlbGVtZW50cyB0aHJvdyB1bmNhdGNoYWJsZSBleGNlcHRpb25zIGlmIHlvdQoJ Ly8gYXR0ZW1wdCB0byBhZGQgZXhwYW5kbyBwcm9wZXJ0aWVzIHRvIHRoZW0uCglu b0RhdGE6IHsKCQkiZW1iZWQiOiB0cnVlLAoJCS8vIEJhbiBhbGwgb2JqZWN0cyBl eGNlcHQgZm9yIEZsYXNoICh3aGljaCBoYW5kbGUgZXhwYW5kb3MpCgkJIm9iamVj dCI6ICJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAi LAoJCSJhcHBsZXQiOiB0cnVlCgl9LAoKCWhhc0RhdGE6IGZ1bmN0aW9uKCBlbGVt ICkgewoJCWVsZW0gPSBlbGVtLm5vZGVUeXBlID8galF1ZXJ5LmNhY2hlWyBlbGVt W2pRdWVyeS5leHBhbmRvXSBdIDogZWxlbVsgalF1ZXJ5LmV4cGFuZG8gXTsKCQly ZXR1cm4gISFlbGVtICYmICFpc0VtcHR5RGF0YU9iamVjdCggZWxlbSApOwoJfSwK CglkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSwgcHZ0IC8qIEludGVy bmFsIFVzZSBPbmx5ICovICkgewoJCWlmICggIWpRdWVyeS5hY2NlcHREYXRhKCBl bGVtICkgKSB7CgkJCXJldHVybjsKCQl9CgoJCXZhciBwcml2YXRlQ2FjaGUsIHRo aXNDYWNoZSwgcmV0LAoJCQlpbnRlcm5hbEtleSA9IGpRdWVyeS5leHBhbmRvLAoJ CQlnZXRCeU5hbWUgPSB0eXBlb2YgbmFtZSA9PT0gInN0cmluZyIsCgoJCQkvLyBX ZSBoYXZlIHRvIGhhbmRsZSBET00gbm9kZXMgYW5kIEpTIG9iamVjdHMgZGlmZmVy ZW50bHkgYmVjYXVzZSBJRTYtNwoJCQkvLyBjYW4ndCBHQyBvYmplY3QgcmVmZXJl bmNlcyBwcm9wZXJseSBhY3Jvc3MgdGhlIERPTS1KUyBib3VuZGFyeQoJCQlpc05v ZGUgPSBlbGVtLm5vZGVUeXBlLAoKCQkJLy8gT25seSBET00gbm9kZXMgbmVlZCB0 aGUgZ2xvYmFsIGpRdWVyeSBjYWNoZTsgSlMgb2JqZWN0IGRhdGEgaXMKCQkJLy8g YXR0YWNoZWQgZGlyZWN0bHkgdG8gdGhlIG9iamVjdCBzbyBHQyBjYW4gb2NjdXIg YXV0b21hdGljYWxseQoJCQljYWNoZSA9IGlzTm9kZSA/IGpRdWVyeS5jYWNoZSA6 IGVsZW0sCgoJCQkvLyBPbmx5IGRlZmluaW5nIGFuIElEIGZvciBKUyBvYmplY3Rz IGlmIGl0cyBjYWNoZSBhbHJlYWR5IGV4aXN0cyBhbGxvd3MKCQkJLy8gdGhlIGNv ZGUgdG8gc2hvcnRjdXQgb24gdGhlIHNhbWUgcGF0aCBhcyBhIERPTSBub2RlIHdp dGggbm8gY2FjaGUKCQkJaWQgPSBpc05vZGUgPyBlbGVtWyBpbnRlcm5hbEtleSBd IDogZWxlbVsgaW50ZXJuYWxLZXkgXSAmJiBpbnRlcm5hbEtleSwKCQkJaXNFdmVu dHMgPSBuYW1lID09PSAiZXZlbnRzIjsKCgkJLy8gQXZvaWQgZG9pbmcgYW55IG1v cmUgd29yayB0aGFuIHdlIG5lZWQgdG8gd2hlbiB0cnlpbmcgdG8gZ2V0IGRhdGEg b24gYW4KCQkvLyBvYmplY3QgdGhhdCBoYXMgbm8gZGF0YSBhdCBhbGwKCQlpZiAo ICghaWQgfHwgIWNhY2hlW2lkXSB8fCAoIWlzRXZlbnRzICYmICFwdnQgJiYgIWNh Y2hlW2lkXS5kYXRhKSkgJiYgZ2V0QnlOYW1lICYmIGRhdGEgPT09IHVuZGVmaW5l ZCApIHsKCQkJcmV0dXJuOwoJCX0KCgkJaWYgKCAhaWQgKSB7CgkJCS8vIE9ubHkg RE9NIG5vZGVzIG5lZWQgYSBuZXcgdW5pcXVlIElEIGZvciBlYWNoIGVsZW1lbnQg c2luY2UgdGhlaXIgZGF0YQoJCQkvLyBlbmRzIHVwIGluIHRoZSBnbG9iYWwgY2Fj aGUKCQkJaWYgKCBpc05vZGUgKSB7CgkJCQllbGVtWyBpbnRlcm5hbEtleSBdID0g aWQgPSArK2pRdWVyeS51dWlkOwoJCQl9IGVsc2UgewoJCQkJaWQgPSBpbnRlcm5h bEtleTsKCQkJfQoJCX0KCgkJaWYgKCAhY2FjaGVbIGlkIF0gKSB7CgkJCWNhY2hl WyBpZCBdID0ge307CgoJCQkvLyBBdm9pZHMgZXhwb3NpbmcgalF1ZXJ5IG1ldGFk YXRhIG9uIHBsYWluIEpTIG9iamVjdHMgd2hlbiB0aGUgb2JqZWN0CgkJCS8vIGlz IHNlcmlhbGl6ZWQgdXNpbmcgSlNPTi5zdHJpbmdpZnkKCQkJaWYgKCAhaXNOb2Rl ICkgewoJCQkJY2FjaGVbIGlkIF0udG9KU09OID0galF1ZXJ5Lm5vb3A7CgkJCX0K CQl9CgoJCS8vIEFuIG9iamVjdCBjYW4gYmUgcGFzc2VkIHRvIGpRdWVyeS5kYXRh IGluc3RlYWQgb2YgYSBrZXkvdmFsdWUgcGFpcjsgdGhpcyBnZXRzCgkJLy8gc2hh bGxvdyBjb3BpZWQgb3ZlciBvbnRvIHRoZSBleGlzdGluZyBjYWNoZQoJCWlmICgg dHlwZW9mIG5hbWUgPT09ICJvYmplY3QiIHx8IHR5cGVvZiBuYW1lID09PSAiZnVu Y3Rpb24iICkgewoJCQlpZiAoIHB2dCApIHsKCQkJCWNhY2hlWyBpZCBdID0galF1 ZXJ5LmV4dGVuZCggY2FjaGVbIGlkIF0sIG5hbWUgKTsKCQkJfSBlbHNlIHsKCQkJ CWNhY2hlWyBpZCBdLmRhdGEgPSBqUXVlcnkuZXh0ZW5kKCBjYWNoZVsgaWQgXS5k YXRhLCBuYW1lICk7CgkJCX0KCQl9CgoJCXByaXZhdGVDYWNoZSA9IHRoaXNDYWNo ZSA9IGNhY2hlWyBpZCBdOwoKCQkvLyBqUXVlcnkgZGF0YSgpIGlzIHN0b3JlZCBp biBhIHNlcGFyYXRlIG9iamVjdCBpbnNpZGUgdGhlIG9iamVjdCdzIGludGVybmFs IGRhdGEKCQkvLyBjYWNoZSBpbiBvcmRlciB0byBhdm9pZCBrZXkgY29sbGlzaW9u cyBiZXR3ZWVuIGludGVybmFsIGRhdGEgYW5kIHVzZXItZGVmaW5lZAoJCS8vIGRh dGEuCgkJaWYgKCAhcHZ0ICkgewoJCQlpZiAoICF0aGlzQ2FjaGUuZGF0YSApIHsK CQkJCXRoaXNDYWNoZS5kYXRhID0ge307CgkJCX0KCgkJCXRoaXNDYWNoZSA9IHRo aXNDYWNoZS5kYXRhOwoJCX0KCgkJaWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7 CgkJCXRoaXNDYWNoZVsgalF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApIF0gPSBkYXRh OwoJCX0KCgkJLy8gVXNlcnMgc2hvdWxkIG5vdCBhdHRlbXB0IHRvIGluc3BlY3Qg dGhlIGludGVybmFsIGV2ZW50cyBvYmplY3QgdXNpbmcgalF1ZXJ5LmRhdGEsCgkJ Ly8gaXQgaXMgdW5kb2N1bWVudGVkIGFuZCBzdWJqZWN0IHRvIGNoYW5nZS4gQnV0 IGRvZXMgYW55b25lIGxpc3Rlbj8gTm8uCgkJaWYgKCBpc0V2ZW50cyAmJiAhdGhp c0NhY2hlWyBuYW1lIF0gKSB7CgkJCXJldHVybiBwcml2YXRlQ2FjaGUuZXZlbnRz OwoJCX0KCgkJLy8gQ2hlY2sgZm9yIGJvdGggY29udmVydGVkLXRvLWNhbWVsIGFu ZCBub24tY29udmVydGVkIGRhdGEgcHJvcGVydHkgbmFtZXMKCQkvLyBJZiBhIGRh dGEgcHJvcGVydHkgd2FzIHNwZWNpZmllZAoJCWlmICggZ2V0QnlOYW1lICkgewoK CQkJLy8gRmlyc3QgVHJ5IHRvIGZpbmQgYXMtaXMgcHJvcGVydHkgZGF0YQoJCQly ZXQgPSB0aGlzQ2FjaGVbIG5hbWUgXTsKCgkJCS8vIFRlc3QgZm9yIG51bGx8dW5k ZWZpbmVkIHByb3BlcnR5IGRhdGEKCQkJaWYgKCByZXQgPT0gbnVsbCApIHsKCgkJ CQkvLyBUcnkgdG8gZmluZCB0aGUgY2FtZWxDYXNlZCBwcm9wZXJ0eQoJCQkJcmV0 ID0gdGhpc0NhY2hlWyBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICkgXTsKCQkJfQoJ CX0gZWxzZSB7CgkJCXJldCA9IHRoaXNDYWNoZTsKCQl9CgoJCXJldHVybiByZXQ7 Cgl9LAoKCXJlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBwdnQgLyog SW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7CgkJaWYgKCAhalF1ZXJ5LmFjY2VwdERh dGEoIGVsZW0gKSApIHsKCQkJcmV0dXJuOwoJCX0KCgkJdmFyIHRoaXNDYWNoZSwg aSwgbCwKCgkJCS8vIFJlZmVyZW5jZSB0byBpbnRlcm5hbCBkYXRhIGNhY2hlIGtl eQoJCQlpbnRlcm5hbEtleSA9IGpRdWVyeS5leHBhbmRvLAoKCQkJaXNOb2RlID0g ZWxlbS5ub2RlVHlwZSwKCgkJCS8vIFNlZSBqUXVlcnkuZGF0YSBmb3IgbW9yZSBp bmZvcm1hdGlvbgoJCQljYWNoZSA9IGlzTm9kZSA/IGpRdWVyeS5jYWNoZSA6IGVs ZW0sCgoJCQkvLyBTZWUgalF1ZXJ5LmRhdGEgZm9yIG1vcmUgaW5mb3JtYXRpb24K CQkJaWQgPSBpc05vZGUgPyBlbGVtWyBpbnRlcm5hbEtleSBdIDogaW50ZXJuYWxL ZXk7CgoJCS8vIElmIHRoZXJlIGlzIGFscmVhZHkgbm8gY2FjaGUgZW50cnkgZm9y IHRoaXMgb2JqZWN0LCB0aGVyZSBpcyBubwoJCS8vIHB1cnBvc2UgaW4gY29udGlu dWluZwoJCWlmICggIWNhY2hlWyBpZCBdICkgewoJCQlyZXR1cm47CgkJfQoKCQlp ZiAoIG5hbWUgKSB7CgoJCQl0aGlzQ2FjaGUgPSBwdnQgPyBjYWNoZVsgaWQgXSA6 IGNhY2hlWyBpZCBdLmRhdGE7CgoJCQlpZiAoIHRoaXNDYWNoZSApIHsKCgkJCQkv LyBTdXBwb3J0IGFycmF5IG9yIHNwYWNlIHNlcGFyYXRlZCBzdHJpbmcgbmFtZXMg Zm9yIGRhdGEga2V5cwoJCQkJaWYgKCAhalF1ZXJ5LmlzQXJyYXkoIG5hbWUgKSAp IHsKCgkJCQkJLy8gdHJ5IHRoZSBzdHJpbmcgYXMgYSBrZXkgYmVmb3JlIGFueSBt YW5pcHVsYXRpb24KCQkJCQlpZiAoIG5hbWUgaW4gdGhpc0NhY2hlICkgewoJCQkJ CQluYW1lID0gWyBuYW1lIF07CgkJCQkJfSBlbHNlIHsKCgkJCQkJCS8vIHNwbGl0 IHRoZSBjYW1lbCBjYXNlZCB2ZXJzaW9uIGJ5IHNwYWNlcyB1bmxlc3MgYSBrZXkg d2l0aCB0aGUgc3BhY2VzIGV4aXN0cwoJCQkJCQluYW1lID0galF1ZXJ5LmNhbWVs Q2FzZSggbmFtZSApOwoJCQkJCQlpZiAoIG5hbWUgaW4gdGhpc0NhY2hlICkgewoJ CQkJCQkJbmFtZSA9IFsgbmFtZSBdOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJbmFt ZSA9IG5hbWUuc3BsaXQoICIgIiApOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoKCQkJ CWZvciAoIGkgPSAwLCBsID0gbmFtZS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CgkJ CQkJZGVsZXRlIHRoaXNDYWNoZVsgbmFtZVtpXSBdOwoJCQkJfQoKCQkJCS8vIElm IHRoZXJlIGlzIG5vIGRhdGEgbGVmdCBpbiB0aGUgY2FjaGUsIHdlIHdhbnQgdG8g Y29udGludWUKCQkJCS8vIGFuZCBsZXQgdGhlIGNhY2hlIG9iamVjdCBpdHNlbGYg Z2V0IGRlc3Ryb3llZAoJCQkJaWYgKCAhKCBwdnQgPyBpc0VtcHR5RGF0YU9iamVj dCA6IGpRdWVyeS5pc0VtcHR5T2JqZWN0ICkoIHRoaXNDYWNoZSApICkgewoJCQkJ CXJldHVybjsKCQkJCX0KCQkJfQoJCX0KCgkJLy8gU2VlIGpRdWVyeS5kYXRhIGZv ciBtb3JlIGluZm9ybWF0aW9uCgkJaWYgKCAhcHZ0ICkgewoJCQlkZWxldGUgY2Fj aGVbIGlkIF0uZGF0YTsKCgkJCS8vIERvbid0IGRlc3Ryb3kgdGhlIHBhcmVudCBj YWNoZSB1bmxlc3MgdGhlIGludGVybmFsIGRhdGEgb2JqZWN0CgkJCS8vIGhhZCBi ZWVuIHRoZSBvbmx5IHRoaW5nIGxlZnQgaW4gaXQKCQkJaWYgKCAhaXNFbXB0eURh dGFPYmplY3QoY2FjaGVbIGlkIF0pICkgewoJCQkJcmV0dXJuOwoJCQl9CgkJfQoK CQkvLyBCcm93c2VycyB0aGF0IGZhaWwgZXhwYW5kbyBkZWxldGlvbiBhbHNvIHJl ZnVzZSB0byBkZWxldGUgZXhwYW5kb3Mgb24KCQkvLyB0aGUgd2luZG93LCBidXQg aXQgd2lsbCBhbGxvdyBpdCBvbiBhbGwgb3RoZXIgSlMgb2JqZWN0czsgb3RoZXIg YnJvd3NlcnMKCQkvLyBkb24ndCBjYXJlCgkJLy8gRW5zdXJlIHRoYXQgYGNhY2hl YCBpcyBub3QgYSB3aW5kb3cgb2JqZWN0ICMxMDA4MAoJCWlmICggalF1ZXJ5LnN1 cHBvcnQuZGVsZXRlRXhwYW5kbyB8fCAhY2FjaGUuc2V0SW50ZXJ2YWwgKSB7CgkJ CWRlbGV0ZSBjYWNoZVsgaWQgXTsKCQl9IGVsc2UgewoJCQljYWNoZVsgaWQgXSA9 IG51bGw7CgkJfQoKCQkvLyBXZSBkZXN0cm95ZWQgdGhlIGNhY2hlIGFuZCBuZWVk IHRvIGVsaW1pbmF0ZSB0aGUgZXhwYW5kbyBvbiB0aGUgbm9kZSB0byBhdm9pZAoJ CS8vIGZhbHNlIGxvb2t1cHMgaW4gdGhlIGNhY2hlIGZvciBlbnRyaWVzIHRoYXQg bm8gbG9uZ2VyIGV4aXN0CgkJaWYgKCBpc05vZGUgKSB7CgkJCS8vIElFIGRvZXMg bm90IGFsbG93IHVzIHRvIGRlbGV0ZSBleHBhbmRvIHByb3BlcnRpZXMgZnJvbSBu b2RlcywKCQkJLy8gbm9yIGRvZXMgaXQgaGF2ZSBhIHJlbW92ZUF0dHJpYnV0ZSBm dW5jdGlvbiBvbiBEb2N1bWVudCBub2RlczsKCQkJLy8gd2UgbXVzdCBoYW5kbGUg YWxsIG9mIHRoZXNlIGNhc2VzCgkJCWlmICggalF1ZXJ5LnN1cHBvcnQuZGVsZXRl RXhwYW5kbyApIHsKCQkJCWRlbGV0ZSBlbGVtWyBpbnRlcm5hbEtleSBdOwoJCQl9 IGVsc2UgaWYgKCBlbGVtLnJlbW92ZUF0dHJpYnV0ZSApIHsKCQkJCWVsZW0ucmVt b3ZlQXR0cmlidXRlKCBpbnRlcm5hbEtleSApOwoJCQl9IGVsc2UgewoJCQkJZWxl bVsgaW50ZXJuYWxLZXkgXSA9IG51bGw7CgkJCX0KCQl9Cgl9LAoKCS8vIEZvciBp bnRlcm5hbCB1c2Ugb25seS4KCV9kYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwg ZGF0YSApIHsKCQlyZXR1cm4galF1ZXJ5LmRhdGEoIGVsZW0sIG5hbWUsIGRhdGEs IHRydWUgKTsKCX0sCgoJLy8gQSBtZXRob2QgZm9yIGRldGVybWluaW5nIGlmIGEg RE9NIG5vZGUgY2FuIGhhbmRsZSB0aGUgZGF0YSBleHBhbmRvCglhY2NlcHREYXRh OiBmdW5jdGlvbiggZWxlbSApIHsKCQlpZiAoIGVsZW0ubm9kZU5hbWUgKSB7CgkJ CXZhciBtYXRjaCA9IGpRdWVyeS5ub0RhdGFbIGVsZW0ubm9kZU5hbWUudG9Mb3dl ckNhc2UoKSBdOwoKCQkJaWYgKCBtYXRjaCApIHsKCQkJCXJldHVybiAhKG1hdGNo ID09PSB0cnVlIHx8IGVsZW0uZ2V0QXR0cmlidXRlKCJjbGFzc2lkIikgIT09IG1h dGNoKTsKCQkJfQoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9Cn0pOwoKalF1ZXJ5LmZu LmV4dGVuZCh7CglkYXRhOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHsKCQl2YXIg cGFydHMsIHBhcnQsIGF0dHIsIG5hbWUsIGwsCgkJCWVsZW0gPSB0aGlzWzBdLAoJ CQlpID0gMCwKCQkJZGF0YSA9IG51bGw7CgoJCS8vIEdldHMgYWxsIHZhbHVlcwoJ CWlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7CgkJCWlmICggdGhpcy5sZW5ndGgg KSB7CgkJCQlkYXRhID0galF1ZXJ5LmRhdGEoIGVsZW0gKTsKCgkJCQlpZiAoIGVs ZW0ubm9kZVR5cGUgPT09IDEgJiYgIWpRdWVyeS5fZGF0YSggZWxlbSwgInBhcnNl ZEF0dHJzIiApICkgewoJCQkJCWF0dHIgPSBlbGVtLmF0dHJpYnV0ZXM7CgkJCQkJ Zm9yICggbCA9IGF0dHIubGVuZ3RoOyBpIDwgbDsgaSsrICkgewoJCQkJCQluYW1l ID0gYXR0cltpXS5uYW1lOwoKCQkJCQkJaWYgKCBuYW1lLmluZGV4T2YoICJkYXRh LSIgKSA9PT0gMCApIHsKCQkJCQkJCW5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBu YW1lLnN1YnN0cmluZyg1KSApOwoKCQkJCQkJCWRhdGFBdHRyKCBlbGVtLCBuYW1l LCBkYXRhWyBuYW1lIF0gKTsKCQkJCQkJfQoJCQkJCX0KCQkJCQlqUXVlcnkuX2Rh dGEoIGVsZW0sICJwYXJzZWRBdHRycyIsIHRydWUgKTsKCQkJCX0KCQkJfQoKCQkJ cmV0dXJuIGRhdGE7CgkJfQoKCQkvLyBTZXRzIG11bHRpcGxlIHZhbHVlcwoJCWlm ICggdHlwZW9mIGtleSA9PT0gIm9iamVjdCIgKSB7CgkJCXJldHVybiB0aGlzLmVh Y2goZnVuY3Rpb24oKSB7CgkJCQlqUXVlcnkuZGF0YSggdGhpcywga2V5ICk7CgkJ CX0pOwoJCX0KCgkJcGFydHMgPSBrZXkuc3BsaXQoICIuIiwgMiApOwoJCXBhcnRz WzFdID0gcGFydHNbMV0gPyAiLiIgKyBwYXJ0c1sxXSA6ICIiOwoJCXBhcnQgPSBw YXJ0c1sxXSArICIhIjsKCgkJcmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGZ1 bmN0aW9uKCB2YWx1ZSApIHsKCgkJCWlmICggdmFsdWUgPT09IHVuZGVmaW5lZCAp IHsKCQkJCWRhdGEgPSB0aGlzLnRyaWdnZXJIYW5kbGVyKCAiZ2V0RGF0YSIgKyBw YXJ0LCBbIHBhcnRzWzBdIF0gKTsKCgkJCQkvLyBUcnkgdG8gZmV0Y2ggYW55IGlu dGVybmFsbHkgc3RvcmVkIGRhdGEgZmlyc3QKCQkJCWlmICggZGF0YSA9PT0gdW5k ZWZpbmVkICYmIGVsZW0gKSB7CgkJCQkJZGF0YSA9IGpRdWVyeS5kYXRhKCBlbGVt LCBrZXkgKTsKCQkJCQlkYXRhID0gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSAp OwoJCQkJfQoKCQkJCXJldHVybiBkYXRhID09PSB1bmRlZmluZWQgJiYgcGFydHNb MV0gPwoJCQkJCXRoaXMuZGF0YSggcGFydHNbMF0gKSA6CgkJCQkJZGF0YTsKCQkJ fQoKCQkJcGFydHNbMV0gPSB2YWx1ZTsKCQkJdGhpcy5lYWNoKGZ1bmN0aW9uKCkg ewoJCQkJdmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKTsKCgkJCQlzZWxmLnRyaWdn ZXJIYW5kbGVyKCAic2V0RGF0YSIgKyBwYXJ0LCBwYXJ0cyApOwoJCQkJalF1ZXJ5 LmRhdGEoIHRoaXMsIGtleSwgdmFsdWUgKTsKCQkJCXNlbGYudHJpZ2dlckhhbmRs ZXIoICJjaGFuZ2VEYXRhIiArIHBhcnQsIHBhcnRzICk7CgkJCX0pOwoJCX0sIG51 bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSwgbnVsbCwgZmFsc2UgKTsK CX0sCgoJcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApIHsKCQlyZXR1cm4gdGhp cy5lYWNoKGZ1bmN0aW9uKCkgewoJCQlqUXVlcnkucmVtb3ZlRGF0YSggdGhpcywg a2V5ICk7CgkJfSk7Cgl9Cn0pOwoKZnVuY3Rpb24gZGF0YUF0dHIoIGVsZW0sIGtl eSwgZGF0YSApIHsKCS8vIElmIG5vdGhpbmcgd2FzIGZvdW5kIGludGVybmFsbHks IHRyeSB0byBmZXRjaCBhbnkKCS8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0q IGF0dHJpYnV0ZQoJaWYgKCBkYXRhID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2Rl VHlwZSA9PT0gMSApIHsKCgkJdmFyIG5hbWUgPSAiZGF0YS0iICsga2V5LnJlcGxh Y2UoIHJtdWx0aURhc2gsICItJDEiICkudG9Mb3dlckNhc2UoKTsKCgkJZGF0YSA9 IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7CgoJCWlmICggdHlwZW9mIGRhdGEg PT09ICJzdHJpbmciICkgewoJCQl0cnkgewoJCQkJZGF0YSA9IGRhdGEgPT09ICJ0 cnVlIiA/IHRydWUgOgoJCQkJZGF0YSA9PT0gImZhbHNlIiA/IGZhbHNlIDoKCQkJ CWRhdGEgPT09ICJudWxsIiA/IG51bGwgOgoJCQkJalF1ZXJ5LmlzTnVtZXJpYygg ZGF0YSApID8gK2RhdGEgOgoJCQkJCXJicmFjZS50ZXN0KCBkYXRhICkgPyBqUXVl cnkucGFyc2VKU09OKCBkYXRhICkgOgoJCQkJCWRhdGE7CgkJCX0gY2F0Y2goIGUg KSB7fQoKCQkJLy8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24n dCBjaGFuZ2VkIGxhdGVyCgkJCWpRdWVyeS5kYXRhKCBlbGVtLCBrZXksIGRhdGEg KTsKCgkJfSBlbHNlIHsKCQkJZGF0YSA9IHVuZGVmaW5lZDsKCQl9Cgl9CgoJcmV0 dXJuIGRhdGE7Cn0KCi8vIGNoZWNrcyBhIGNhY2hlIG9iamVjdCBmb3IgZW1wdGlu ZXNzCmZ1bmN0aW9uIGlzRW1wdHlEYXRhT2JqZWN0KCBvYmogKSB7Cglmb3IgKCB2 YXIgbmFtZSBpbiBvYmogKSB7CgoJCS8vIGlmIHRoZSBwdWJsaWMgZGF0YSBvYmpl Y3QgaXMgZW1wdHksIHRoZSBwcml2YXRlIGlzIHN0aWxsIGVtcHR5CgkJaWYgKCBu YW1lID09PSAiZGF0YSIgJiYgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIG9ialtuYW1l XSApICkgewoJCQljb250aW51ZTsKCQl9CgkJaWYgKCBuYW1lICE9PSAidG9KU09O IiApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCglyZXR1cm4gdHJ1ZTsKfQoK CgoKZnVuY3Rpb24gaGFuZGxlUXVldWVNYXJrRGVmZXIoIGVsZW0sIHR5cGUsIHNy YyApIHsKCXZhciBkZWZlckRhdGFLZXkgPSB0eXBlICsgImRlZmVyIiwKCQlxdWV1 ZURhdGFLZXkgPSB0eXBlICsgInF1ZXVlIiwKCQltYXJrRGF0YUtleSA9IHR5cGUg KyAibWFyayIsCgkJZGVmZXIgPSBqUXVlcnkuX2RhdGEoIGVsZW0sIGRlZmVyRGF0 YUtleSApOwoJaWYgKCBkZWZlciAmJgoJCSggc3JjID09PSAicXVldWUiIHx8ICFq UXVlcnkuX2RhdGEoZWxlbSwgcXVldWVEYXRhS2V5KSApICYmCgkJKCBzcmMgPT09 ICJtYXJrIiB8fCAhalF1ZXJ5Ll9kYXRhKGVsZW0sIG1hcmtEYXRhS2V5KSApICkg ewoJCS8vIEdpdmUgcm9vbSBmb3IgaGFyZC1jb2RlZCBjYWxsYmFja3MgdG8gZmly ZSBmaXJzdAoJCS8vIGFuZCBldmVudHVhbGx5IG1hcmsvcXVldWUgc29tZXRoaW5n IGVsc2Ugb24gdGhlIGVsZW1lbnQKCQlzZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsK CQkJaWYgKCAhalF1ZXJ5Ll9kYXRhKCBlbGVtLCBxdWV1ZURhdGFLZXkgKSAmJgoJ CQkJIWpRdWVyeS5fZGF0YSggZWxlbSwgbWFya0RhdGFLZXkgKSApIHsKCQkJCWpR dWVyeS5yZW1vdmVEYXRhKCBlbGVtLCBkZWZlckRhdGFLZXksIHRydWUgKTsKCQkJ CWRlZmVyLmZpcmUoKTsKCQkJfQoJCX0sIDAgKTsKCX0KfQoKalF1ZXJ5LmV4dGVu ZCh7CgoJX21hcms6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkgewoJCWlmICggZWxl bSApIHsKCQkJdHlwZSA9ICggdHlwZSB8fCAiZngiICkgKyAibWFyayI7CgkJCWpR dWVyeS5fZGF0YSggZWxlbSwgdHlwZSwgKGpRdWVyeS5fZGF0YSggZWxlbSwgdHlw ZSApIHx8IDApICsgMSApOwoJCX0KCX0sCgoJX3VubWFyazogZnVuY3Rpb24oIGZv cmNlLCBlbGVtLCB0eXBlICkgewoJCWlmICggZm9yY2UgIT09IHRydWUgKSB7CgkJ CXR5cGUgPSBlbGVtOwoJCQllbGVtID0gZm9yY2U7CgkJCWZvcmNlID0gZmFsc2U7 CgkJfQoJCWlmICggZWxlbSApIHsKCQkJdHlwZSA9IHR5cGUgfHwgImZ4IjsKCQkJ dmFyIGtleSA9IHR5cGUgKyAibWFyayIsCgkJCQljb3VudCA9IGZvcmNlID8gMCA6 ICggKGpRdWVyeS5fZGF0YSggZWxlbSwga2V5ICkgfHwgMSkgLSAxICk7CgkJCWlm ICggY291bnQgKSB7CgkJCQlqUXVlcnkuX2RhdGEoIGVsZW0sIGtleSwgY291bnQg KTsKCQkJfSBlbHNlIHsKCQkJCWpRdWVyeS5yZW1vdmVEYXRhKCBlbGVtLCBrZXks IHRydWUgKTsKCQkJCWhhbmRsZVF1ZXVlTWFya0RlZmVyKCBlbGVtLCB0eXBlLCAi bWFyayIgKTsKCQkJfQoJCX0KCX0sCgoJcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0 eXBlLCBkYXRhICkgewoJCXZhciBxOwoJCWlmICggZWxlbSApIHsKCQkJdHlwZSA9 ICggdHlwZSB8fCAiZngiICkgKyAicXVldWUiOwoJCQlxID0galF1ZXJ5Ll9kYXRh KCBlbGVtLCB0eXBlICk7CgoJCQkvLyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRp bmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9va3VwCgkJCWlmICgg ZGF0YSApIHsKCQkJCWlmICggIXEgfHwgalF1ZXJ5LmlzQXJyYXkoZGF0YSkgKSB7 CgkJCQkJcSA9IGpRdWVyeS5fZGF0YSggZWxlbSwgdHlwZSwgalF1ZXJ5Lm1ha2VB cnJheShkYXRhKSApOwoJCQkJfSBlbHNlIHsKCQkJCQlxLnB1c2goIGRhdGEgKTsK CQkJCX0KCQkJfQoJCQlyZXR1cm4gcSB8fCBbXTsKCQl9Cgl9LAoKCWRlcXVldWU6 IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkgewoJCXR5cGUgPSB0eXBlIHx8ICJmeCI7 CgoJCXZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggZWxlbSwgdHlwZSApLAoJCQlm biA9IHF1ZXVlLnNoaWZ0KCksCgkJCWhvb2tzID0ge307CgoJCS8vIElmIHRoZSBm eCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92ZSB0aGUgcHJvZ3Jlc3Mg c2VudGluZWwKCQlpZiAoIGZuID09PSAiaW5wcm9ncmVzcyIgKSB7CgkJCWZuID0g cXVldWUuc2hpZnQoKTsKCQl9CgoJCWlmICggZm4gKSB7CgkJCS8vIEFkZCBhIHBy b2dyZXNzIHNlbnRpbmVsIHRvIHByZXZlbnQgdGhlIGZ4IHF1ZXVlIGZyb20gYmVp bmcKCQkJLy8gYXV0b21hdGljYWxseSBkZXF1ZXVlZAoJCQlpZiAoIHR5cGUgPT09 ICJmeCIgKSB7CgkJCQlxdWV1ZS51bnNoaWZ0KCAiaW5wcm9ncmVzcyIgKTsKCQkJ fQoKCQkJalF1ZXJ5Ll9kYXRhKCBlbGVtLCB0eXBlICsgIi5ydW4iLCBob29rcyAp OwoJCQlmbi5jYWxsKCBlbGVtLCBmdW5jdGlvbigpIHsKCQkJCWpRdWVyeS5kZXF1 ZXVlKCBlbGVtLCB0eXBlICk7CgkJCX0sIGhvb2tzICk7CgkJfQoKCQlpZiAoICFx dWV1ZS5sZW5ndGggKSB7CgkJCWpRdWVyeS5yZW1vdmVEYXRhKCBlbGVtLCB0eXBl ICsgInF1ZXVlICIgKyB0eXBlICsgIi5ydW4iLCB0cnVlICk7CgkJCWhhbmRsZVF1 ZXVlTWFya0RlZmVyKCBlbGVtLCB0eXBlLCAicXVldWUiICk7CgkJfQoJfQp9KTsK CmpRdWVyeS5mbi5leHRlbmQoewoJcXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRh ICkgewoJCXZhciBzZXR0ZXIgPSAyOwoKCQlpZiAoIHR5cGVvZiB0eXBlICE9PSAi c3RyaW5nIiApIHsKCQkJZGF0YSA9IHR5cGU7CgkJCXR5cGUgPSAiZngiOwoJCQlz ZXR0ZXItLTsKCQl9CgoJCWlmICggYXJndW1lbnRzLmxlbmd0aCA8IHNldHRlciAp IHsKCQkJcmV0dXJuIGpRdWVyeS5xdWV1ZSggdGhpc1swXSwgdHlwZSApOwoJCX0K CgkJcmV0dXJuIGRhdGEgPT09IHVuZGVmaW5lZCA/CgkJCXRoaXMgOgoJCQl0aGlz LmVhY2goZnVuY3Rpb24oKSB7CgkJCQl2YXIgcXVldWUgPSBqUXVlcnkucXVldWUo IHRoaXMsIHR5cGUsIGRhdGEgKTsKCgkJCQlpZiAoIHR5cGUgPT09ICJmeCIgJiYg cXVldWVbMF0gIT09ICJpbnByb2dyZXNzIiApIHsKCQkJCQlqUXVlcnkuZGVxdWV1 ZSggdGhpcywgdHlwZSApOwoJCQkJfQoJCQl9KTsKCX0sCglkZXF1ZXVlOiBmdW5j dGlvbiggdHlwZSApIHsKCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJ CQlqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOwoJCX0pOwoJfSwKCS8vIEJh c2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVy bWlzc2lvbi4KCS8vIGh0dHA6Ly9ibGluZHNpZ25hbHMuY29tL2luZGV4LnBocC8y MDA5LzA3L2pxdWVyeS1kZWxheS8KCWRlbGF5OiBmdW5jdGlvbiggdGltZSwgdHlw ZSApIHsKCQl0aW1lID0galF1ZXJ5LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sgdGlt ZSBdIHx8IHRpbWUgOiB0aW1lOwoJCXR5cGUgPSB0eXBlIHx8ICJmeCI7CgoJCXJl dHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7 CgkJCXZhciB0aW1lb3V0ID0gc2V0VGltZW91dCggbmV4dCwgdGltZSApOwoJCQlo b29rcy5zdG9wID0gZnVuY3Rpb24oKSB7CgkJCQljbGVhclRpbWVvdXQoIHRpbWVv dXQgKTsKCQkJfTsKCQl9KTsKCX0sCgljbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlw ZSApIHsKCQlyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCAiZngiLCBbXSApOwoJ fSwKCS8vIEdldCBhIHByb21pc2UgcmVzb2x2ZWQgd2hlbiBxdWV1ZXMgb2YgYSBj ZXJ0YWluIHR5cGUKCS8vIGFyZSBlbXB0aWVkIChmeCBpcyB0aGUgdHlwZSBieSBk ZWZhdWx0KQoJcHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iamVjdCApIHsKCQlp ZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKCQkJb2JqZWN0ID0gdHlw ZTsKCQkJdHlwZSA9IHVuZGVmaW5lZDsKCQl9CgkJdHlwZSA9IHR5cGUgfHwgImZ4 IjsKCQl2YXIgZGVmZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSwKCQkJZWxlbWVudHMg PSB0aGlzLAoJCQlpID0gZWxlbWVudHMubGVuZ3RoLAoJCQljb3VudCA9IDEsCgkJ CWRlZmVyRGF0YUtleSA9IHR5cGUgKyAiZGVmZXIiLAoJCQlxdWV1ZURhdGFLZXkg PSB0eXBlICsgInF1ZXVlIiwKCQkJbWFya0RhdGFLZXkgPSB0eXBlICsgIm1hcmsi LAoJCQl0bXA7CgkJZnVuY3Rpb24gcmVzb2x2ZSgpIHsKCQkJaWYgKCAhKCAtLWNv dW50ICkgKSB7CgkJCQlkZWZlci5yZXNvbHZlV2l0aCggZWxlbWVudHMsIFsgZWxl bWVudHMgXSApOwoJCQl9CgkJfQoJCXdoaWxlKCBpLS0gKSB7CgkJCWlmICgoIHRt cCA9IGpRdWVyeS5kYXRhKCBlbGVtZW50c1sgaSBdLCBkZWZlckRhdGFLZXksIHVu ZGVmaW5lZCwgdHJ1ZSApIHx8CgkJCQkJKCBqUXVlcnkuZGF0YSggZWxlbWVudHNb IGkgXSwgcXVldWVEYXRhS2V5LCB1bmRlZmluZWQsIHRydWUgKSB8fAoJCQkJCQlq UXVlcnkuZGF0YSggZWxlbWVudHNbIGkgXSwgbWFya0RhdGFLZXksIHVuZGVmaW5l ZCwgdHJ1ZSApICkgJiYKCQkJCQlqUXVlcnkuZGF0YSggZWxlbWVudHNbIGkgXSwg ZGVmZXJEYXRhS2V5LCBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICks IHRydWUgKSApKSB7CgkJCQljb3VudCsrOwoJCQkJdG1wLmFkZCggcmVzb2x2ZSAp OwoJCQl9CgkJfQoJCXJlc29sdmUoKTsKCQlyZXR1cm4gZGVmZXIucHJvbWlzZSgg b2JqZWN0ICk7Cgl9Cn0pOwoKCgoKdmFyIHJjbGFzcyA9IC9bXG5cdFxyXS9nLAoJ cnNwYWNlID0gL1xzKy8sCglycmV0dXJuID0gL1xyL2csCglydHlwZSA9IC9eKD86 YnV0dG9ufGlucHV0KSQvaSwKCXJmb2N1c2FibGUgPSAvXig/OmJ1dHRvbnxpbnB1 dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKSQvaSwKCXJjbGlja2FibGUgPSAvXmEo PzpyZWEpPyQvaSwKCXJib29sZWFuID0gL14oPzphdXRvZm9jdXN8YXV0b3BsYXl8 YXN5bmN8Y2hlY2tlZHxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58bG9v cHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZHxzZWxlY3Rl ZCkkL2ksCglnZXRTZXRBdHRyaWJ1dGUgPSBqUXVlcnkuc3VwcG9ydC5nZXRTZXRB dHRyaWJ1dGUsCglub2RlSG9vaywgYm9vbEhvb2ssIGZpeFNwZWNpZmllZDsKCmpR dWVyeS5mbi5leHRlbmQoewoJYXR0cjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkg ewoJCXJldHVybiBqUXVlcnkuYWNjZXNzKCB0aGlzLCBqUXVlcnkuYXR0ciwgbmFt ZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7Cgl9LAoKCXJlbW92ZUF0 dHI6IGZ1bmN0aW9uKCBuYW1lICkgewoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rp b24oKSB7CgkJCWpRdWVyeS5yZW1vdmVBdHRyKCB0aGlzLCBuYW1lICk7CgkJfSk7 Cgl9LAoKCXByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKCQlyZXR1cm4g alF1ZXJ5LmFjY2VzcyggdGhpcywgalF1ZXJ5LnByb3AsIG5hbWUsIHZhbHVlLCBh cmd1bWVudHMubGVuZ3RoID4gMSApOwoJfSwKCglyZW1vdmVQcm9wOiBmdW5jdGlv biggbmFtZSApIHsKCQluYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBu YW1lOwoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCS8vIHRyeS9j YXRjaCBoYW5kbGVzIGNhc2VzIHdoZXJlIElFIGJhbGtzIChzdWNoIGFzIHJlbW92 aW5nIGEgcHJvcGVydHkgb24gd2luZG93KQoJCQl0cnkgewoJCQkJdGhpc1sgbmFt ZSBdID0gdW5kZWZpbmVkOwoJCQkJZGVsZXRlIHRoaXNbIG5hbWUgXTsKCQkJfSBj YXRjaCggZSApIHt9CgkJfSk7Cgl9LAoKCWFkZENsYXNzOiBmdW5jdGlvbiggdmFs dWUgKSB7CgkJdmFyIGNsYXNzTmFtZXMsIGksIGwsIGVsZW0sCgkJCXNldENsYXNz LCBjLCBjbDsKCgkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsK CQkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaiApIHsKCQkJCWpRdWVyeSgg dGhpcyApLmFkZENsYXNzKCB2YWx1ZS5jYWxsKHRoaXMsIGosIHRoaXMuY2xhc3NO YW1lKSApOwoJCQl9KTsKCQl9CgoJCWlmICggdmFsdWUgJiYgdHlwZW9mIHZhbHVl ID09PSAic3RyaW5nIiApIHsKCQkJY2xhc3NOYW1lcyA9IHZhbHVlLnNwbGl0KCBy c3BhY2UgKTsKCgkJCWZvciAoIGkgPSAwLCBsID0gdGhpcy5sZW5ndGg7IGkgPCBs OyBpKysgKSB7CgkJCQllbGVtID0gdGhpc1sgaSBdOwoKCQkJCWlmICggZWxlbS5u b2RlVHlwZSA9PT0gMSApIHsKCQkJCQlpZiAoICFlbGVtLmNsYXNzTmFtZSAmJiBj bGFzc05hbWVzLmxlbmd0aCA9PT0gMSApIHsKCQkJCQkJZWxlbS5jbGFzc05hbWUg PSB2YWx1ZTsKCgkJCQkJfSBlbHNlIHsKCQkJCQkJc2V0Q2xhc3MgPSAiICIgKyBl bGVtLmNsYXNzTmFtZSArICIgIjsKCgkJCQkJCWZvciAoIGMgPSAwLCBjbCA9IGNs YXNzTmFtZXMubGVuZ3RoOyBjIDwgY2w7IGMrKyApIHsKCQkJCQkJCWlmICggIX5z ZXRDbGFzcy5pbmRleE9mKCAiICIgKyBjbGFzc05hbWVzWyBjIF0gKyAiICIgKSAp IHsKCQkJCQkJCQlzZXRDbGFzcyArPSBjbGFzc05hbWVzWyBjIF0gKyAiICI7CgkJ CQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxlbS5jbGFzc05hbWUgPSBqUXVlcnkudHJp bSggc2V0Q2xhc3MgKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVybiB0 aGlzOwoJfSwKCglyZW1vdmVDbGFzczogZnVuY3Rpb24oIHZhbHVlICkgewoJCXZh ciBjbGFzc05hbWVzLCBpLCBsLCBlbGVtLCBjbGFzc05hbWUsIGMsIGNsOwoKCQlp ZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgewoJCQlyZXR1cm4gdGhp cy5lYWNoKGZ1bmN0aW9uKCBqICkgewoJCQkJalF1ZXJ5KCB0aGlzICkucmVtb3Zl Q2xhc3MoIHZhbHVlLmNhbGwodGhpcywgaiwgdGhpcy5jbGFzc05hbWUpICk7CgkJ CX0pOwoJCX0KCgkJaWYgKCAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAic3Ry aW5nIikgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCApIHsKCQkJY2xhc3NOYW1lcyA9 ICggdmFsdWUgfHwgIiIgKS5zcGxpdCggcnNwYWNlICk7CgoJCQlmb3IgKCBpID0g MCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrICkgewoJCQkJZWxlbSA9IHRo aXNbIGkgXTsKCgkJCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgZWxlbS5j bGFzc05hbWUgKSB7CgkJCQkJaWYgKCB2YWx1ZSApIHsKCQkJCQkJY2xhc3NOYW1l ID0gKCIgIiArIGVsZW0uY2xhc3NOYW1lICsgIiAiKS5yZXBsYWNlKCByY2xhc3Ms ICIgIiApOwoJCQkJCQlmb3IgKCBjID0gMCwgY2wgPSBjbGFzc05hbWVzLmxlbmd0 aDsgYyA8IGNsOyBjKysgKSB7CgkJCQkJCQljbGFzc05hbWUgPSBjbGFzc05hbWUu cmVwbGFjZSgiICIgKyBjbGFzc05hbWVzWyBjIF0gKyAiICIsICIgIik7CgkJCQkJ CX0KCQkJCQkJZWxlbS5jbGFzc05hbWUgPSBqUXVlcnkudHJpbSggY2xhc3NOYW1l ICk7CgoJCQkJCX0gZWxzZSB7CgkJCQkJCWVsZW0uY2xhc3NOYW1lID0gIiI7CgkJ CQkJfQoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gdGhpczsKCX0sCgoJdG9nZ2xl Q2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSwgc3RhdGVWYWwgKSB7CgkJdmFyIHR5cGUg PSB0eXBlb2YgdmFsdWUsCgkJCWlzQm9vbCA9IHR5cGVvZiBzdGF0ZVZhbCA9PT0g ImJvb2xlYW4iOwoKCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkg ewoJCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBpICkgewoJCQkJalF1ZXJ5 KCB0aGlzICkudG9nZ2xlQ2xhc3MoIHZhbHVlLmNhbGwodGhpcywgaSwgdGhpcy5j bGFzc05hbWUsIHN0YXRlVmFsKSwgc3RhdGVWYWwgKTsKCQkJfSk7CgkJfQoKCQly ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQlpZiAoIHR5cGUgPT09ICJz dHJpbmciICkgewoJCQkJLy8gdG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXMK CQkJCXZhciBjbGFzc05hbWUsCgkJCQkJaSA9IDAsCgkJCQkJc2VsZiA9IGpRdWVy eSggdGhpcyApLAoJCQkJCXN0YXRlID0gc3RhdGVWYWwsCgkJCQkJY2xhc3NOYW1l cyA9IHZhbHVlLnNwbGl0KCByc3BhY2UgKTsKCgkJCQl3aGlsZSAoIChjbGFzc05h bWUgPSBjbGFzc05hbWVzWyBpKysgXSkgKSB7CgkJCQkJLy8gY2hlY2sgZWFjaCBj bGFzc05hbWUgZ2l2ZW4sIHNwYWNlIHNlcGVyYXRlZCBsaXN0CgkJCQkJc3RhdGUg PSBpc0Jvb2wgPyBzdGF0ZSA6ICFzZWxmLmhhc0NsYXNzKCBjbGFzc05hbWUgKTsK CQkJCQlzZWxmWyBzdGF0ZSA/ICJhZGRDbGFzcyIgOiAicmVtb3ZlQ2xhc3MiIF0o IGNsYXNzTmFtZSApOwoJCQkJfQoKCQkJfSBlbHNlIGlmICggdHlwZSA9PT0gInVu ZGVmaW5lZCIgfHwgdHlwZSA9PT0gImJvb2xlYW4iICkgewoJCQkJaWYgKCB0aGlz LmNsYXNzTmFtZSApIHsKCQkJCQkvLyBzdG9yZSBjbGFzc05hbWUgaWYgc2V0CgkJ CQkJalF1ZXJ5Ll9kYXRhKCB0aGlzLCAiX19jbGFzc05hbWVfXyIsIHRoaXMuY2xh c3NOYW1lICk7CgkJCQl9CgoJCQkJLy8gdG9nZ2xlIHdob2xlIGNsYXNzTmFtZQoJ CQkJdGhpcy5jbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0g ZmFsc2UgPyAiIiA6IGpRdWVyeS5fZGF0YSggdGhpcywgIl9fY2xhc3NOYW1lX18i ICkgfHwgIiI7CgkJCX0KCQl9KTsKCX0sCgoJaGFzQ2xhc3M6IGZ1bmN0aW9uKCBz ZWxlY3RvciApIHsKCQl2YXIgY2xhc3NOYW1lID0gIiAiICsgc2VsZWN0b3IgKyAi ICIsCgkJCWkgPSAwLAoJCQlsID0gdGhpcy5sZW5ndGg7CgkJZm9yICggOyBpIDwg bDsgaSsrICkgewoJCQlpZiAoIHRoaXNbaV0ubm9kZVR5cGUgPT09IDEgJiYgKCIg IiArIHRoaXNbaV0uY2xhc3NOYW1lICsgIiAiKS5yZXBsYWNlKHJjbGFzcywgIiAi KS5pbmRleE9mKCBjbGFzc05hbWUgKSA+IC0xICkgewoJCQkJcmV0dXJuIHRydWU7 CgkJCX0KCQl9CgoJCXJldHVybiBmYWxzZTsKCX0sCgoJdmFsOiBmdW5jdGlvbigg dmFsdWUgKSB7CgkJdmFyIGhvb2tzLCByZXQsIGlzRnVuY3Rpb24sCgkJCWVsZW0g PSB0aGlzWzBdOwoKCQlpZiAoICFhcmd1bWVudHMubGVuZ3RoICkgewoJCQlpZiAo IGVsZW0gKSB7CgkJCQlob29rcyA9IGpRdWVyeS52YWxIb29rc1sgZWxlbS50eXBl IF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNl KCkgXTsKCgkJCQlpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICYmIChyZXQg PSBob29rcy5nZXQoIGVsZW0sICJ2YWx1ZSIgKSkgIT09IHVuZGVmaW5lZCApIHsK CQkJCQlyZXR1cm4gcmV0OwoJCQkJfQoKCQkJCXJldCA9IGVsZW0udmFsdWU7CgoJ CQkJcmV0dXJuIHR5cGVvZiByZXQgPT09ICJzdHJpbmciID8KCQkJCQkvLyBoYW5k bGUgbW9zdCBjb21tb24gc3RyaW5nIGNhc2VzCgkJCQkJcmV0LnJlcGxhY2UocnJl dHVybiwgIiIpIDoKCQkJCQkvLyBoYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMg bnVsbC91bmRlZiBvciBudW1iZXIKCQkJCQlyZXQgPT0gbnVsbCA/ICIiIDogcmV0 OwoJCQl9CgoJCQlyZXR1cm47CgkJfQoKCQlpc0Z1bmN0aW9uID0galF1ZXJ5Lmlz RnVuY3Rpb24oIHZhbHVlICk7CgoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24o IGkgKSB7CgkJCXZhciBzZWxmID0galF1ZXJ5KHRoaXMpLCB2YWw7CgoJCQlpZiAo IHRoaXMubm9kZVR5cGUgIT09IDEgKSB7CgkJCQlyZXR1cm47CgkJCX0KCgkJCWlm ICggaXNGdW5jdGlvbiApIHsKCQkJCXZhbCA9IHZhbHVlLmNhbGwoIHRoaXMsIGks IHNlbGYudmFsKCkgKTsKCQkJfSBlbHNlIHsKCQkJCXZhbCA9IHZhbHVlOwoJCQl9 CgoJCQkvLyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyAiIjsgY29udmVydCBudW1i ZXJzIHRvIHN0cmluZwoJCQlpZiAoIHZhbCA9PSBudWxsICkgewoJCQkJdmFsID0g IiI7CgkJCX0gZWxzZSBpZiAoIHR5cGVvZiB2YWwgPT09ICJudW1iZXIiICkgewoJ CQkJdmFsICs9ICIiOwoJCQl9IGVsc2UgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFs ICkgKSB7CgkJCQl2YWwgPSBqUXVlcnkubWFwKHZhbCwgZnVuY3Rpb24gKCB2YWx1 ZSApIHsKCQkJCQlyZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICIiIDogdmFsdWUgKyAi IjsKCQkJCX0pOwoJCQl9CgoJCQlob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhp cy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93 ZXJDYXNlKCkgXTsKCgkJCS8vIElmIHNldCByZXR1cm5zIHVuZGVmaW5lZCwgZmFs bCBiYWNrIHRvIG5vcm1hbCBzZXR0aW5nCgkJCWlmICggIWhvb2tzIHx8ICEoInNl dCIgaW4gaG9va3MpIHx8IGhvb2tzLnNldCggdGhpcywgdmFsLCAidmFsdWUiICkg PT09IHVuZGVmaW5lZCApIHsKCQkJCXRoaXMudmFsdWUgPSB2YWw7CgkJCX0KCQl9 KTsKCX0KfSk7CgpqUXVlcnkuZXh0ZW5kKHsKCXZhbEhvb2tzOiB7CgkJb3B0aW9u OiB7CgkJCWdldDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCQkvLyBhdHRyaWJ1dGVz LnZhbHVlIGlzIHVuZGVmaW5lZCBpbiBCbGFja2JlcnJ5IDQuNyBidXQKCQkJCS8v IHVzZXMgLnZhbHVlLiBTZWUgIzY5MzIKCQkJCXZhciB2YWwgPSBlbGVtLmF0dHJp YnV0ZXMudmFsdWU7CgkJCQlyZXR1cm4gIXZhbCB8fCB2YWwuc3BlY2lmaWVkID8g ZWxlbS52YWx1ZSA6IGVsZW0udGV4dDsKCQkJfQoJCX0sCgkJc2VsZWN0OiB7CgkJ CWdldDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCQl2YXIgdmFsdWUsIGksIG1heCwg b3B0aW9uLAoJCQkJCWluZGV4ID0gZWxlbS5zZWxlY3RlZEluZGV4LAoJCQkJCXZh bHVlcyA9IFtdLAoJCQkJCW9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsCgkJCQkJb25l ID0gZWxlbS50eXBlID09PSAic2VsZWN0LW9uZSI7CgoJCQkJLy8gTm90aGluZyB3 YXMgc2VsZWN0ZWQKCQkJCWlmICggaW5kZXggPCAwICkgewoJCQkJCXJldHVybiBu dWxsOwoJCQkJfQoKCQkJCS8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHNlbGVjdGVk IG9wdGlvbnMKCQkJCWkgPSBvbmUgPyBpbmRleCA6IDA7CgkJCQltYXggPSBvbmUg PyBpbmRleCArIDEgOiBvcHRpb25zLmxlbmd0aDsKCQkJCWZvciAoIDsgaSA8IG1h eDsgaSsrICkgewoJCQkJCW9wdGlvbiA9IG9wdGlvbnNbIGkgXTsKCgkJCQkJLy8g RG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBk aXNhYmxlZCBvcHRncm91cAoJCQkJCWlmICggb3B0aW9uLnNlbGVjdGVkICYmIChq UXVlcnkuc3VwcG9ydC5vcHREaXNhYmxlZCA/ICFvcHRpb24uZGlzYWJsZWQgOiBv cHRpb24uZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpID09PSBudWxsKSAmJgoJCQkJ CQkJKCFvcHRpb24ucGFyZW50Tm9kZS5kaXNhYmxlZCB8fCAhalF1ZXJ5Lm5vZGVO YW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgIm9wdGdyb3VwIiApKSApIHsKCgkJCQkJ CS8vIEdldCB0aGUgc3BlY2lmaWMgdmFsdWUgZm9yIHRoZSBvcHRpb24KCQkJCQkJ dmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZhbCgpOwoKCQkJCQkJLy8gV2UgZG9u J3QgbmVlZCBhbiBhcnJheSBmb3Igb25lIHNlbGVjdHMKCQkJCQkJaWYgKCBvbmUg KSB7CgkJCQkJCQlyZXR1cm4gdmFsdWU7CgkJCQkJCX0KCgkJCQkJCS8vIE11bHRp LVNlbGVjdHMgcmV0dXJuIGFuIGFycmF5CgkJCQkJCXZhbHVlcy5wdXNoKCB2YWx1 ZSApOwoJCQkJCX0KCQkJCX0KCgkJCQkvLyBGaXhlcyBCdWcgIzI1NTEgLS0gc2Vs ZWN0LnZhbCgpIGJyb2tlbiBpbiBJRSBhZnRlciBmb3JtLnJlc2V0KCkKCQkJCWlm ICggb25lICYmICF2YWx1ZXMubGVuZ3RoICYmIG9wdGlvbnMubGVuZ3RoICkgewoJ CQkJCXJldHVybiBqUXVlcnkoIG9wdGlvbnNbIGluZGV4IF0gKS52YWwoKTsKCQkJ CX0KCgkJCQlyZXR1cm4gdmFsdWVzOwoJCQl9LAoKCQkJc2V0OiBmdW5jdGlvbigg ZWxlbSwgdmFsdWUgKSB7CgkJCQl2YXIgdmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJh eSggdmFsdWUgKTsKCgkJCQlqUXVlcnkoZWxlbSkuZmluZCgib3B0aW9uIikuZWFj aChmdW5jdGlvbigpIHsKCQkJCQl0aGlzLnNlbGVjdGVkID0galF1ZXJ5LmluQXJy YXkoIGpRdWVyeSh0aGlzKS52YWwoKSwgdmFsdWVzICkgPj0gMDsKCQkJCX0pOwoK CQkJCWlmICggIXZhbHVlcy5sZW5ndGggKSB7CgkJCQkJZWxlbS5zZWxlY3RlZElu ZGV4ID0gLTE7CgkJCQl9CgkJCQlyZXR1cm4gdmFsdWVzOwoJCQl9CgkJfQoJfSwK CglhdHRyRm46IHsKCQl2YWw6IHRydWUsCgkJY3NzOiB0cnVlLAoJCWh0bWw6IHRy dWUsCgkJdGV4dDogdHJ1ZSwKCQlkYXRhOiB0cnVlLAoJCXdpZHRoOiB0cnVlLAoJ CWhlaWdodDogdHJ1ZSwKCQlvZmZzZXQ6IHRydWUKCX0sCgoJYXR0cjogZnVuY3Rp b24oIGVsZW0sIG5hbWUsIHZhbHVlLCBwYXNzICkgewoJCXZhciByZXQsIGhvb2tz LCBub3R4bWwsCgkJCW5UeXBlID0gZWxlbS5ub2RlVHlwZTsKCgkJLy8gZG9uJ3Qg Z2V0L3NldCBhdHRyaWJ1dGVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0 ZSBub2RlcwoJCWlmICggIWVsZW0gfHwgblR5cGUgPT09IDMgfHwgblR5cGUgPT09 IDggfHwgblR5cGUgPT09IDIgKSB7CgkJCXJldHVybjsKCQl9CgoJCWlmICggcGFz cyAmJiBuYW1lIGluIGpRdWVyeS5hdHRyRm4gKSB7CgkJCXJldHVybiBqUXVlcnko IGVsZW0gKVsgbmFtZSBdKCB2YWx1ZSApOwoJCX0KCgkJLy8gRmFsbGJhY2sgdG8g cHJvcCB3aGVuIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKCQlpZiAoIHR5 cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gInVuZGVmaW5lZCIgKSB7CgkJCXJl dHVybiBqUXVlcnkucHJvcCggZWxlbSwgbmFtZSwgdmFsdWUgKTsKCQl9CgoJCW5v dHhtbCA9IG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKTsK CgkJLy8gQWxsIGF0dHJpYnV0ZXMgYXJlIGxvd2VyY2FzZQoJCS8vIEdyYWIgbmVj ZXNzYXJ5IGhvb2sgaWYgb25lIGlzIGRlZmluZWQKCQlpZiAoIG5vdHhtbCApIHsK CQkJbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKCQkJaG9va3MgPSBqUXVlcnku YXR0ckhvb2tzWyBuYW1lIF0gfHwgKCByYm9vbGVhbi50ZXN0KCBuYW1lICkgPyBi b29sSG9vayA6IG5vZGVIb29rICk7CgkJfQoKCQlpZiAoIHZhbHVlICE9PSB1bmRl ZmluZWQgKSB7CgoJCQlpZiAoIHZhbHVlID09PSBudWxsICkgewoJCQkJalF1ZXJ5 LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKCQkJCXJldHVybjsKCgkJCX0gZWxz ZSBpZiAoIGhvb2tzICYmICJzZXQiIGluIGhvb2tzICYmIG5vdHhtbCAmJiAocmV0 ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApKSAhPT0gdW5kZWZpbmVk ICkgewoJCQkJcmV0dXJuIHJldDsKCgkJCX0gZWxzZSB7CgkJCQllbGVtLnNldEF0 dHJpYnV0ZSggbmFtZSwgIiIgKyB2YWx1ZSApOwoJCQkJcmV0dXJuIHZhbHVlOwoJ CQl9CgoJCX0gZWxzZSBpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICYmIG5v dHhtbCAmJiAocmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkpICE9PSBudWxs ICkgewoJCQlyZXR1cm4gcmV0OwoKCQl9IGVsc2UgewoKCQkJcmV0ID0gZWxlbS5n ZXRBdHRyaWJ1dGUoIG5hbWUgKTsKCgkJCS8vIE5vbi1leGlzdGVudCBhdHRyaWJ1 dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkCgkJCXJl dHVybiByZXQgPT09IG51bGwgPwoJCQkJdW5kZWZpbmVkIDoKCQkJCXJldDsKCQl9 Cgl9LAoKCXJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKCQl2 YXIgcHJvcE5hbWUsIGF0dHJOYW1lcywgbmFtZSwgbCwgaXNCb29sLAoJCQlpID0g MDsKCgkJaWYgKCB2YWx1ZSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgewoJCQlh dHRyTmFtZXMgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCByc3BhY2UgKTsK CQkJbCA9IGF0dHJOYW1lcy5sZW5ndGg7CgoJCQlmb3IgKCA7IGkgPCBsOyBpKysg KSB7CgkJCQluYW1lID0gYXR0ck5hbWVzWyBpIF07CgoJCQkJaWYgKCBuYW1lICkg ewoJCQkJCXByb3BOYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1l OwoJCQkJCWlzQm9vbCA9IHJib29sZWFuLnRlc3QoIG5hbWUgKTsKCgkJCQkJLy8g U2VlICM5Njk5IGZvciBleHBsYW5hdGlvbiBvZiB0aGlzIGFwcHJvYWNoIChzZXR0 aW5nIGZpcnN0LCB0aGVuIHJlbW92YWwpCgkJCQkJLy8gRG8gbm90IGRvIHRoaXMg Zm9yIGJvb2xlYW4gYXR0cmlidXRlcyAoc2VlICMxMDg3MCkKCQkJCQlpZiAoICFp c0Jvb2wgKSB7CgkJCQkJCWpRdWVyeS5hdHRyKCBlbGVtLCBuYW1lLCAiIiApOwoJ CQkJCX0KCQkJCQllbGVtLnJlbW92ZUF0dHJpYnV0ZSggZ2V0U2V0QXR0cmlidXRl ID8gbmFtZSA6IHByb3BOYW1lICk7CgoJCQkJCS8vIFNldCBjb3JyZXNwb25kaW5n IHByb3BlcnR5IHRvIGZhbHNlIGZvciBib29sZWFuIGF0dHJpYnV0ZXMKCQkJCQlp ZiAoIGlzQm9vbCAmJiBwcm9wTmFtZSBpbiBlbGVtICkgewoJCQkJCQllbGVtWyBw cm9wTmFtZSBdID0gZmFsc2U7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfSwKCglh dHRySG9va3M6IHsKCQl0eXBlOiB7CgkJCXNldDogZnVuY3Rpb24oIGVsZW0sIHZh bHVlICkgewoJCQkJLy8gV2UgY2FuJ3QgYWxsb3cgdGhlIHR5cGUgcHJvcGVydHkg dG8gYmUgY2hhbmdlZCAoc2luY2UgaXQgY2F1c2VzIHByb2JsZW1zIGluIElFKQoJ CQkJaWYgKCBydHlwZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgJiYgZWxlbS5wYXJl bnROb2RlICkgewoJCQkJCWpRdWVyeS5lcnJvciggInR5cGUgcHJvcGVydHkgY2Fu J3QgYmUgY2hhbmdlZCIgKTsKCQkJCX0gZWxzZSBpZiAoICFqUXVlcnkuc3VwcG9y dC5yYWRpb1ZhbHVlICYmIHZhbHVlID09PSAicmFkaW8iICYmIGpRdWVyeS5ub2Rl TmFtZShlbGVtLCAiaW5wdXQiKSApIHsKCQkJCQkvLyBTZXR0aW5nIHRoZSB0eXBl IG9uIGEgcmFkaW8gYnV0dG9uIGFmdGVyIHRoZSB2YWx1ZSByZXNldHMgdGhlIHZh bHVlIGluIElFNi05CgkJCQkJLy8gUmVzZXQgdmFsdWUgdG8gaXQncyBkZWZhdWx0 IGluIGNhc2UgdHlwZSBpcyBzZXQgYWZ0ZXIgdmFsdWUKCQkJCQkvLyBUaGlzIGlz IGZvciBlbGVtZW50IGNyZWF0aW9uCgkJCQkJdmFyIHZhbCA9IGVsZW0udmFsdWU7 CgkJCQkJZWxlbS5zZXRBdHRyaWJ1dGUoICJ0eXBlIiwgdmFsdWUgKTsKCQkJCQlp ZiAoIHZhbCApIHsKCQkJCQkJZWxlbS52YWx1ZSA9IHZhbDsKCQkJCQl9CgkJCQkJ cmV0dXJuIHZhbHVlOwoJCQkJfQoJCQl9CgkJfSwKCQkvLyBVc2UgdGhlIHZhbHVl IHByb3BlcnR5IGZvciBiYWNrIGNvbXBhdAoJCS8vIFVzZSB0aGUgbm9kZUhvb2sg Zm9yIGJ1dHRvbiBlbGVtZW50cyBpbiBJRTYvNyAoIzE5NTQpCgkJdmFsdWU6IHsK CQkJZ2V0OiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKCQkJCWlmICggbm9kZUhv b2sgJiYgalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiYnV0dG9uIiApICkgewoJCQkJ CXJldHVybiBub2RlSG9vay5nZXQoIGVsZW0sIG5hbWUgKTsKCQkJCX0KCQkJCXJl dHVybiBuYW1lIGluIGVsZW0gPwoJCQkJCWVsZW0udmFsdWUgOgoJCQkJCW51bGw7 CgkJCX0sCgkJCXNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkgewoJ CQkJaWYgKCBub2RlSG9vayAmJiBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJidXR0 b24iICkgKSB7CgkJCQkJcmV0dXJuIG5vZGVIb29rLnNldCggZWxlbSwgdmFsdWUs IG5hbWUgKTsKCQkJCX0KCQkJCS8vIERvZXMgbm90IHJldHVybiBzbyB0aGF0IHNl dEF0dHJpYnV0ZSBpcyBhbHNvIHVzZWQKCQkJCWVsZW0udmFsdWUgPSB2YWx1ZTsK CQkJfQoJCX0KCX0sCgoJcHJvcEZpeDogewoJCXRhYmluZGV4OiAidGFiSW5kZXgi LAoJCXJlYWRvbmx5OiAicmVhZE9ubHkiLAoJCSJmb3IiOiAiaHRtbEZvciIsCgkJ ImNsYXNzIjogImNsYXNzTmFtZSIsCgkJbWF4bGVuZ3RoOiAibWF4TGVuZ3RoIiwK CQljZWxsc3BhY2luZzogImNlbGxTcGFjaW5nIiwKCQljZWxscGFkZGluZzogImNl bGxQYWRkaW5nIiwKCQlyb3dzcGFuOiAicm93U3BhbiIsCgkJY29sc3BhbjogImNv bFNwYW4iLAoJCXVzZW1hcDogInVzZU1hcCIsCgkJZnJhbWVib3JkZXI6ICJmcmFt ZUJvcmRlciIsCgkJY29udGVudGVkaXRhYmxlOiAiY29udGVudEVkaXRhYmxlIgoJ fSwKCglwcm9wOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7CgkJdmFy IHJldCwgaG9va3MsIG5vdHhtbCwKCQkJblR5cGUgPSBlbGVtLm5vZGVUeXBlOwoK CQkvLyBkb24ndCBnZXQvc2V0IHByb3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBh bmQgYXR0cmlidXRlIG5vZGVzCgkJaWYgKCAhZWxlbSB8fCBuVHlwZSA9PT0gMyB8 fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHsKCQkJcmV0dXJuOwoJCX0K CgkJbm90eG1sID0gblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxl bSApOwoKCQlpZiAoIG5vdHhtbCApIHsKCQkJLy8gRml4IG5hbWUgYW5kIGF0dGFj aCBob29rcwoJCQluYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1l OwoJCQlob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTsKCQl9CgoJCWlm ICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHsKCQkJaWYgKCBob29rcyAmJiAic2V0 IiBpbiBob29rcyAmJiAocmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFt ZSApKSAhPT0gdW5kZWZpbmVkICkgewoJCQkJcmV0dXJuIHJldDsKCgkJCX0gZWxz ZSB7CgkJCQlyZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApOwoJCQl9CgoJ CX0gZWxzZSB7CgkJCWlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKHJl dCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApKSAhPT0gbnVsbCApIHsKCQkJCXJl dHVybiByZXQ7CgoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIGVsZW1bIG5hbWUgXTsK CQkJfQoJCX0KCX0sCgoJcHJvcEhvb2tzOiB7CgkJdGFiSW5kZXg6IHsKCQkJZ2V0 OiBmdW5jdGlvbiggZWxlbSApIHsKCQkJCS8vIGVsZW0udGFiSW5kZXggZG9lc24n dCBhbHdheXMgcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIHdoZW4gaXQgaGFzbid0 IGJlZW4gZXhwbGljaXRseSBzZXQKCQkJCS8vIGh0dHA6Ly9mbHVpZHByb2plY3Qu b3JnL2Jsb2cvMjAwOC8wMS8wOS9nZXR0aW5nLXNldHRpbmctYW5kLXJlbW92aW5n LXRhYmluZGV4LXZhbHVlcy13aXRoLWphdmFzY3JpcHQvCgkJCQl2YXIgYXR0cmli dXRlTm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTsKCgkJ CQlyZXR1cm4gYXR0cmlidXRlTm9kZSAmJiBhdHRyaWJ1dGVOb2RlLnNwZWNpZmll ZCA/CgkJCQkJcGFyc2VJbnQoIGF0dHJpYnV0ZU5vZGUudmFsdWUsIDEwICkgOgoJ CQkJCXJmb2N1c2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApIHx8IHJjbGlja2Fi bGUudGVzdCggZWxlbS5ub2RlTmFtZSApICYmIGVsZW0uaHJlZiA/CgkJCQkJCTAg OgoJCQkJCQl1bmRlZmluZWQ7CgkJCX0KCQl9Cgl9Cn0pOwoKLy8gQWRkIHRoZSB0 YWJJbmRleCBwcm9wSG9vayB0byBhdHRySG9va3MgZm9yIGJhY2stY29tcGF0IChk aWZmZXJlbnQgY2FzZSBpcyBpbnRlbnRpb25hbCkKalF1ZXJ5LmF0dHJIb29rcy50 YWJpbmRleCA9IGpRdWVyeS5wcm9wSG9va3MudGFiSW5kZXg7CgovLyBIb29rIGZv ciBib29sZWFuIGF0dHJpYnV0ZXMKYm9vbEhvb2sgPSB7CglnZXQ6IGZ1bmN0aW9u KCBlbGVtLCBuYW1lICkgewoJCS8vIEFsaWduIGJvb2xlYW4gYXR0cmlidXRlcyB3 aXRoIGNvcnJlc3BvbmRpbmcgcHJvcGVydGllcwoJCS8vIEZhbGwgYmFjayB0byBh dHRyaWJ1dGUgcHJlc2VuY2Ugd2hlcmUgc29tZSBib29sZWFucyBhcmUgbm90IHN1 cHBvcnRlZAoJCXZhciBhdHRyTm9kZSwKCQkJcHJvcGVydHkgPSBqUXVlcnkucHJv cCggZWxlbSwgbmFtZSApOwoJCXJldHVybiBwcm9wZXJ0eSA9PT0gdHJ1ZSB8fCB0 eXBlb2YgcHJvcGVydHkgIT09ICJib29sZWFuIiAmJiAoIGF0dHJOb2RlID0gZWxl bS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpICkgJiYgYXR0ck5vZGUubm9kZVZhbHVl ICE9PSBmYWxzZSA/CgkJCW5hbWUudG9Mb3dlckNhc2UoKSA6CgkJCXVuZGVmaW5l ZDsKCX0sCglzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHsKCQl2 YXIgcHJvcE5hbWU7CgkJaWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7CgkJCS8vIFJl bW92ZSBib29sZWFuIGF0dHJpYnV0ZXMgd2hlbiBzZXQgdG8gZmFsc2UKCQkJalF1 ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKCQl9IGVsc2UgewoJCQkvLyB2 YWx1ZSBpcyB0cnVlIHNpbmNlIHdlIGtub3cgYXQgdGhpcyBwb2ludCBpdCdzIHR5 cGUgYm9vbGVhbiBhbmQgbm90IGZhbHNlCgkJCS8vIFNldCBib29sZWFuIGF0dHJp YnV0ZXMgdG8gdGhlIHNhbWUgbmFtZSBhbmQgc2V0IHRoZSBET00gcHJvcGVydHkK CQkJcHJvcE5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7CgkJ CWlmICggcHJvcE5hbWUgaW4gZWxlbSApIHsKCQkJCS8vIE9ubHkgc2V0IHRoZSBJ REwgc3BlY2lmaWNhbGx5IGlmIGl0IGFscmVhZHkgZXhpc3RzIG9uIHRoZSBlbGVt ZW50CgkJCQllbGVtWyBwcm9wTmFtZSBdID0gdHJ1ZTsKCQkJfQoKCQkJZWxlbS5z ZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUudG9Mb3dlckNhc2UoKSApOwoJCX0KCQly ZXR1cm4gbmFtZTsKCX0KfTsKCi8vIElFNi83IGRvIG5vdCBzdXBwb3J0IGdldHRp bmcvc2V0dGluZyBzb21lIGF0dHJpYnV0ZXMgd2l0aCBnZXQvc2V0QXR0cmlidXRl CmlmICggIWdldFNldEF0dHJpYnV0ZSApIHsKCglmaXhTcGVjaWZpZWQgPSB7CgkJ bmFtZTogdHJ1ZSwKCQlpZDogdHJ1ZSwKCQljb29yZHM6IHRydWUKCX07CgoJLy8g VXNlIHRoaXMgZm9yIGFueSBhdHRyaWJ1dGUgaW4gSUU2LzcKCS8vIFRoaXMgZml4 ZXMgYWxtb3N0IGV2ZXJ5IElFNi83IGlzc3VlCglub2RlSG9vayA9IGpRdWVyeS52 YWxIb29rcy5idXR0b24gPSB7CgkJZ2V0OiBmdW5jdGlvbiggZWxlbSwgbmFtZSAp IHsKCQkJdmFyIHJldDsKCQkJcmV0ID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBu YW1lICk7CgkJCXJldHVybiByZXQgJiYgKCBmaXhTcGVjaWZpZWRbIG5hbWUgXSA/ IHJldC5ub2RlVmFsdWUgIT09ICIiIDogcmV0LnNwZWNpZmllZCApID8KCQkJCXJl dC5ub2RlVmFsdWUgOgoJCQkJdW5kZWZpbmVkOwoJCX0sCgkJc2V0OiBmdW5jdGlv biggZWxlbSwgdmFsdWUsIG5hbWUgKSB7CgkJCS8vIFNldCB0aGUgZXhpc3Rpbmcg b3IgY3JlYXRlIGEgbmV3IGF0dHJpYnV0ZSBub2RlCgkJCXZhciByZXQgPSBlbGVt LmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKTsKCQkJaWYgKCAhcmV0ICkgewoJCQkJ cmV0ID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCBuYW1lICk7CgkJCQllbGVt LnNldEF0dHJpYnV0ZU5vZGUoIHJldCApOwoJCQl9CgkJCXJldHVybiAoIHJldC5u b2RlVmFsdWUgPSB2YWx1ZSArICIiICk7CgkJfQoJfTsKCgkvLyBBcHBseSB0aGUg bm9kZUhvb2sgdG8gdGFiaW5kZXgKCWpRdWVyeS5hdHRySG9va3MudGFiaW5kZXgu c2V0ID0gbm9kZUhvb2suc2V0OwoKCS8vIFNldCB3aWR0aCBhbmQgaGVpZ2h0IHRv IGF1dG8gaW5zdGVhZCBvZiAwIG9uIGVtcHR5IHN0cmluZyggQnVnICM4MTUwICkK CS8vIFRoaXMgaXMgZm9yIHJlbW92YWxzCglqUXVlcnkuZWFjaChbICJ3aWR0aCIs ICJoZWlnaHQiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkgewoJCWpRdWVyeS5hdHRy SG9va3NbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGpRdWVyeS5hdHRySG9va3Nb IG5hbWUgXSwgewoJCQlzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKCQkJ CWlmICggdmFsdWUgPT09ICIiICkgewoJCQkJCWVsZW0uc2V0QXR0cmlidXRlKCBu YW1lLCAiYXV0byIgKTsKCQkJCQlyZXR1cm4gdmFsdWU7CgkJCQl9CgkJCX0KCQl9 KTsKCX0pOwoKCS8vIFNldCBjb250ZW50ZWRpdGFibGUgdG8gZmFsc2Ugb24gcmVt b3ZhbHMoIzEwNDI5KQoJLy8gU2V0dGluZyB0byBlbXB0eSBzdHJpbmcgdGhyb3dz IGFuIGVycm9yIGFzIGFuIGludmFsaWQgdmFsdWUKCWpRdWVyeS5hdHRySG9va3Mu Y29udGVudGVkaXRhYmxlID0gewoJCWdldDogbm9kZUhvb2suZ2V0LAoJCXNldDog ZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkgewoJCQlpZiAoIHZhbHVlID09 PSAiIiApIHsKCQkJCXZhbHVlID0gImZhbHNlIjsKCQkJfQoJCQlub2RlSG9vay5z ZXQoIGVsZW0sIHZhbHVlLCBuYW1lICk7CgkJfQoJfTsKfQoKCi8vIFNvbWUgYXR0 cmlidXRlcyByZXF1aXJlIGEgc3BlY2lhbCBjYWxsIG9uIElFCmlmICggIWpRdWVy eS5zdXBwb3J0LmhyZWZOb3JtYWxpemVkICkgewoJalF1ZXJ5LmVhY2goWyAiaHJl ZiIsICJzcmMiLCAid2lkdGgiLCAiaGVpZ2h0IiBdLCBmdW5jdGlvbiggaSwgbmFt ZSApIHsKCQlqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5k KCBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0sIHsKCQkJZ2V0OiBmdW5jdGlvbigg ZWxlbSApIHsKCQkJCXZhciByZXQgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSwg MiApOwoJCQkJcmV0dXJuIHJldCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHJldDsK CQkJfQoJCX0pOwoJfSk7Cn0KCmlmICggIWpRdWVyeS5zdXBwb3J0LnN0eWxlICkg ewoJalF1ZXJ5LmF0dHJIb29rcy5zdHlsZSA9IHsKCQlnZXQ6IGZ1bmN0aW9uKCBl bGVtICkgewoJCQkvLyBSZXR1cm4gdW5kZWZpbmVkIGluIHRoZSBjYXNlIG9mIGVt cHR5IHN0cmluZwoJCQkvLyBOb3JtYWxpemUgdG8gbG93ZXJjYXNlIHNpbmNlIElF IHVwcGVyY2FzZXMgY3NzIHByb3BlcnR5IG5hbWVzCgkJCXJldHVybiBlbGVtLnN0 eWxlLmNzc1RleHQudG9Mb3dlckNhc2UoKSB8fCB1bmRlZmluZWQ7CgkJfSwKCQlz ZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKCQkJcmV0dXJuICggZWxlbS5z dHlsZS5jc3NUZXh0ID0gIiIgKyB2YWx1ZSApOwoJCX0KCX07Cn0KCi8vIFNhZmFy aSBtaXMtcmVwb3J0cyB0aGUgZGVmYXVsdCBzZWxlY3RlZCBwcm9wZXJ0eSBvZiBh biBvcHRpb24KLy8gQWNjZXNzaW5nIHRoZSBwYXJlbnQncyBzZWxlY3RlZEluZGV4 IHByb3BlcnR5IGZpeGVzIGl0CmlmICggIWpRdWVyeS5zdXBwb3J0Lm9wdFNlbGVj dGVkICkgewoJalF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCA9IGpRdWVyeS5leHRl bmQoIGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQsIHsKCQlnZXQ6IGZ1bmN0aW9u KCBlbGVtICkgewoJCQl2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOwoKCQkJ aWYgKCBwYXJlbnQgKSB7CgkJCQlwYXJlbnQuc2VsZWN0ZWRJbmRleDsKCgkJCQkv LyBNYWtlIHN1cmUgdGhhdCBpdCBhbHNvIHdvcmtzIHdpdGggb3B0Z3JvdXBzLCBz ZWUgIzU3MDEKCQkJCWlmICggcGFyZW50LnBhcmVudE5vZGUgKSB7CgkJCQkJcGFy ZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDsKCQkJCX0KCQkJfQoJCQlyZXR1 cm4gbnVsbDsKCQl9Cgl9KTsKfQoKLy8gSUU2LzcgY2FsbCBlbmN0eXBlIGVuY29k aW5nCmlmICggIWpRdWVyeS5zdXBwb3J0LmVuY3R5cGUgKSB7CglqUXVlcnkucHJv cEZpeC5lbmN0eXBlID0gImVuY29kaW5nIjsKfQoKLy8gUmFkaW9zIGFuZCBjaGVj a2JveGVzIGdldHRlci9zZXR0ZXIKaWYgKCAhalF1ZXJ5LnN1cHBvcnQuY2hlY2tP biApIHsKCWpRdWVyeS5lYWNoKFsgInJhZGlvIiwgImNoZWNrYm94IiBdLCBmdW5j dGlvbigpIHsKCQlqUXVlcnkudmFsSG9va3NbIHRoaXMgXSA9IHsKCQkJZ2V0OiBm dW5jdGlvbiggZWxlbSApIHsKCQkJCS8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBp biBXZWJraXQgIiIgaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiAib24iIGlmIGEgdmFs dWUgaXNuJ3Qgc3BlY2lmaWVkCgkJCQlyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUo InZhbHVlIikgPT09IG51bGwgPyAib24iIDogZWxlbS52YWx1ZTsKCQkJfQoJCX07 Cgl9KTsKfQpqUXVlcnkuZWFjaChbICJyYWRpbyIsICJjaGVja2JveCIgXSwgZnVu Y3Rpb24oKSB7CglqUXVlcnkudmFsSG9va3NbIHRoaXMgXSA9IGpRdWVyeS5leHRl bmQoIGpRdWVyeS52YWxIb29rc1sgdGhpcyBdLCB7CgkJc2V0OiBmdW5jdGlvbigg ZWxlbSwgdmFsdWUgKSB7CgkJCWlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVlICkg KSB7CgkJCQlyZXR1cm4gKCBlbGVtLmNoZWNrZWQgPSBqUXVlcnkuaW5BcnJheSgg alF1ZXJ5KGVsZW0pLnZhbCgpLCB2YWx1ZSApID49IDAgKTsKCQkJfQoJCX0KCX0p Owp9KTsKCgoKCnZhciByZm9ybUVsZW1zID0gL14oPzp0ZXh0YXJlYXxpbnB1dHxz ZWxlY3QpJC9pLAoJcnR5cGVuYW1lc3BhY2UgPSAvXihbXlwuXSopPyg/OlwuKC4r KSk/JC8sCglyaG92ZXJIYWNrID0gLyg/Ol58XHMpaG92ZXIoXC5cUyspP1xiLywK CXJrZXlFdmVudCA9IC9ea2V5LywKCXJtb3VzZUV2ZW50ID0gL14oPzptb3VzZXxj b250ZXh0bWVudSl8Y2xpY2svLAoJcmZvY3VzTW9ycGggPSAvXig/OmZvY3VzaW5m b2N1c3xmb2N1c291dGJsdXIpJC8sCglycXVpY2tJcyA9IC9eKFx3KikoPzojKFtc d1wtXSspKT8oPzpcLihbXHdcLV0rKSk/JC8sCglxdWlja1BhcnNlID0gZnVuY3Rp b24oIHNlbGVjdG9yICkgewoJCXZhciBxdWljayA9IHJxdWlja0lzLmV4ZWMoIHNl bGVjdG9yICk7CgkJaWYgKCBxdWljayApIHsKCQkJLy8gICAwICAxICAgIDIgICAz CgkJCS8vIFsgXywgdGFnLCBpZCwgY2xhc3MgXQoJCQlxdWlja1sxXSA9ICggcXVp Y2tbMV0gfHwgIiIgKS50b0xvd2VyQ2FzZSgpOwoJCQlxdWlja1szXSA9IHF1aWNr WzNdICYmIG5ldyBSZWdFeHAoICIoPzpefFxccykiICsgcXVpY2tbM10gKyAiKD86 XFxzfCQpIiApOwoJCX0KCQlyZXR1cm4gcXVpY2s7Cgl9LAoJcXVpY2tJcyA9IGZ1 bmN0aW9uKCBlbGVtLCBtICkgewoJCXZhciBhdHRycyA9IGVsZW0uYXR0cmlidXRl cyB8fCB7fTsKCQlyZXR1cm4gKAoJCQkoIW1bMV0gfHwgZWxlbS5ub2RlTmFtZS50 b0xvd2VyQ2FzZSgpID09PSBtWzFdKSAmJgoJCQkoIW1bMl0gfHwgKGF0dHJzLmlk IHx8IHt9KS52YWx1ZSA9PT0gbVsyXSkgJiYKCQkJKCFtWzNdIHx8IG1bM10udGVz dCggKGF0dHJzWyAiY2xhc3MiIF0gfHwge30pLnZhbHVlICkpCgkJKTsKCX0sCglo b3ZlckhhY2sgPSBmdW5jdGlvbiggZXZlbnRzICkgewoJCXJldHVybiBqUXVlcnku ZXZlbnQuc3BlY2lhbC5ob3ZlciA/IGV2ZW50cyA6IGV2ZW50cy5yZXBsYWNlKCBy aG92ZXJIYWNrLCAibW91c2VlbnRlciQxIG1vdXNlbGVhdmUkMSIgKTsKCX07Cgov KgogKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBldmVudHMgLS0gbm90 IHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuCiAqIFByb3BzIHRvIERlYW4g RWR3YXJkcycgYWRkRXZlbnQgbGlicmFyeSBmb3IgbWFueSBvZiB0aGUgaWRlYXMu CiAqLwpqUXVlcnkuZXZlbnQgPSB7CgoJYWRkOiBmdW5jdGlvbiggZWxlbSwgdHlw ZXMsIGhhbmRsZXIsIGRhdGEsIHNlbGVjdG9yICkgewoKCQl2YXIgZWxlbURhdGEs IGV2ZW50SGFuZGxlLCBldmVudHMsCgkJCXQsIHRucywgdHlwZSwgbmFtZXNwYWNl cywgaGFuZGxlT2JqLAoJCQloYW5kbGVPYmpJbiwgcXVpY2ssIGhhbmRsZXJzLCBz cGVjaWFsOwoKCQkvLyBEb24ndCBhdHRhY2ggZXZlbnRzIHRvIG5vRGF0YSBvciB0 ZXh0L2NvbW1lbnQgbm9kZXMgKGFsbG93IHBsYWluIG9iamVjdHMgdGhvKQoJCWlm ICggZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4IHx8 ICF0eXBlcyB8fCAhaGFuZGxlciB8fCAhKGVsZW1EYXRhID0galF1ZXJ5Ll9kYXRh KCBlbGVtICkpICkgewoJCQlyZXR1cm47CgkJfQoKCQkvLyBDYWxsZXIgY2FuIHBh c3MgaW4gYW4gb2JqZWN0IG9mIGN1c3RvbSBkYXRhIGluIGxpZXUgb2YgdGhlIGhh bmRsZXIKCQlpZiAoIGhhbmRsZXIuaGFuZGxlciApIHsKCQkJaGFuZGxlT2JqSW4g PSBoYW5kbGVyOwoJCQloYW5kbGVyID0gaGFuZGxlT2JqSW4uaGFuZGxlcjsKCQkJ c2VsZWN0b3IgPSBoYW5kbGVPYmpJbi5zZWxlY3RvcjsKCQl9CgoJCS8vIE1ha2Ug c3VyZSB0aGF0IHRoZSBoYW5kbGVyIGhhcyBhIHVuaXF1ZSBJRCwgdXNlZCB0byBm aW5kL3JlbW92ZSBpdCBsYXRlcgoJCWlmICggIWhhbmRsZXIuZ3VpZCApIHsKCQkJ aGFuZGxlci5ndWlkID0galF1ZXJ5Lmd1aWQrKzsKCQl9CgoJCS8vIEluaXQgdGhl IGVsZW1lbnQncyBldmVudCBzdHJ1Y3R1cmUgYW5kIG1haW4gaGFuZGxlciwgaWYg dGhpcyBpcyB0aGUgZmlyc3QKCQlldmVudHMgPSBlbGVtRGF0YS5ldmVudHM7CgkJ aWYgKCAhZXZlbnRzICkgewoJCQllbGVtRGF0YS5ldmVudHMgPSBldmVudHMgPSB7 fTsKCQl9CgkJZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGU7CgkJaWYgKCAh ZXZlbnRIYW5kbGUgKSB7CgkJCWVsZW1EYXRhLmhhbmRsZSA9IGV2ZW50SGFuZGxl ID0gZnVuY3Rpb24oIGUgKSB7CgkJCQkvLyBEaXNjYXJkIHRoZSBzZWNvbmQgZXZl bnQgb2YgYSBqUXVlcnkuZXZlbnQudHJpZ2dlcigpIGFuZAoJCQkJLy8gd2hlbiBh biBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZAoJCQkJ cmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09ICJ1bmRlZmluZWQiICYmICghZSB8fCBq UXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUpID8KCQkJCQlqUXVlcnku ZXZlbnQuZGlzcGF0Y2guYXBwbHkoIGV2ZW50SGFuZGxlLmVsZW0sIGFyZ3VtZW50 cyApIDoKCQkJCQl1bmRlZmluZWQ7CgkJCX07CgkJCS8vIEFkZCBlbGVtIGFzIGEg cHJvcGVydHkgb2YgdGhlIGhhbmRsZSBmbiB0byBwcmV2ZW50IGEgbWVtb3J5IGxl YWsgd2l0aCBJRSBub24tbmF0aXZlIGV2ZW50cwoJCQlldmVudEhhbmRsZS5lbGVt ID0gZWxlbTsKCQl9CgoJCS8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2VwYXJh dGVkIGJ5IGEgc3BhY2UKCQkvLyBqUXVlcnkoLi4uKS5iaW5kKCJtb3VzZW92ZXIg bW91c2VvdXQiLCBmbik7CgkJdHlwZXMgPSBqUXVlcnkudHJpbSggaG92ZXJIYWNr KHR5cGVzKSApLnNwbGl0KCAiICIgKTsKCQlmb3IgKCB0ID0gMDsgdCA8IHR5cGVz Lmxlbmd0aDsgdCsrICkgewoKCQkJdG5zID0gcnR5cGVuYW1lc3BhY2UuZXhlYygg dHlwZXNbdF0gKSB8fCBbXTsKCQkJdHlwZSA9IHRuc1sxXTsKCQkJbmFtZXNwYWNl cyA9ICggdG5zWzJdIHx8ICIiICkuc3BsaXQoICIuIiApLnNvcnQoKTsKCgkJCS8v IElmIGV2ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVzZSB0aGUgc3BlY2lhbCBldmVu dCBoYW5kbGVycyBmb3IgdGhlIGNoYW5nZWQgdHlwZQoJCQlzcGVjaWFsID0galF1 ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKCgkJCS8vIElmIHNlbGVj dG9yIGRlZmluZWQsIGRldGVybWluZSBzcGVjaWFsIGV2ZW50IGFwaSB0eXBlLCBv dGhlcndpc2UgZ2l2ZW4gdHlwZQoJCQl0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNp YWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7CgoJ CQkvLyBVcGRhdGUgc3BlY2lhbCBiYXNlZCBvbiBuZXdseSByZXNldCB0eXBlCgkJ CXNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9OwoK CQkJLy8gaGFuZGxlT2JqIGlzIHBhc3NlZCB0byBhbGwgZXZlbnQgaGFuZGxlcnMK CQkJaGFuZGxlT2JqID0galF1ZXJ5LmV4dGVuZCh7CgkJCQl0eXBlOiB0eXBlLAoJ CQkJb3JpZ1R5cGU6IHRuc1sxXSwKCQkJCWRhdGE6IGRhdGEsCgkJCQloYW5kbGVy OiBoYW5kbGVyLAoJCQkJZ3VpZDogaGFuZGxlci5ndWlkLAoJCQkJc2VsZWN0b3I6 IHNlbGVjdG9yLAoJCQkJcXVpY2s6IHNlbGVjdG9yICYmIHF1aWNrUGFyc2UoIHNl bGVjdG9yICksCgkJCQluYW1lc3BhY2U6IG5hbWVzcGFjZXMuam9pbigiLiIpCgkJ CX0sIGhhbmRsZU9iakluICk7CgoJCQkvLyBJbml0IHRoZSBldmVudCBoYW5kbGVy IHF1ZXVlIGlmIHdlJ3JlIHRoZSBmaXJzdAoJCQloYW5kbGVycyA9IGV2ZW50c1sg dHlwZSBdOwoJCQlpZiAoICFoYW5kbGVycyApIHsKCQkJCWhhbmRsZXJzID0gZXZl bnRzWyB0eXBlIF0gPSBbXTsKCQkJCWhhbmRsZXJzLmRlbGVnYXRlQ291bnQgPSAw OwoKCQkJCS8vIE9ubHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIvYXR0YWNoRXZlbnQg aWYgdGhlIHNwZWNpYWwgZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZQoJCQkJ aWYgKCAhc3BlY2lhbC5zZXR1cCB8fCBzcGVjaWFsLnNldHVwLmNhbGwoIGVsZW0s IGRhdGEsIG5hbWVzcGFjZXMsIGV2ZW50SGFuZGxlICkgPT09IGZhbHNlICkgewoJ CQkJCS8vIEJpbmQgdGhlIGdsb2JhbCBldmVudCBoYW5kbGVyIHRvIHRoZSBlbGVt ZW50CgkJCQkJaWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7CgkJCQkJCWVs ZW0uYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgZXZlbnRIYW5kbGUsIGZhbHNlICk7 CgoJCQkJCX0gZWxzZSBpZiAoIGVsZW0uYXR0YWNoRXZlbnQgKSB7CgkJCQkJCWVs ZW0uYXR0YWNoRXZlbnQoICJvbiIgKyB0eXBlLCBldmVudEhhbmRsZSApOwoJCQkJ CX0KCQkJCX0KCQkJfQoKCQkJaWYgKCBzcGVjaWFsLmFkZCApIHsKCQkJCXNwZWNp YWwuYWRkLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApOwoKCQkJCWlmICggIWhhbmRs ZU9iai5oYW5kbGVyLmd1aWQgKSB7CgkJCQkJaGFuZGxlT2JqLmhhbmRsZXIuZ3Vp ZCA9IGhhbmRsZXIuZ3VpZDsKCQkJCX0KCQkJfQoKCQkJLy8gQWRkIHRvIHRoZSBl bGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnQKCQkJaWYg KCBzZWxlY3RvciApIHsKCQkJCWhhbmRsZXJzLnNwbGljZSggaGFuZGxlcnMuZGVs ZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTsKCQkJfSBlbHNlIHsKCQkJCWhh bmRsZXJzLnB1c2goIGhhbmRsZU9iaiApOwoJCQl9CgoJCQkvLyBLZWVwIHRyYWNr IG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3IgZXZlbnQg b3B0aW1pemF0aW9uCgkJCWpRdWVyeS5ldmVudC5nbG9iYWxbIHR5cGUgXSA9IHRy dWU7CgkJfQoKCQkvLyBOdWxsaWZ5IGVsZW0gdG8gcHJldmVudCBtZW1vcnkgbGVh a3MgaW4gSUUKCQllbGVtID0gbnVsbDsKCX0sCgoJZ2xvYmFsOiB7fSwKCgkvLyBE ZXRhY2ggYW4gZXZlbnQgb3Igc2V0IG9mIGV2ZW50cyBmcm9tIGFuIGVsZW1lbnQK CXJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBzZWxlY3Rv ciwgbWFwcGVkVHlwZXMgKSB7CgoJCXZhciBlbGVtRGF0YSA9IGpRdWVyeS5oYXNE YXRhKCBlbGVtICkgJiYgalF1ZXJ5Ll9kYXRhKCBlbGVtICksCgkJCXQsIHRucywg dHlwZSwgb3JpZ1R5cGUsIG5hbWVzcGFjZXMsIG9yaWdDb3VudCwKCQkJaiwgZXZl bnRzLCBzcGVjaWFsLCBoYW5kbGUsIGV2ZW50VHlwZSwgaGFuZGxlT2JqOwoKCQlp ZiAoICFlbGVtRGF0YSB8fCAhKGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cykgKSB7 CgkJCXJldHVybjsKCQl9CgoJCS8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3Bh Y2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWQKCQl0eXBlcyA9IGpRdWVy eS50cmltKCBob3ZlckhhY2soIHR5cGVzIHx8ICIiICkgKS5zcGxpdCgiICIpOwoJ CWZvciAoIHQgPSAwOyB0IDwgdHlwZXMubGVuZ3RoOyB0KysgKSB7CgkJCXRucyA9 IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzW3RdICkgfHwgW107CgkJCXR5cGUg PSBvcmlnVHlwZSA9IHRuc1sxXTsKCQkJbmFtZXNwYWNlcyA9IHRuc1syXTsKCgkJ CS8vIFVuYmluZCBhbGwgZXZlbnRzIChvbiB0aGlzIG5hbWVzcGFjZSwgaWYgcHJv dmlkZWQpIGZvciB0aGUgZWxlbWVudAoJCQlpZiAoICF0eXBlICkgewoJCQkJZm9y ICggdHlwZSBpbiBldmVudHMgKSB7CgkJCQkJalF1ZXJ5LmV2ZW50LnJlbW92ZSgg ZWxlbSwgdHlwZSArIHR5cGVzWyB0IF0sIGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVl ICk7CgkJCQl9CgkJCQljb250aW51ZTsKCQkJfQoKCQkJc3BlY2lhbCA9IGpRdWVy eS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307CgkJCXR5cGUgPSAoIHNlbGVj dG9yPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8 fCB0eXBlOwoJCQlldmVudFR5cGUgPSBldmVudHNbIHR5cGUgXSB8fCBbXTsKCQkJ b3JpZ0NvdW50ID0gZXZlbnRUeXBlLmxlbmd0aDsKCQkJbmFtZXNwYWNlcyA9IG5h bWVzcGFjZXMgPyBuZXcgUmVnRXhwKCIoXnxcXC4pIiArIG5hbWVzcGFjZXMuc3Bs aXQoIi4iKS5zb3J0KCkuam9pbigiXFwuKD86LipcXC4pPyIpICsgIihcXC58JCki KSA6IG51bGw7CgoJCQkvLyBSZW1vdmUgbWF0Y2hpbmcgZXZlbnRzCgkJCWZvciAo IGogPSAwOyBqIDwgZXZlbnRUeXBlLmxlbmd0aDsgaisrICkgewoJCQkJaGFuZGxl T2JqID0gZXZlbnRUeXBlWyBqIF07CgoJCQkJaWYgKCAoIG1hcHBlZFR5cGVzIHx8 IG9yaWdUeXBlID09PSBoYW5kbGVPYmoub3JpZ1R5cGUgKSAmJgoJCQkJCSAoICFo YW5kbGVyIHx8IGhhbmRsZXIuZ3VpZCA9PT0gaGFuZGxlT2JqLmd1aWQgKSAmJgoJ CQkJCSAoICFuYW1lc3BhY2VzIHx8IG5hbWVzcGFjZXMudGVzdCggaGFuZGxlT2Jq Lm5hbWVzcGFjZSApICkgJiYKCQkJCQkgKCAhc2VsZWN0b3IgfHwgc2VsZWN0b3Ig PT09IGhhbmRsZU9iai5zZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gIioqIiAmJiBo YW5kbGVPYmouc2VsZWN0b3IgKSApIHsKCQkJCQlldmVudFR5cGUuc3BsaWNlKCBq LS0sIDEgKTsKCgkJCQkJaWYgKCBoYW5kbGVPYmouc2VsZWN0b3IgKSB7CgkJCQkJ CWV2ZW50VHlwZS5kZWxlZ2F0ZUNvdW50LS07CgkJCQkJfQoJCQkJCWlmICggc3Bl Y2lhbC5yZW1vdmUgKSB7CgkJCQkJCXNwZWNpYWwucmVtb3ZlLmNhbGwoIGVsZW0s IGhhbmRsZU9iaiApOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJLy8gUmVtb3ZlIGdl bmVyaWMgZXZlbnQgaGFuZGxlciBpZiB3ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQg bm8gbW9yZSBoYW5kbGVycyBleGlzdAoJCQkvLyAoYXZvaWRzIHBvdGVudGlhbCBm b3IgZW5kbGVzcyByZWN1cnNpb24gZHVyaW5nIHJlbW92YWwgb2Ygc3BlY2lhbCBl dmVudCBoYW5kbGVycykKCQkJaWYgKCBldmVudFR5cGUubGVuZ3RoID09PSAwICYm IG9yaWdDb3VudCAhPT0gZXZlbnRUeXBlLmxlbmd0aCApIHsKCQkJCWlmICggIXNw ZWNpYWwudGVhcmRvd24gfHwgc3BlY2lhbC50ZWFyZG93bi5jYWxsKCBlbGVtLCBu YW1lc3BhY2VzICkgPT09IGZhbHNlICkgewoJCQkJCWpRdWVyeS5yZW1vdmVFdmVu dCggZWxlbSwgdHlwZSwgZWxlbURhdGEuaGFuZGxlICk7CgkJCQl9CgoJCQkJZGVs ZXRlIGV2ZW50c1sgdHlwZSBdOwoJCQl9CgkJfQoKCQkvLyBSZW1vdmUgdGhlIGV4 cGFuZG8gaWYgaXQncyBubyBsb25nZXIgdXNlZAoJCWlmICggalF1ZXJ5LmlzRW1w dHlPYmplY3QoIGV2ZW50cyApICkgewoJCQloYW5kbGUgPSBlbGVtRGF0YS5oYW5k bGU7CgkJCWlmICggaGFuZGxlICkgewoJCQkJaGFuZGxlLmVsZW0gPSBudWxsOwoJ CQl9CgoJCQkvLyByZW1vdmVEYXRhIGFsc28gY2hlY2tzIGZvciBlbXB0aW5lc3Mg YW5kIGNsZWFycyB0aGUgZXhwYW5kbyBpZiBlbXB0eQoJCQkvLyBzbyB1c2UgaXQg aW5zdGVhZCBvZiBkZWxldGUKCQkJalF1ZXJ5LnJlbW92ZURhdGEoIGVsZW0sIFsg ImV2ZW50cyIsICJoYW5kbGUiIF0sIHRydWUgKTsKCQl9Cgl9LAoKCS8vIEV2ZW50 cyB0aGF0IGFyZSBzYWZlIHRvIHNob3J0LWNpcmN1aXQgaWYgbm8gaGFuZGxlcnMg YXJlIGF0dGFjaGVkLgoJLy8gTmF0aXZlIERPTSBldmVudHMgc2hvdWxkIG5vdCBi ZSBhZGRlZCwgdGhleSBtYXkgaGF2ZSBpbmxpbmUgaGFuZGxlcnMuCgljdXN0b21F dmVudDogewoJCSJnZXREYXRhIjogdHJ1ZSwKCQkic2V0RGF0YSI6IHRydWUsCgkJ ImNoYW5nZURhdGEiOiB0cnVlCgl9LAoKCXRyaWdnZXI6IGZ1bmN0aW9uKCBldmVu dCwgZGF0YSwgZWxlbSwgb25seUhhbmRsZXJzICkgewoJCS8vIERvbid0IGRvIGV2 ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzCgkJaWYgKCBlbGVtICYmIChl bGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDgpICkgewoJ CQlyZXR1cm47CgkJfQoKCQkvLyBFdmVudCBvYmplY3Qgb3IgZXZlbnQgdHlwZQoJ CXZhciB0eXBlID0gZXZlbnQudHlwZSB8fCBldmVudCwKCQkJbmFtZXNwYWNlcyA9 IFtdLAoJCQljYWNoZSwgZXhjbHVzaXZlLCBpLCBjdXIsIG9sZCwgb250eXBlLCBz cGVjaWFsLCBoYW5kbGUsIGV2ZW50UGF0aCwgYnViYmxlVHlwZTsKCgkJLy8gZm9j dXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3Qg ZmlyaW5nIHRoZW0gcmlnaHQgbm93CgkJaWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0 eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkgewoJCQlyZXR1cm47CgkJ fQoKCQlpZiAoIHR5cGUuaW5kZXhPZiggIiEiICkgPj0gMCApIHsKCQkJLy8gRXhj bHVzaXZlIGV2ZW50cyB0cmlnZ2VyIG9ubHkgZm9yIHRoZSBleGFjdCBldmVudCAo bm8gbmFtZXNwYWNlcykKCQkJdHlwZSA9IHR5cGUuc2xpY2UoMCwgLTEpOwoJCQll eGNsdXNpdmUgPSB0cnVlOwoJCX0KCgkJaWYgKCB0eXBlLmluZGV4T2YoICIuIiAp ID49IDAgKSB7CgkJCS8vIE5hbWVzcGFjZWQgdHJpZ2dlcjsgY3JlYXRlIGEgcmVn ZXhwIHRvIG1hdGNoIGV2ZW50IHR5cGUgaW4gaGFuZGxlKCkKCQkJbmFtZXNwYWNl cyA9IHR5cGUuc3BsaXQoIi4iKTsKCQkJdHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQo KTsKCQkJbmFtZXNwYWNlcy5zb3J0KCk7CgkJfQoKCQlpZiAoICghZWxlbSB8fCBq UXVlcnkuZXZlbnQuY3VzdG9tRXZlbnRbIHR5cGUgXSkgJiYgIWpRdWVyeS5ldmVu dC5nbG9iYWxbIHR5cGUgXSApIHsKCQkJLy8gTm8galF1ZXJ5IGhhbmRsZXJzIGZv ciB0aGlzIGV2ZW50IHR5cGUsIGFuZCBpdCBjYW4ndCBoYXZlIGlubGluZSBoYW5k bGVycwoJCQlyZXR1cm47CgkJfQoKCQkvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYW4g RXZlbnQsIE9iamVjdCwgb3IganVzdCBhbiBldmVudCB0eXBlIHN0cmluZwoJCWV2 ZW50ID0gdHlwZW9mIGV2ZW50ID09PSAib2JqZWN0IiA/CgkJCS8vIGpRdWVyeS5F dmVudCBvYmplY3QKCQkJZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gPyBldmVudCA6 CgkJCS8vIE9iamVjdCBsaXRlcmFsCgkJCW5ldyBqUXVlcnkuRXZlbnQoIHR5cGUs IGV2ZW50ICkgOgoJCQkvLyBKdXN0IHRoZSBldmVudCB0eXBlIChzdHJpbmcpCgkJ CW5ldyBqUXVlcnkuRXZlbnQoIHR5cGUgKTsKCgkJZXZlbnQudHlwZSA9IHR5cGU7 CgkJZXZlbnQuaXNUcmlnZ2VyID0gdHJ1ZTsKCQlldmVudC5leGNsdXNpdmUgPSBl eGNsdXNpdmU7CgkJZXZlbnQubmFtZXNwYWNlID0gbmFtZXNwYWNlcy5qb2luKCAi LiIgKTsKCQlldmVudC5uYW1lc3BhY2VfcmUgPSBldmVudC5uYW1lc3BhY2U/IG5l dyBSZWdFeHAoIihefFxcLikiICsgbmFtZXNwYWNlcy5qb2luKCJcXC4oPzouKlxc Lik/IikgKyAiKFxcLnwkKSIpIDogbnVsbDsKCQlvbnR5cGUgPSB0eXBlLmluZGV4 T2YoICI6IiApIDwgMCA/ICJvbiIgKyB0eXBlIDogIiI7CgoJCS8vIEhhbmRsZSBh IGdsb2JhbCB0cmlnZ2VyCgkJaWYgKCAhZWxlbSApIHsKCgkJCS8vIFRPRE86IFN0 b3AgdGF1bnRpbmcgdGhlIGRhdGEgY2FjaGU7IHJlbW92ZSBnbG9iYWwgZXZlbnRz IGFuZCBhbHdheXMgYXR0YWNoIHRvIGRvY3VtZW50CgkJCWNhY2hlID0galF1ZXJ5 LmNhY2hlOwoJCQlmb3IgKCBpIGluIGNhY2hlICkgewoJCQkJaWYgKCBjYWNoZVsg aSBdLmV2ZW50cyAmJiBjYWNoZVsgaSBdLmV2ZW50c1sgdHlwZSBdICkgewoJCQkJ CWpRdWVyeS5ldmVudC50cmlnZ2VyKCBldmVudCwgZGF0YSwgY2FjaGVbIGkgXS5o YW5kbGUuZWxlbSwgdHJ1ZSApOwoJCQkJfQoJCQl9CgkJCXJldHVybjsKCQl9CgoJ CS8vIENsZWFuIHVwIHRoZSBldmVudCBpbiBjYXNlIGl0IGlzIGJlaW5nIHJldXNl ZAoJCWV2ZW50LnJlc3VsdCA9IHVuZGVmaW5lZDsKCQlpZiAoICFldmVudC50YXJn ZXQgKSB7CgkJCWV2ZW50LnRhcmdldCA9IGVsZW07CgkJfQoKCQkvLyBDbG9uZSBh bnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5n IHRoZSBoYW5kbGVyIGFyZyBsaXN0CgkJZGF0YSA9IGRhdGEgIT0gbnVsbCA/IGpR dWVyeS5tYWtlQXJyYXkoIGRhdGEgKSA6IFtdOwoJCWRhdGEudW5zaGlmdCggZXZl bnQgKTsKCgkJLy8gQWxsb3cgc3BlY2lhbCBldmVudHMgdG8gZHJhdyBvdXRzaWRl IHRoZSBsaW5lcwoJCXNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlw ZSBdIHx8IHt9OwoJCWlmICggc3BlY2lhbC50cmlnZ2VyICYmIHNwZWNpYWwudHJp Z2dlci5hcHBseSggZWxlbSwgZGF0YSApID09PSBmYWxzZSApIHsKCQkJcmV0dXJu OwoJCX0KCgkJLy8gRGV0ZXJtaW5lIGV2ZW50IHByb3BhZ2F0aW9uIHBhdGggaW4g YWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5NTEpCgkJLy8gQnViYmxl IHVwIHRvIGRvY3VtZW50LCB0aGVuIHRvIHdpbmRvdzsgd2F0Y2ggZm9yIGEgZ2xv YmFsIG93bmVyRG9jdW1lbnQgdmFyICgjOTcyNCkKCQlldmVudFBhdGggPSBbWyBl bGVtLCBzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGUgXV07CgkJaWYgKCAhb25seUhh bmRsZXJzICYmICFzcGVjaWFsLm5vQnViYmxlICYmICFqUXVlcnkuaXNXaW5kb3co IGVsZW0gKSApIHsKCgkJCWJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlw ZSB8fCB0eXBlOwoJCQljdXIgPSByZm9jdXNNb3JwaC50ZXN0KCBidWJibGVUeXBl ICsgdHlwZSApID8gZWxlbSA6IGVsZW0ucGFyZW50Tm9kZTsKCQkJb2xkID0gbnVs bDsKCQkJZm9yICggOyBjdXI7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkgewoJCQkJ ZXZlbnRQYXRoLnB1c2goWyBjdXIsIGJ1YmJsZVR5cGUgXSk7CgkJCQlvbGQgPSBj dXI7CgkJCX0KCgkJCS8vIE9ubHkgYWRkIHdpbmRvdyBpZiB3ZSBnb3QgdG8gZG9j dW1lbnQgKGUuZy4sIG5vdCBwbGFpbiBvYmogb3IgZGV0YWNoZWQgRE9NKQoJCQlp ZiAoIG9sZCAmJiBvbGQgPT09IGVsZW0ub3duZXJEb2N1bWVudCApIHsKCQkJCWV2 ZW50UGF0aC5wdXNoKFsgb2xkLmRlZmF1bHRWaWV3IHx8IG9sZC5wYXJlbnRXaW5k b3cgfHwgd2luZG93LCBidWJibGVUeXBlIF0pOwoJCQl9CgkJfQoKCQkvLyBGaXJl IGhhbmRsZXJzIG9uIHRoZSBldmVudCBwYXRoCgkJZm9yICggaSA9IDA7IGkgPCBl dmVudFBhdGgubGVuZ3RoICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgp OyBpKysgKSB7CgoJCQljdXIgPSBldmVudFBhdGhbaV1bMF07CgkJCWV2ZW50LnR5 cGUgPSBldmVudFBhdGhbaV1bMV07CgoJCQloYW5kbGUgPSAoIGpRdWVyeS5fZGF0 YSggY3VyLCAiZXZlbnRzIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSAmJiBqUXVl cnkuX2RhdGEoIGN1ciwgImhhbmRsZSIgKTsKCQkJaWYgKCBoYW5kbGUgKSB7CgkJ CQloYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApOwoJCQl9CgkJCS8vIE5vdGUgdGhh dCB0aGlzIGlzIGEgYmFyZSBKUyBmdW5jdGlvbiBhbmQgbm90IGEgalF1ZXJ5IGhh bmRsZXIKCQkJaGFuZGxlID0gb250eXBlICYmIGN1clsgb250eXBlIF07CgkJCWlm ICggaGFuZGxlICYmIGpRdWVyeS5hY2NlcHREYXRhKCBjdXIgKSAmJiBoYW5kbGUu YXBwbHkoIGN1ciwgZGF0YSApID09PSBmYWxzZSApIHsKCQkJCWV2ZW50LnByZXZl bnREZWZhdWx0KCk7CgkJCX0KCQl9CgkJZXZlbnQudHlwZSA9IHR5cGU7CgoJCS8v IElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBu b3cKCQlpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZl bnRlZCgpICkgewoKCQkJaWYgKCAoIXNwZWNpYWwuX2RlZmF1bHQgfHwgc3BlY2lh bC5fZGVmYXVsdC5hcHBseSggZWxlbS5vd25lckRvY3VtZW50LCBkYXRhICkgPT09 IGZhbHNlKSAmJgoJCQkJISh0eXBlID09PSAiY2xpY2siICYmIGpRdWVyeS5ub2Rl TmFtZSggZWxlbSwgImEiICkpICYmIGpRdWVyeS5hY2NlcHREYXRhKCBlbGVtICkg KSB7CgoJCQkJLy8gQ2FsbCBhIG5hdGl2ZSBET00gbWV0aG9kIG9uIHRoZSB0YXJn ZXQgd2l0aCB0aGUgc2FtZSBuYW1lIG5hbWUgYXMgdGhlIGV2ZW50LgoJCQkJLy8g Q2FuJ3QgdXNlIGFuIC5pc0Z1bmN0aW9uKCkgY2hlY2sgaGVyZSBiZWNhdXNlIElF Ni83IGZhaWxzIHRoYXQgdGVzdC4KCQkJCS8vIERvbid0IGRvIGRlZmF1bHQgYWN0 aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJl ICgjNjE3MCkKCQkJCS8vIElFPDkgZGllcyBvbiBmb2N1cy9ibHVyIHRvIGhpZGRl biBlbGVtZW50ICgjMTQ4NikKCQkJCWlmICggb250eXBlICYmIGVsZW1bIHR5cGUg XSAmJiAoKHR5cGUgIT09ICJmb2N1cyIgJiYgdHlwZSAhPT0gImJsdXIiKSB8fCBl dmVudC50YXJnZXQub2Zmc2V0V2lkdGggIT09IDApICYmICFqUXVlcnkuaXNXaW5k b3coIGVsZW0gKSApIHsKCgkJCQkJLy8gRG9uJ3QgcmUtdHJpZ2dlciBhbiBvbkZP TyBldmVudCB3aGVuIHdlIGNhbGwgaXRzIEZPTygpIG1ldGhvZAoJCQkJCW9sZCA9 IGVsZW1bIG9udHlwZSBdOwoKCQkJCQlpZiAoIG9sZCApIHsKCQkJCQkJZWxlbVsg b250eXBlIF0gPSBudWxsOwoJCQkJCX0KCgkJCQkJLy8gUHJldmVudCByZS10cmln Z2VyaW5nIG9mIHRoZSBzYW1lIGV2ZW50LCBzaW5jZSB3ZSBhbHJlYWR5IGJ1YmJs ZWQgaXQgYWJvdmUKCQkJCQlqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdHlwZTsK CQkJCQllbGVtWyB0eXBlIF0oKTsKCQkJCQlqUXVlcnkuZXZlbnQudHJpZ2dlcmVk ID0gdW5kZWZpbmVkOwoKCQkJCQlpZiAoIG9sZCApIHsKCQkJCQkJZWxlbVsgb250 eXBlIF0gPSBvbGQ7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gZXZl bnQucmVzdWx0OwoJfSwKCglkaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkgewoK CQkvLyBNYWtlIGEgd3JpdGFibGUgalF1ZXJ5LkV2ZW50IGZyb20gdGhlIG5hdGl2 ZSBldmVudCBvYmplY3QKCQlldmVudCA9IGpRdWVyeS5ldmVudC5maXgoIGV2ZW50 IHx8IHdpbmRvdy5ldmVudCApOwoKCQl2YXIgaGFuZGxlcnMgPSAoIChqUXVlcnku X2RhdGEoIHRoaXMsICJldmVudHMiICkgfHwge30gKVsgZXZlbnQudHlwZSBdIHx8 IFtdKSwKCQkJZGVsZWdhdGVDb3VudCA9IGhhbmRsZXJzLmRlbGVnYXRlQ291bnQs CgkJCWFyZ3MgPSBbXS5zbGljZS5jYWxsKCBhcmd1bWVudHMsIDAgKSwKCQkJcnVu X2FsbCA9ICFldmVudC5leGNsdXNpdmUgJiYgIWV2ZW50Lm5hbWVzcGFjZSwKCQkJ c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyBldmVudC50eXBlIF0gfHwg e30sCgkJCWhhbmRsZXJRdWV1ZSA9IFtdLAoJCQlpLCBqLCBjdXIsIGpxY3VyLCBy ZXQsIHNlbE1hdGNoLCBtYXRjaGVkLCBtYXRjaGVzLCBoYW5kbGVPYmosIHNlbCwg cmVsYXRlZDsKCgkJLy8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhl ciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnQKCQlhcmdzWzBdID0g ZXZlbnQ7CgkJZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzOwoKCQkvLyBDYWxs IHRoZSBwcmVEaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGUsIGFuZCBs ZXQgaXQgYmFpbCBpZiBkZXNpcmVkCgkJaWYgKCBzcGVjaWFsLnByZURpc3BhdGNo ICYmIHNwZWNpYWwucHJlRGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKSA9PT0g ZmFsc2UgKSB7CgkJCXJldHVybjsKCQl9CgoJCS8vIERldGVybWluZSBoYW5kbGVy cyB0aGF0IHNob3VsZCBydW4gaWYgdGhlcmUgYXJlIGRlbGVnYXRlZCBldmVudHMK CQkvLyBBdm9pZCBub24tbGVmdC1jbGljayBidWJibGluZyBpbiBGaXJlZm94ICgj Mzg2MSkKCQlpZiAoIGRlbGVnYXRlQ291bnQgJiYgIShldmVudC5idXR0b24gJiYg ZXZlbnQudHlwZSA9PT0gImNsaWNrIikgKSB7CgoJCQkvLyBQcmVnZW5lcmF0ZSBh IHNpbmdsZSBqUXVlcnkgb2JqZWN0IGZvciByZXVzZSB3aXRoIC5pcygpCgkJCWpx Y3VyID0galF1ZXJ5KHRoaXMpOwoJCQlqcWN1ci5jb250ZXh0ID0gdGhpcy5vd25l ckRvY3VtZW50IHx8IHRoaXM7CgoJCQlmb3IgKCBjdXIgPSBldmVudC50YXJnZXQ7 IGN1ciAhPSB0aGlzOyBjdXIgPSBjdXIucGFyZW50Tm9kZSB8fCB0aGlzICkgewoK CQkJCS8vIERvbid0IHByb2Nlc3MgZXZlbnRzIG9uIGRpc2FibGVkIGVsZW1lbnRz ICgjNjkxMSwgIzgxNjUpCgkJCQlpZiAoIGN1ci5kaXNhYmxlZCAhPT0gdHJ1ZSAp IHsKCQkJCQlzZWxNYXRjaCA9IHt9OwoJCQkJCW1hdGNoZXMgPSBbXTsKCQkJCQlq cWN1clswXSA9IGN1cjsKCQkJCQlmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291 bnQ7IGkrKyApIHsKCQkJCQkJaGFuZGxlT2JqID0gaGFuZGxlcnNbIGkgXTsKCQkJ CQkJc2VsID0gaGFuZGxlT2JqLnNlbGVjdG9yOwoKCQkJCQkJaWYgKCBzZWxNYXRj aFsgc2VsIF0gPT09IHVuZGVmaW5lZCApIHsKCQkJCQkJCXNlbE1hdGNoWyBzZWwg XSA9ICgKCQkJCQkJCQloYW5kbGVPYmoucXVpY2sgPyBxdWlja0lzKCBjdXIsIGhh bmRsZU9iai5xdWljayApIDoganFjdXIuaXMoIHNlbCApCgkJCQkJCQkpOwoJCQkJ CQl9CgkJCQkJCWlmICggc2VsTWF0Y2hbIHNlbCBdICkgewoJCQkJCQkJbWF0Y2hl cy5wdXNoKCBoYW5kbGVPYmogKTsKCQkJCQkJfQoJCQkJCX0KCQkJCQlpZiAoIG1h dGNoZXMubGVuZ3RoICkgewoJCQkJCQloYW5kbGVyUXVldWUucHVzaCh7IGVsZW06 IGN1ciwgbWF0Y2hlczogbWF0Y2hlcyB9KTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9 CgoJCS8vIEFkZCB0aGUgcmVtYWluaW5nIChkaXJlY3RseS1ib3VuZCkgaGFuZGxl cnMKCQlpZiAoIGhhbmRsZXJzLmxlbmd0aCA+IGRlbGVnYXRlQ291bnQgKSB7CgkJ CWhhbmRsZXJRdWV1ZS5wdXNoKHsgZWxlbTogdGhpcywgbWF0Y2hlczogaGFuZGxl cnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9KTsKCQl9CgoJCS8vIFJ1biBkZWxl Z2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBi ZW5lYXRoIHVzCgkJZm9yICggaSA9IDA7IGkgPCBoYW5kbGVyUXVldWUubGVuZ3Ro ICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOyBpKysgKSB7CgkJCW1h dGNoZWQgPSBoYW5kbGVyUXVldWVbIGkgXTsKCQkJZXZlbnQuY3VycmVudFRhcmdl dCA9IG1hdGNoZWQuZWxlbTsKCgkJCWZvciAoIGogPSAwOyBqIDwgbWF0Y2hlZC5t YXRjaGVzLmxlbmd0aCAmJiAhZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0 b3BwZWQoKTsgaisrICkgewoJCQkJaGFuZGxlT2JqID0gbWF0Y2hlZC5tYXRjaGVz WyBqIF07CgoJCQkJLy8gVHJpZ2dlcmVkIGV2ZW50IG11c3QgZWl0aGVyIDEpIGJl IG5vbi1leGNsdXNpdmUgYW5kIGhhdmUgbm8gbmFtZXNwYWNlLCBvcgoJCQkJLy8g MikgaGF2ZSBuYW1lc3BhY2UocykgYSBzdWJzZXQgb3IgZXF1YWwgdG8gdGhvc2Ug aW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSku CgkJCQlpZiAoIHJ1bl9hbGwgfHwgKCFldmVudC5uYW1lc3BhY2UgJiYgIWhhbmRs ZU9iai5uYW1lc3BhY2UpIHx8IGV2ZW50Lm5hbWVzcGFjZV9yZSAmJiBldmVudC5u YW1lc3BhY2VfcmUudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgewoKCQkJ CQlldmVudC5kYXRhID0gaGFuZGxlT2JqLmRhdGE7CgkJCQkJZXZlbnQuaGFuZGxl T2JqID0gaGFuZGxlT2JqOwoKCQkJCQlyZXQgPSAoIChqUXVlcnkuZXZlbnQuc3Bl Y2lhbFsgaGFuZGxlT2JqLm9yaWdUeXBlIF0gfHwge30pLmhhbmRsZSB8fCBoYW5k bGVPYmouaGFuZGxlciApCgkJCQkJCQkuYXBwbHkoIG1hdGNoZWQuZWxlbSwgYXJn cyApOwoKCQkJCQlpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkgewoJCQkJCQlldmVu dC5yZXN1bHQgPSByZXQ7CgkJCQkJCWlmICggcmV0ID09PSBmYWxzZSApIHsKCQkJ CQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgkJCQkJCQlldmVudC5zdG9wUHJv cGFnYXRpb24oKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJLy8g Q2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZQoJ CWlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7CgkJCXNwZWNpYWwucG9zdERp c3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICk7CgkJfQoKCQlyZXR1cm4gZXZlbnQu cmVzdWx0OwoJfSwKCgkvLyBJbmNsdWRlcyBzb21lIGV2ZW50IHByb3BzIHNoYXJl ZCBieSBLZXlFdmVudCBhbmQgTW91c2VFdmVudAoJLy8gKioqIGF0dHJDaGFuZ2Ug YXR0ck5hbWUgcmVsYXRlZE5vZGUgc3JjRWxlbWVudCAgYXJlIG5vdCBub3JtYWxp emVkLCBub24tVzNDLCBkZXByZWNhdGVkLCB3aWxsIGJlIHJlbW92ZWQgaW4gMS44 ICoqKgoJcHJvcHM6ICJhdHRyQ2hhbmdlIGF0dHJOYW1lIHJlbGF0ZWROb2RlIHNy Y0VsZW1lbnQgYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJl bnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRL ZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLAoKCWZp eEhvb2tzOiB7fSwKCglrZXlIb29rczogewoJCXByb3BzOiAiY2hhciBjaGFyQ29k ZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSwKCQlmaWx0ZXI6IGZ1bmN0aW9uKCBl dmVudCwgb3JpZ2luYWwgKSB7CgoJCQkvLyBBZGQgd2hpY2ggZm9yIGtleSBldmVu dHMKCQkJaWYgKCBldmVudC53aGljaCA9PSBudWxsICkgewoJCQkJZXZlbnQud2hp Y2ggPSBvcmlnaW5hbC5jaGFyQ29kZSAhPSBudWxsID8gb3JpZ2luYWwuY2hhckNv ZGUgOiBvcmlnaW5hbC5rZXlDb2RlOwoJCQl9CgoJCQlyZXR1cm4gZXZlbnQ7CgkJ fQoJfSwKCgltb3VzZUhvb2tzOiB7CgkJcHJvcHM6ICJidXR0b24gYnV0dG9ucyBj bGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VY IHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksCgkJ ZmlsdGVyOiBmdW5jdGlvbiggZXZlbnQsIG9yaWdpbmFsICkgewoJCQl2YXIgZXZl bnREb2MsIGRvYywgYm9keSwKCQkJCWJ1dHRvbiA9IG9yaWdpbmFsLmJ1dHRvbiwK CQkJCWZyb21FbGVtZW50ID0gb3JpZ2luYWwuZnJvbUVsZW1lbnQ7CgoJCQkvLyBD YWxjdWxhdGUgcGFnZVgvWSBpZiBtaXNzaW5nIGFuZCBjbGllbnRYL1kgYXZhaWxh YmxlCgkJCWlmICggZXZlbnQucGFnZVggPT0gbnVsbCAmJiBvcmlnaW5hbC5jbGll bnRYICE9IG51bGwgKSB7CgkJCQlldmVudERvYyA9IGV2ZW50LnRhcmdldC5vd25l ckRvY3VtZW50IHx8IGRvY3VtZW50OwoJCQkJZG9jID0gZXZlbnREb2MuZG9jdW1l bnRFbGVtZW50OwoJCQkJYm9keSA9IGV2ZW50RG9jLmJvZHk7CgoJCQkJZXZlbnQu cGFnZVggPSBvcmlnaW5hbC5jbGllbnRYICsgKCBkb2MgJiYgZG9jLnNjcm9sbExl ZnQgfHwgYm9keSAmJiBib2R5LnNjcm9sbExlZnQgfHwgMCApIC0gKCBkb2MgJiYg ZG9jLmNsaWVudExlZnQgfHwgYm9keSAmJiBib2R5LmNsaWVudExlZnQgfHwgMCAp OwoJCQkJZXZlbnQucGFnZVkgPSBvcmlnaW5hbC5jbGllbnRZICsgKCBkb2MgJiYg ZG9jLnNjcm9sbFRvcCAgfHwgYm9keSAmJiBib2R5LnNjcm9sbFRvcCAgfHwgMCAp IC0gKCBkb2MgJiYgZG9jLmNsaWVudFRvcCAgfHwgYm9keSAmJiBib2R5LmNsaWVu dFRvcCAgfHwgMCApOwoJCQl9CgoJCQkvLyBBZGQgcmVsYXRlZFRhcmdldCwgaWYg bmVjZXNzYXJ5CgkJCWlmICggIWV2ZW50LnJlbGF0ZWRUYXJnZXQgJiYgZnJvbUVs ZW1lbnQgKSB7CgkJCQlldmVudC5yZWxhdGVkVGFyZ2V0ID0gZnJvbUVsZW1lbnQg PT09IGV2ZW50LnRhcmdldCA/IG9yaWdpbmFsLnRvRWxlbWVudCA6IGZyb21FbGVt ZW50OwoJCQl9CgoJCQkvLyBBZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0 OyAyID09PSBtaWRkbGU7IDMgPT09IHJpZ2h0CgkJCS8vIE5vdGU6IGJ1dHRvbiBp cyBub3Qgbm9ybWFsaXplZCwgc28gZG9uJ3QgdXNlIGl0CgkJCWlmICggIWV2ZW50 LndoaWNoICYmIGJ1dHRvbiAhPT0gdW5kZWZpbmVkICkgewoJCQkJZXZlbnQud2hp Y2ggPSAoIGJ1dHRvbiAmIDEgPyAxIDogKCBidXR0b24gJiAyID8gMyA6ICggYnV0 dG9uICYgNCA/IDIgOiAwICkgKSApOwoJCQl9CgoJCQlyZXR1cm4gZXZlbnQ7CgkJ fQoJfSwKCglmaXg6IGZ1bmN0aW9uKCBldmVudCApIHsKCQlpZiAoIGV2ZW50WyBq UXVlcnkuZXhwYW5kbyBdICkgewoJCQlyZXR1cm4gZXZlbnQ7CgkJfQoKCQkvLyBD cmVhdGUgYSB3cml0YWJsZSBjb3B5IG9mIHRoZSBldmVudCBvYmplY3QgYW5kIG5v cm1hbGl6ZSBzb21lIHByb3BlcnRpZXMKCQl2YXIgaSwgcHJvcCwKCQkJb3JpZ2lu YWxFdmVudCA9IGV2ZW50LAoJCQlmaXhIb29rID0galF1ZXJ5LmV2ZW50LmZpeEhv b2tzWyBldmVudC50eXBlIF0gfHwge30sCgkJCWNvcHkgPSBmaXhIb29rLnByb3Bz ID8gdGhpcy5wcm9wcy5jb25jYXQoIGZpeEhvb2sucHJvcHMgKSA6IHRoaXMucHJv cHM7CgoJCWV2ZW50ID0galF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7CgoJ CWZvciAoIGkgPSBjb3B5Lmxlbmd0aDsgaTsgKSB7CgkJCXByb3AgPSBjb3B5WyAt LWkgXTsKCQkJZXZlbnRbIHByb3AgXSA9IG9yaWdpbmFsRXZlbnRbIHByb3AgXTsK CQl9CgoJCS8vIEZpeCB0YXJnZXQgcHJvcGVydHksIGlmIG5lY2Vzc2FyeSAoIzE5 MjUsIElFIDYvNy84ICYgU2FmYXJpMikKCQlpZiAoICFldmVudC50YXJnZXQgKSB7 CgkJCWV2ZW50LnRhcmdldCA9IG9yaWdpbmFsRXZlbnQuc3JjRWxlbWVudCB8fCBk b2N1bWVudDsKCQl9CgoJCS8vIFRhcmdldCBzaG91bGQgbm90IGJlIGEgdGV4dCBu b2RlICgjNTA0LCBTYWZhcmkpCgkJaWYgKCBldmVudC50YXJnZXQubm9kZVR5cGUg PT09IDMgKSB7CgkJCWV2ZW50LnRhcmdldCA9IGV2ZW50LnRhcmdldC5wYXJlbnRO b2RlOwoJCX0KCgkJLy8gRm9yIG1vdXNlL2tleSBldmVudHM7IGFkZCBtZXRhS2V5 IGlmIGl0J3Mgbm90IHRoZXJlICgjMzM2OCwgSUU2LzcvOCkKCQlpZiAoIGV2ZW50 Lm1ldGFLZXkgPT09IHVuZGVmaW5lZCApIHsKCQkJZXZlbnQubWV0YUtleSA9IGV2 ZW50LmN0cmxLZXk7CgkJfQoKCQlyZXR1cm4gZml4SG9vay5maWx0ZXI/IGZpeEhv b2suZmlsdGVyKCBldmVudCwgb3JpZ2luYWxFdmVudCApIDogZXZlbnQ7Cgl9LAoK CXNwZWNpYWw6IHsKCQlyZWFkeTogewoJCQkvLyBNYWtlIHN1cmUgdGhlIHJlYWR5 IGV2ZW50IGlzIHNldHVwCgkJCXNldHVwOiBqUXVlcnkuYmluZFJlYWR5CgkJfSwK CgkJbG9hZDogewoJCQkvLyBQcmV2ZW50IHRyaWdnZXJlZCBpbWFnZS5sb2FkIGV2 ZW50cyBmcm9tIGJ1YmJsaW5nIHRvIHdpbmRvdy5sb2FkCgkJCW5vQnViYmxlOiB0 cnVlCgkJfSwKCgkJZm9jdXM6IHsKCQkJZGVsZWdhdGVUeXBlOiAiZm9jdXNpbiIK CQl9LAoJCWJsdXI6IHsKCQkJZGVsZWdhdGVUeXBlOiAiZm9jdXNvdXQiCgkJfSwK CgkJYmVmb3JldW5sb2FkOiB7CgkJCXNldHVwOiBmdW5jdGlvbiggZGF0YSwgbmFt ZXNwYWNlcywgZXZlbnRIYW5kbGUgKSB7CgkJCQkvLyBXZSBvbmx5IHdhbnQgdG8g ZG8gdGhpcyBzcGVjaWFsIGNhc2Ugb24gd2luZG93cwoJCQkJaWYgKCBqUXVlcnku aXNXaW5kb3coIHRoaXMgKSApIHsKCQkJCQl0aGlzLm9uYmVmb3JldW5sb2FkID0g ZXZlbnRIYW5kbGU7CgkJCQl9CgkJCX0sCgoJCQl0ZWFyZG93bjogZnVuY3Rpb24o IG5hbWVzcGFjZXMsIGV2ZW50SGFuZGxlICkgewoJCQkJaWYgKCB0aGlzLm9uYmVm b3JldW5sb2FkID09PSBldmVudEhhbmRsZSApIHsKCQkJCQl0aGlzLm9uYmVmb3Jl dW5sb2FkID0gbnVsbDsKCQkJCX0KCQkJfQoJCX0KCX0sCgoJc2ltdWxhdGU6IGZ1 bmN0aW9uKCB0eXBlLCBlbGVtLCBldmVudCwgYnViYmxlICkgewoJCS8vIFBpZ2d5 YmFjayBvbiBhIGRvbm9yIGV2ZW50IHRvIHNpbXVsYXRlIGEgZGlmZmVyZW50IG9u ZS4KCQkvLyBGYWtlIG9yaWdpbmFsRXZlbnQgdG8gYXZvaWQgZG9ub3IncyBzdG9w UHJvcGFnYXRpb24sIGJ1dCBpZiB0aGUKCQkvLyBzaW11bGF0ZWQgZXZlbnQgcHJl dmVudHMgZGVmYXVsdCB0aGVuIHdlIGRvIHRoZSBzYW1lIG9uIHRoZSBkb25vci4K CQl2YXIgZSA9IGpRdWVyeS5leHRlbmQoCgkJCW5ldyBqUXVlcnkuRXZlbnQoKSwK CQkJZXZlbnQsCgkJCXsgdHlwZTogdHlwZSwKCQkJCWlzU2ltdWxhdGVkOiB0cnVl LAoJCQkJb3JpZ2luYWxFdmVudDoge30KCQkJfQoJCSk7CgkJaWYgKCBidWJibGUg KSB7CgkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCBlLCBudWxsLCBlbGVtICk7CgkJ fSBlbHNlIHsKCQkJalF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmNhbGwoIGVsZW0sIGUg KTsKCQl9CgkJaWYgKCBlLmlzRGVmYXVsdFByZXZlbnRlZCgpICkgewoJCQlldmVu dC5wcmV2ZW50RGVmYXVsdCgpOwoJCX0KCX0KfTsKCi8vIFNvbWUgcGx1Z2lucyBh cmUgdXNpbmcsIGJ1dCBpdCdzIHVuZG9jdW1lbnRlZC9kZXByZWNhdGVkIGFuZCB3 aWxsIGJlIHJlbW92ZWQuCi8vIFRoZSAxLjcgc3BlY2lhbCBldmVudCBpbnRlcmZh Y2Ugc2hvdWxkIHByb3ZpZGUgYWxsIHRoZSBob29rcyBuZWVkZWQgbm93LgpqUXVl cnkuZXZlbnQuaGFuZGxlID0galF1ZXJ5LmV2ZW50LmRpc3BhdGNoOwoKalF1ZXJ5 LnJlbW92ZUV2ZW50ID0gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciA/Cglm dW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkgewoJCWlmICggZWxlbS5yZW1v dmVFdmVudExpc3RlbmVyICkgewoJCQllbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIo IHR5cGUsIGhhbmRsZSwgZmFsc2UgKTsKCQl9Cgl9IDoKCWZ1bmN0aW9uKCBlbGVt LCB0eXBlLCBoYW5kbGUgKSB7CgkJaWYgKCBlbGVtLmRldGFjaEV2ZW50ICkgewoJ CQllbGVtLmRldGFjaEV2ZW50KCAib24iICsgdHlwZSwgaGFuZGxlICk7CgkJfQoJ fTsKCmpRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMsIHByb3BzICkgewoJLy8g QWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IHRoZSAnbmV3JyBrZXl3b3JkCglp ZiAoICEodGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5FdmVudCkgKSB7CgkJcmV0dXJu IG5ldyBqUXVlcnkuRXZlbnQoIHNyYywgcHJvcHMgKTsKCX0KCgkvLyBFdmVudCBv YmplY3QKCWlmICggc3JjICYmIHNyYy50eXBlICkgewoJCXRoaXMub3JpZ2luYWxF dmVudCA9IHNyYzsKCQl0aGlzLnR5cGUgPSBzcmMudHlwZTsKCgkJLy8gRXZlbnRz IGJ1YmJsaW5nIHVwIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hcmtlZCBh cyBwcmV2ZW50ZWQKCQkvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJl ZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS4KCQl0aGlzLmlzRGVmYXVsdFBy ZXZlbnRlZCA9ICggc3JjLmRlZmF1bHRQcmV2ZW50ZWQgfHwgc3JjLnJldHVyblZh bHVlID09PSBmYWxzZSB8fAoJCQlzcmMuZ2V0UHJldmVudERlZmF1bHQgJiYgc3Jj LmdldFByZXZlbnREZWZhdWx0KCkgKSA/IHJldHVyblRydWUgOiByZXR1cm5GYWxz ZTsKCgkvLyBFdmVudCB0eXBlCgl9IGVsc2UgewoJCXRoaXMudHlwZSA9IHNyYzsK CX0KCgkvLyBQdXQgZXhwbGljaXRseSBwcm92aWRlZCBwcm9wZXJ0aWVzIG9udG8g dGhlIGV2ZW50IG9iamVjdAoJaWYgKCBwcm9wcyApIHsKCQlqUXVlcnkuZXh0ZW5k KCB0aGlzLCBwcm9wcyApOwoJfQoKCS8vIENyZWF0ZSBhIHRpbWVzdGFtcCBpZiBp bmNvbWluZyBldmVudCBkb2Vzbid0IGhhdmUgb25lCgl0aGlzLnRpbWVTdGFtcCA9 IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IGpRdWVyeS5ub3coKTsKCgkvLyBNYXJr IGl0IGFzIGZpeGVkCgl0aGlzWyBqUXVlcnkuZXhwYW5kbyBdID0gdHJ1ZTsKfTsK CmZ1bmN0aW9uIHJldHVybkZhbHNlKCkgewoJcmV0dXJuIGZhbHNlOwp9CmZ1bmN0 aW9uIHJldHVyblRydWUoKSB7CglyZXR1cm4gdHJ1ZTsKfQoKLy8galF1ZXJ5LkV2 ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUg RUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nCi8vIGh0dHA6Ly93d3cudzMub3Jn L1RSLzIwMDMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMDMwMzMxL2VjbWEtc2Ny aXB0LWJpbmRpbmcuaHRtbApqUXVlcnkuRXZlbnQucHJvdG90eXBlID0gewoJcHJl dmVudERlZmF1bHQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMuaXNEZWZhdWx0UHJldmVu dGVkID0gcmV0dXJuVHJ1ZTsKCgkJdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7 CgkJaWYgKCAhZSApIHsKCQkJcmV0dXJuOwoJCX0KCgkJLy8gaWYgcHJldmVudERl ZmF1bHQgZXhpc3RzIHJ1biBpdCBvbiB0aGUgb3JpZ2luYWwgZXZlbnQKCQlpZiAo IGUucHJldmVudERlZmF1bHQgKSB7CgkJCWUucHJldmVudERlZmF1bHQoKTsKCgkJ Ly8gb3RoZXJ3aXNlIHNldCB0aGUgcmV0dXJuVmFsdWUgcHJvcGVydHkgb2YgdGhl IG9yaWdpbmFsIGV2ZW50IHRvIGZhbHNlIChJRSkKCQl9IGVsc2UgewoJCQllLnJl dHVyblZhbHVlID0gZmFsc2U7CgkJfQoJfSwKCXN0b3BQcm9wYWdhdGlvbjogZnVu Y3Rpb24oKSB7CgkJdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRy dWU7CgoJCXZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwoJCWlmICggIWUgKSB7 CgkJCXJldHVybjsKCQl9CgkJLy8gaWYgc3RvcFByb3BhZ2F0aW9uIGV4aXN0cyBy dW4gaXQgb24gdGhlIG9yaWdpbmFsIGV2ZW50CgkJaWYgKCBlLnN0b3BQcm9wYWdh dGlvbiApIHsKCQkJZS5zdG9wUHJvcGFnYXRpb24oKTsKCQl9CgkJLy8gb3RoZXJ3 aXNlIHNldCB0aGUgY2FuY2VsQnViYmxlIHByb3BlcnR5IG9mIHRoZSBvcmlnaW5h bCBldmVudCB0byB0cnVlIChJRSkKCQllLmNhbmNlbEJ1YmJsZSA9IHRydWU7Cgl9 LAoJc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKCQl0aGlz LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTsKCQl0 aGlzLnN0b3BQcm9wYWdhdGlvbigpOwoJfSwKCWlzRGVmYXVsdFByZXZlbnRlZDog cmV0dXJuRmFsc2UsCglpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2Us Cglpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UKfTsK Ci8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1c2luZyBtb3VzZW92 ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrcwpqUXVlcnkuZWFjaCh7Cgltb3Vz ZWVudGVyOiAibW91c2VvdmVyIiwKCW1vdXNlbGVhdmU6ICJtb3VzZW91dCIKfSwg ZnVuY3Rpb24oIG9yaWcsIGZpeCApIHsKCWpRdWVyeS5ldmVudC5zcGVjaWFsWyBv cmlnIF0gPSB7CgkJZGVsZWdhdGVUeXBlOiBmaXgsCgkJYmluZFR5cGU6IGZpeCwK CgkJaGFuZGxlOiBmdW5jdGlvbiggZXZlbnQgKSB7CgkJCXZhciB0YXJnZXQgPSB0 aGlzLAoJCQkJcmVsYXRlZCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQsCgkJCQloYW5k bGVPYmogPSBldmVudC5oYW5kbGVPYmosCgkJCQlzZWxlY3RvciA9IGhhbmRsZU9i ai5zZWxlY3RvciwKCQkJCXJldDsKCgkJCS8vIEZvciBtb3VzZW50ZXIvbGVhdmUg Y2FsbCB0aGUgaGFuZGxlciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhlIHRhcmdl dC4KCQkJLy8gTkI6IE5vIHJlbGF0ZWRUYXJnZXQgaWYgdGhlIG1vdXNlIGxlZnQv ZW50ZXJlZCB0aGUgYnJvd3NlciB3aW5kb3cKCQkJaWYgKCAhcmVsYXRlZCB8fCAo cmVsYXRlZCAhPT0gdGFyZ2V0ICYmICFqUXVlcnkuY29udGFpbnMoIHRhcmdldCwg cmVsYXRlZCApKSApIHsKCQkJCWV2ZW50LnR5cGUgPSBoYW5kbGVPYmoub3JpZ1R5 cGU7CgkJCQlyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJn dW1lbnRzICk7CgkJCQlldmVudC50eXBlID0gZml4OwoJCQl9CgkJCXJldHVybiBy ZXQ7CgkJfQoJfTsKfSk7CgovLyBJRSBzdWJtaXQgZGVsZWdhdGlvbgppZiAoICFq UXVlcnkuc3VwcG9ydC5zdWJtaXRCdWJibGVzICkgewoKCWpRdWVyeS5ldmVudC5z cGVjaWFsLnN1Ym1pdCA9IHsKCQlzZXR1cDogZnVuY3Rpb24oKSB7CgkJCS8vIE9u bHkgbmVlZCB0aGlzIGZvciBkZWxlZ2F0ZWQgZm9ybSBzdWJtaXQgZXZlbnRzCgkJ CWlmICggalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCAiZm9ybSIgKSApIHsKCQkJCXJl dHVybiBmYWxzZTsKCQkJfQoKCQkJLy8gTGF6eS1hZGQgYSBzdWJtaXQgaGFuZGxl ciB3aGVuIGEgZGVzY2VuZGFudCBmb3JtIG1heSBwb3RlbnRpYWxseSBiZSBzdWJt aXR0ZWQKCQkJalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgImNsaWNrLl9zdWJtaXQg a2V5cHJlc3MuX3N1Ym1pdCIsIGZ1bmN0aW9uKCBlICkgewoJCQkJLy8gTm9kZSBu YW1lIGNoZWNrIGF2b2lkcyBhIFZNTC1yZWxhdGVkIGNyYXNoIGluIElFICgjOTgw NykKCQkJCXZhciBlbGVtID0gZS50YXJnZXQsCgkJCQkJZm9ybSA9IGpRdWVyeS5u b2RlTmFtZSggZWxlbSwgImlucHV0IiApIHx8IGpRdWVyeS5ub2RlTmFtZSggZWxl bSwgImJ1dHRvbiIgKSA/IGVsZW0uZm9ybSA6IHVuZGVmaW5lZDsKCQkJCWlmICgg Zm9ybSAmJiAhZm9ybS5fc3VibWl0X2F0dGFjaGVkICkgewoJCQkJCWpRdWVyeS5l dmVudC5hZGQoIGZvcm0sICJzdWJtaXQuX3N1Ym1pdCIsIGZ1bmN0aW9uKCBldmVu dCApIHsKCQkJCQkJZXZlbnQuX3N1Ym1pdF9idWJibGUgPSB0cnVlOwoJCQkJCX0p OwoJCQkJCWZvcm0uX3N1Ym1pdF9hdHRhY2hlZCA9IHRydWU7CgkJCQl9CgkJCX0p OwoJCQkvLyByZXR1cm4gdW5kZWZpbmVkIHNpbmNlIHdlIGRvbid0IG5lZWQgYW4g ZXZlbnQgbGlzdGVuZXIKCQl9LAoKCQlwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBl dmVudCApIHsKCQkJLy8gSWYgZm9ybSB3YXMgc3VibWl0dGVkIGJ5IHRoZSB1c2Vy LCBidWJibGUgdGhlIGV2ZW50IHVwIHRoZSB0cmVlCgkJCWlmICggZXZlbnQuX3N1 Ym1pdF9idWJibGUgKSB7CgkJCQlkZWxldGUgZXZlbnQuX3N1Ym1pdF9idWJibGU7 CgkJCQlpZiAoIHRoaXMucGFyZW50Tm9kZSAmJiAhZXZlbnQuaXNUcmlnZ2VyICkg ewoJCQkJCWpRdWVyeS5ldmVudC5zaW11bGF0ZSggInN1Ym1pdCIsIHRoaXMucGFy ZW50Tm9kZSwgZXZlbnQsIHRydWUgKTsKCQkJCX0KCQkJfQoJCX0sCgoJCXRlYXJk b3duOiBmdW5jdGlvbigpIHsKCQkJLy8gT25seSBuZWVkIHRoaXMgZm9yIGRlbGVn YXRlZCBmb3JtIHN1Ym1pdCBldmVudHMKCQkJaWYgKCBqUXVlcnkubm9kZU5hbWUo IHRoaXMsICJmb3JtIiApICkgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgoJCQkv LyBSZW1vdmUgZGVsZWdhdGVkIGhhbmRsZXJzOyBjbGVhbkRhdGEgZXZlbnR1YWxs eSByZWFwcyBzdWJtaXQgaGFuZGxlcnMgYXR0YWNoZWQgYWJvdmUKCQkJalF1ZXJ5 LmV2ZW50LnJlbW92ZSggdGhpcywgIi5fc3VibWl0IiApOwoJCX0KCX07Cn0KCi8v IElFIGNoYW5nZSBkZWxlZ2F0aW9uIGFuZCBjaGVja2JveC9yYWRpbyBmaXgKaWYg KCAhalF1ZXJ5LnN1cHBvcnQuY2hhbmdlQnViYmxlcyApIHsKCglqUXVlcnkuZXZl bnQuc3BlY2lhbC5jaGFuZ2UgPSB7CgoJCXNldHVwOiBmdW5jdGlvbigpIHsKCgkJ CWlmICggcmZvcm1FbGVtcy50ZXN0KCB0aGlzLm5vZGVOYW1lICkgKSB7CgkJCQkv LyBJRSBkb2Vzbid0IGZpcmUgY2hhbmdlIG9uIGEgY2hlY2svcmFkaW8gdW50aWwg Ymx1cjsgdHJpZ2dlciBpdCBvbiBjbGljawoJCQkJLy8gYWZ0ZXIgYSBwcm9wZXJ0 eWNoYW5nZS4gRWF0IHRoZSBibHVyLWNoYW5nZSBpbiBzcGVjaWFsLmNoYW5nZS5o YW5kbGUuCgkJCQkvLyBUaGlzIHN0aWxsIGZpcmVzIG9uY2hhbmdlIGEgc2Vjb25k IHRpbWUgZm9yIGNoZWNrL3JhZGlvIGFmdGVyIGJsdXIuCgkJCQlpZiAoIHRoaXMu dHlwZSA9PT0gImNoZWNrYm94IiB8fCB0aGlzLnR5cGUgPT09ICJyYWRpbyIgKSB7 CgkJCQkJalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgInByb3BlcnR5Y2hhbmdlLl9j aGFuZ2UiLCBmdW5jdGlvbiggZXZlbnQgKSB7CgkJCQkJCWlmICggZXZlbnQub3Jp Z2luYWxFdmVudC5wcm9wZXJ0eU5hbWUgPT09ICJjaGVja2VkIiApIHsKCQkJCQkJ CXRoaXMuX2p1c3RfY2hhbmdlZCA9IHRydWU7CgkJCQkJCX0KCQkJCQl9KTsKCQkJ CQlqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCAiY2xpY2suX2NoYW5nZSIsIGZ1bmN0 aW9uKCBldmVudCApIHsKCQkJCQkJaWYgKCB0aGlzLl9qdXN0X2NoYW5nZWQgJiYg IWV2ZW50LmlzVHJpZ2dlciApIHsKCQkJCQkJCXRoaXMuX2p1c3RfY2hhbmdlZCA9 IGZhbHNlOwoJCQkJCQkJalF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCAiY2hhbmdlIiwg dGhpcywgZXZlbnQsIHRydWUgKTsKCQkJCQkJfQoJCQkJCX0pOwoJCQkJfQoJCQkJ cmV0dXJuIGZhbHNlOwoJCQl9CgkJCS8vIERlbGVnYXRlZCBldmVudDsgbGF6eS1h ZGQgYSBjaGFuZ2UgaGFuZGxlciBvbiBkZXNjZW5kYW50IGlucHV0cwoJCQlqUXVl cnkuZXZlbnQuYWRkKCB0aGlzLCAiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsIGZ1 bmN0aW9uKCBlICkgewoJCQkJdmFyIGVsZW0gPSBlLnRhcmdldDsKCgkJCQlpZiAo IHJmb3JtRWxlbXMudGVzdCggZWxlbS5ub2RlTmFtZSApICYmICFlbGVtLl9jaGFu Z2VfYXR0YWNoZWQgKSB7CgkJCQkJalF1ZXJ5LmV2ZW50LmFkZCggZWxlbSwgImNo YW5nZS5fY2hhbmdlIiwgZnVuY3Rpb24oIGV2ZW50ICkgewoJCQkJCQlpZiAoIHRo aXMucGFyZW50Tm9kZSAmJiAhZXZlbnQuaXNTaW11bGF0ZWQgJiYgIWV2ZW50Lmlz VHJpZ2dlciApIHsKCQkJCQkJCWpRdWVyeS5ldmVudC5zaW11bGF0ZSggImNoYW5n ZSIsIHRoaXMucGFyZW50Tm9kZSwgZXZlbnQsIHRydWUgKTsKCQkJCQkJfQoJCQkJ CX0pOwoJCQkJCWVsZW0uX2NoYW5nZV9hdHRhY2hlZCA9IHRydWU7CgkJCQl9CgkJ CX0pOwoJCX0sCgoJCWhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkgewoJCQl2YXIg ZWxlbSA9IGV2ZW50LnRhcmdldDsKCgkJCS8vIFN3YWxsb3cgbmF0aXZlIGNoYW5n ZSBldmVudHMgZnJvbSBjaGVja2JveC9yYWRpbywgd2UgYWxyZWFkeSB0cmlnZ2Vy ZWQgdGhlbSBhYm92ZQoJCQlpZiAoIHRoaXMgIT09IGVsZW0gfHwgZXZlbnQuaXNT aW11bGF0ZWQgfHwgZXZlbnQuaXNUcmlnZ2VyIHx8IChlbGVtLnR5cGUgIT09ICJy YWRpbyIgJiYgZWxlbS50eXBlICE9PSAiY2hlY2tib3giKSApIHsKCQkJCXJldHVy biBldmVudC5oYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRz ICk7CgkJCX0KCQl9LAoKCQl0ZWFyZG93bjogZnVuY3Rpb24oKSB7CgkJCWpRdWVy eS5ldmVudC5yZW1vdmUoIHRoaXMsICIuX2NoYW5nZSIgKTsKCgkJCXJldHVybiBy Zm9ybUVsZW1zLnRlc3QoIHRoaXMubm9kZU5hbWUgKTsKCQl9Cgl9Owp9CgovLyBD cmVhdGUgImJ1YmJsaW5nIiBmb2N1cyBhbmQgYmx1ciBldmVudHMKaWYgKCAhalF1 ZXJ5LnN1cHBvcnQuZm9jdXNpbkJ1YmJsZXMgKSB7CglqUXVlcnkuZWFjaCh7IGZv Y3VzOiAiZm9jdXNpbiIsIGJsdXI6ICJmb2N1c291dCIgfSwgZnVuY3Rpb24oIG9y aWcsIGZpeCApIHsKCgkJLy8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5k bGVyIHdoaWxlIHNvbWVvbmUgd2FudHMgZm9jdXNpbi9mb2N1c291dAoJCXZhciBh dHRhY2hlcyA9IDAsCgkJCWhhbmRsZXIgPSBmdW5jdGlvbiggZXZlbnQgKSB7CgkJ CQlqUXVlcnkuZXZlbnQuc2ltdWxhdGUoIGZpeCwgZXZlbnQudGFyZ2V0LCBqUXVl cnkuZXZlbnQuZml4KCBldmVudCApLCB0cnVlICk7CgkJCX07CgoJCWpRdWVyeS5l dmVudC5zcGVjaWFsWyBmaXggXSA9IHsKCQkJc2V0dXA6IGZ1bmN0aW9uKCkgewoJ CQkJaWYgKCBhdHRhY2hlcysrID09PSAwICkgewoJCQkJCWRvY3VtZW50LmFkZEV2 ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTsKCQkJCX0KCQkJfSwK CQkJdGVhcmRvd246IGZ1bmN0aW9uKCkgewoJCQkJaWYgKCAtLWF0dGFjaGVzID09 PSAwICkgewoJCQkJCWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIG9yaWcs IGhhbmRsZXIsIHRydWUgKTsKCQkJCX0KCQkJfQoJCX07Cgl9KTsKfQoKalF1ZXJ5 LmZuLmV4dGVuZCh7CgoJb246IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGRh dGEsIGZuLCAvKklOVEVSTkFMKi8gb25lICkgewoJCXZhciBvcmlnRm4sIHR5cGU7 CgoJCS8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVycwoJCWlm ICggdHlwZW9mIHR5cGVzID09PSAib2JqZWN0IiApIHsKCQkJLy8gKCB0eXBlcy1P YmplY3QsIHNlbGVjdG9yLCBkYXRhICkKCQkJaWYgKCB0eXBlb2Ygc2VsZWN0b3Ig IT09ICJzdHJpbmciICkgeyAvLyAmJiBzZWxlY3RvciAhPSBudWxsCgkJCQkvLyAo IHR5cGVzLU9iamVjdCwgZGF0YSApCgkJCQlkYXRhID0gZGF0YSB8fCBzZWxlY3Rv cjsKCQkJCXNlbGVjdG9yID0gdW5kZWZpbmVkOwoJCQl9CgkJCWZvciAoIHR5cGUg aW4gdHlwZXMgKSB7CgkJCQl0aGlzLm9uKCB0eXBlLCBzZWxlY3RvciwgZGF0YSwg dHlwZXNbIHR5cGUgXSwgb25lICk7CgkJCX0KCQkJcmV0dXJuIHRoaXM7CgkJfQoK CQlpZiAoIGRhdGEgPT0gbnVsbCAmJiBmbiA9PSBudWxsICkgewoJCQkvLyAoIHR5 cGVzLCBmbiApCgkJCWZuID0gc2VsZWN0b3I7CgkJCWRhdGEgPSBzZWxlY3RvciA9 IHVuZGVmaW5lZDsKCQl9IGVsc2UgaWYgKCBmbiA9PSBudWxsICkgewoJCQlpZiAo IHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgKSB7CgkJCQkvLyAoIHR5cGVz LCBzZWxlY3RvciwgZm4gKQoJCQkJZm4gPSBkYXRhOwoJCQkJZGF0YSA9IHVuZGVm aW5lZDsKCQkJfSBlbHNlIHsKCQkJCS8vICggdHlwZXMsIGRhdGEsIGZuICkKCQkJ CWZuID0gZGF0YTsKCQkJCWRhdGEgPSBzZWxlY3RvcjsKCQkJCXNlbGVjdG9yID0g dW5kZWZpbmVkOwoJCQl9CgkJfQoJCWlmICggZm4gPT09IGZhbHNlICkgewoJCQlm biA9IHJldHVybkZhbHNlOwoJCX0gZWxzZSBpZiAoICFmbiApIHsKCQkJcmV0dXJu IHRoaXM7CgkJfQoKCQlpZiAoIG9uZSA9PT0gMSApIHsKCQkJb3JpZ0ZuID0gZm47 CgkJCWZuID0gZnVuY3Rpb24oIGV2ZW50ICkgewoJCQkJLy8gQ2FuIHVzZSBhbiBl bXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5zIHRoZSBpbmZvCgkJCQlqUXVl cnkoKS5vZmYoIGV2ZW50ICk7CgkJCQlyZXR1cm4gb3JpZ0ZuLmFwcGx5KCB0aGlz LCBhcmd1bWVudHMgKTsKCQkJfTsKCQkJLy8gVXNlIHNhbWUgZ3VpZCBzbyBjYWxs ZXIgY2FuIHJlbW92ZSB1c2luZyBvcmlnRm4KCQkJZm4uZ3VpZCA9IG9yaWdGbi5n dWlkIHx8ICggb3JpZ0ZuLmd1aWQgPSBqUXVlcnkuZ3VpZCsrICk7CgkJfQoJCXJl dHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewoJCQlqUXVlcnkuZXZlbnQuYWRk KCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7CgkJfSk7Cgl9LAoJ b25lOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHsKCQly ZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgMSApOwoJ fSwKCW9mZjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZm4gKSB7CgkJaWYg KCB0eXBlcyAmJiB0eXBlcy5wcmV2ZW50RGVmYXVsdCAmJiB0eXBlcy5oYW5kbGVP YmogKSB7CgkJCS8vICggZXZlbnQgKSAgZGlzcGF0Y2hlZCBqUXVlcnkuRXZlbnQK CQkJdmFyIGhhbmRsZU9iaiA9IHR5cGVzLmhhbmRsZU9iajsKCQkJalF1ZXJ5KCB0 eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZigKCQkJCWhhbmRsZU9iai5uYW1lc3Bh Y2UgPyBoYW5kbGVPYmoub3JpZ1R5cGUgKyAiLiIgKyBoYW5kbGVPYmoubmFtZXNw YWNlIDogaGFuZGxlT2JqLm9yaWdUeXBlLAoJCQkJaGFuZGxlT2JqLnNlbGVjdG9y LAoJCQkJaGFuZGxlT2JqLmhhbmRsZXIKCQkJKTsKCQkJcmV0dXJuIHRoaXM7CgkJ fQoJCWlmICggdHlwZW9mIHR5cGVzID09PSAib2JqZWN0IiApIHsKCQkJLy8gKCB0 eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdICkKCQkJZm9yICggdmFyIHR5cGUgaW4g dHlwZXMgKSB7CgkJCQl0aGlzLm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0 eXBlIF0gKTsKCQkJfQoJCQlyZXR1cm4gdGhpczsKCQl9CgkJaWYgKCBzZWxlY3Rv ciA9PT0gZmFsc2UgfHwgdHlwZW9mIHNlbGVjdG9yID09PSAiZnVuY3Rpb24iICkg ewoJCQkvLyAoIHR5cGVzIFssIGZuXSApCgkJCWZuID0gc2VsZWN0b3I7CgkJCXNl bGVjdG9yID0gdW5kZWZpbmVkOwoJCX0KCQlpZiAoIGZuID09PSBmYWxzZSApIHsK CQkJZm4gPSByZXR1cm5GYWxzZTsKCQl9CgkJcmV0dXJuIHRoaXMuZWFjaChmdW5j dGlvbigpIHsKCQkJalF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZu LCBzZWxlY3RvciApOwoJCX0pOwoJfSwKCgliaW5kOiBmdW5jdGlvbiggdHlwZXMs IGRhdGEsIGZuICkgewoJCXJldHVybiB0aGlzLm9uKCB0eXBlcywgbnVsbCwgZGF0 YSwgZm4gKTsKCX0sCgl1bmJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7CgkJ cmV0dXJuIHRoaXMub2ZmKCB0eXBlcywgbnVsbCwgZm4gKTsKCX0sCgoJbGl2ZTog ZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHsKCQlqUXVlcnkoIHRoaXMuY29u dGV4dCApLm9uKCB0eXBlcywgdGhpcy5zZWxlY3RvciwgZGF0YSwgZm4gKTsKCQly ZXR1cm4gdGhpczsKCX0sCglkaWU6IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7CgkJ alF1ZXJ5KCB0aGlzLmNvbnRleHQgKS5vZmYoIHR5cGVzLCB0aGlzLnNlbGVjdG9y IHx8ICIqKiIsIGZuICk7CgkJcmV0dXJuIHRoaXM7Cgl9LAoKCWRlbGVnYXRlOiBm dW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHsKCQlyZXR1cm4g dGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApOwoJfSwKCXVuZGVs ZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGZuICkgewoJCS8vICgg bmFtZXNwYWNlICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dICkKCQlyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aCA9PSAxPyB0aGlzLm9mZiggc2VsZWN0b3IsICIq KiIgKSA6IHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IsIGZuICk7Cgl9LAoKCXRy aWdnZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkgewoJCXJldHVybiB0aGlzLmVh Y2goZnVuY3Rpb24oKSB7CgkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBk YXRhLCB0aGlzICk7CgkJfSk7Cgl9LAoJdHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9u KCB0eXBlLCBkYXRhICkgewoJCWlmICggdGhpc1swXSApIHsKCQkJcmV0dXJuIGpR dWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzWzBdLCB0cnVlICk7 CgkJfQoJfSwKCgl0b2dnbGU6IGZ1bmN0aW9uKCBmbiApIHsKCQkvLyBTYXZlIHJl ZmVyZW5jZSB0byBhcmd1bWVudHMgZm9yIGFjY2VzcyBpbiBjbG9zdXJlCgkJdmFy IGFyZ3MgPSBhcmd1bWVudHMsCgkJCWd1aWQgPSBmbi5ndWlkIHx8IGpRdWVyeS5n dWlkKyssCgkJCWkgPSAwLAoJCQl0b2dnbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkg ewoJCQkJLy8gRmlndXJlIG91dCB3aGljaCBmdW5jdGlvbiB0byBleGVjdXRlCgkJ CQl2YXIgbGFzdFRvZ2dsZSA9ICggalF1ZXJ5Ll9kYXRhKCB0aGlzLCAibGFzdFRv Z2dsZSIgKyBmbi5ndWlkICkgfHwgMCApICUgaTsKCQkJCWpRdWVyeS5fZGF0YSgg dGhpcywgImxhc3RUb2dnbGUiICsgZm4uZ3VpZCwgbGFzdFRvZ2dsZSArIDEgKTsK CgkJCQkvLyBNYWtlIHN1cmUgdGhhdCBjbGlja3Mgc3RvcAoJCQkJZXZlbnQucHJl dmVudERlZmF1bHQoKTsKCgkJCQkvLyBhbmQgZXhlY3V0ZSB0aGUgZnVuY3Rpb24K CQkJCXJldHVybiBhcmdzWyBsYXN0VG9nZ2xlIF0uYXBwbHkoIHRoaXMsIGFyZ3Vt ZW50cyApIHx8IGZhbHNlOwoJCQl9OwoKCQkvLyBsaW5rIGFsbCB0aGUgZnVuY3Rp b25zLCBzbyBhbnkgb2YgdGhlbSBjYW4gdW5iaW5kIHRoaXMgY2xpY2sgaGFuZGxl cgoJCXRvZ2dsZXIuZ3VpZCA9IGd1aWQ7CgkJd2hpbGUgKCBpIDwgYXJncy5sZW5n dGggKSB7CgkJCWFyZ3NbIGkrKyBdLmd1aWQgPSBndWlkOwoJCX0KCgkJcmV0dXJu IHRoaXMuY2xpY2soIHRvZ2dsZXIgKTsKCX0sCgoJaG92ZXI6IGZ1bmN0aW9uKCBm bk92ZXIsIGZuT3V0ICkgewoJCXJldHVybiB0aGlzLm1vdXNlZW50ZXIoIGZuT3Zl ciApLm1vdXNlbGVhdmUoIGZuT3V0IHx8IGZuT3ZlciApOwoJfQp9KTsKCmpRdWVy eS5lYWNoKCAoImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6 ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrICIgKwoJIm1vdXNlZG93biBt b3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBt b3VzZWxlYXZlICIgKwoJImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5 cHJlc3Mga2V5dXAgZXJyb3IgY29udGV4dG1lbnUiKS5zcGxpdCgiICIpLCBmdW5j dGlvbiggaSwgbmFtZSApIHsKCgkvLyBIYW5kbGUgZXZlbnQgYmluZGluZwoJalF1 ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggZGF0YSwgZm4gKSB7CgkJaWYgKCBm biA9PSBudWxsICkgewoJCQlmbiA9IGRhdGE7CgkJCWRhdGEgPSBudWxsOwoJCX0K CgkJcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID8KCQkJdGhpcy5vbiggbmFt ZSwgbnVsbCwgZGF0YSwgZm4gKSA6CgkJCXRoaXMudHJpZ2dlciggbmFtZSApOwoJ fTsKCglpZiAoIGpRdWVyeS5hdHRyRm4gKSB7CgkJalF1ZXJ5LmF0dHJGblsgbmFt ZSBdID0gdHJ1ZTsKCX0KCglpZiAoIHJrZXlFdmVudC50ZXN0KCBuYW1lICkgKSB7 CgkJalF1ZXJ5LmV2ZW50LmZpeEhvb2tzWyBuYW1lIF0gPSBqUXVlcnkuZXZlbnQu a2V5SG9va3M7Cgl9CgoJaWYgKCBybW91c2VFdmVudC50ZXN0KCBuYW1lICkgKSB7 CgkJalF1ZXJ5LmV2ZW50LmZpeEhvb2tzWyBuYW1lIF0gPSBqUXVlcnkuZXZlbnQu bW91c2VIb29rczsKCX0KfSk7CgoKCi8qIQogKiBTaXp6bGUgQ1NTIFNlbGVjdG9y IEVuZ2luZQogKiAgQ29weXJpZ2h0IDIwMTEsIFRoZSBEb2pvIEZvdW5kYXRpb24K ICogIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNl cy4KICogIE1vcmUgaW5mb3JtYXRpb246IGh0dHA6Ly9zaXp6bGVqcy5jb20vCiAq LwooZnVuY3Rpb24oKXsKCnZhciBjaHVua2VyID0gLygoPzpcKCg/OlwoW14oKV0r XCl8W14oKV0rKStcKXxcWyg/OlxbW15cW1xdXSpcXXxbJyJdW14nIl0qWyciXXxb XlxbXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxz Kik/KCg/Oi58XHJ8XG4pKikvZywKCWV4cGFuZG8gPSAic2l6Y2FjaGUiICsgKE1h dGgucmFuZG9tKCkgKyAnJykucmVwbGFjZSgnLicsICcnKSwKCWRvbmUgPSAwLAoJ dG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLAoJaGFzRHVwbGlj YXRlID0gZmFsc2UsCgliYXNlSGFzRHVwbGljYXRlID0gdHJ1ZSwKCXJCYWNrc2xh c2ggPSAvXFwvZywKCXJSZXR1cm4gPSAvXHJcbi9nLAoJck5vbldvcmQgPSAvXFcv OwoKLy8gSGVyZSB3ZSBjaGVjayBpZiB0aGUgSmF2YVNjcmlwdCBlbmdpbmUgaXMg dXNpbmcgc29tZSBzb3J0IG9mCi8vIG9wdGltaXphdGlvbiB3aGVyZSBpdCBkb2Vz IG5vdCBhbHdheXMgY2FsbCBvdXIgY29tcGFyaXNpb24KLy8gZnVuY3Rpb24uIElm IHRoYXQgaXMgdGhlIGNhc2UsIGRpc2NhcmQgdGhlIGhhc0R1cGxpY2F0ZSB2YWx1 ZS4KLy8gICBUaHVzIGZhciB0aGF0IGluY2x1ZGVzIEdvb2dsZSBDaHJvbWUuClsw LCAwXS5zb3J0KGZ1bmN0aW9uKCkgewoJYmFzZUhhc0R1cGxpY2F0ZSA9IGZhbHNl OwoJcmV0dXJuIDA7Cn0pOwoKdmFyIFNpenpsZSA9IGZ1bmN0aW9uKCBzZWxlY3Rv ciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHsKCXJlc3VsdHMgPSByZXN1bHRz IHx8IFtdOwoJY29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7CgoJdmFyIG9y aWdDb250ZXh0ID0gY29udGV4dDsKCglpZiAoIGNvbnRleHQubm9kZVR5cGUgIT09 IDEgJiYgY29udGV4dC5ub2RlVHlwZSAhPT0gOSApIHsKCQlyZXR1cm4gW107Cgl9 CgoJaWYgKCAhc2VsZWN0b3IgfHwgdHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5n IiApIHsKCQlyZXR1cm4gcmVzdWx0czsKCX0KCgl2YXIgbSwgc2V0LCBjaGVja1Nl dCwgZXh0cmEsIHJldCwgY3VyLCBwb3AsIGksCgkJcHJ1bmUgPSB0cnVlLAoJCWNv bnRleHRYTUwgPSBTaXp6bGUuaXNYTUwoIGNvbnRleHQgKSwKCQlwYXJ0cyA9IFtd LAoJCXNvRmFyID0gc2VsZWN0b3I7CgoJLy8gUmVzZXQgdGhlIHBvc2l0aW9uIG9m IHRoZSBjaHVua2VyIHJlZ2V4cCAoc3RhcnQgZnJvbSBoZWFkKQoJZG8gewoJCWNo dW5rZXIuZXhlYyggIiIgKTsKCQltID0gY2h1bmtlci5leGVjKCBzb0ZhciApOwoK CQlpZiAoIG0gKSB7CgkJCXNvRmFyID0gbVszXTsKCgkJCXBhcnRzLnB1c2goIG1b MV0gKTsKCgkJCWlmICggbVsyXSApIHsKCQkJCWV4dHJhID0gbVszXTsKCQkJCWJy ZWFrOwoJCQl9CgkJfQoJfSB3aGlsZSAoIG0gKTsKCglpZiAoIHBhcnRzLmxlbmd0 aCA+IDEgJiYgb3JpZ1BPUy5leGVjKCBzZWxlY3RvciApICkgewoKCQlpZiAoIHBh cnRzLmxlbmd0aCA9PT0gMiAmJiBFeHByLnJlbGF0aXZlWyBwYXJ0c1swXSBdICkg ewoJCQlzZXQgPSBwb3NQcm9jZXNzKCBwYXJ0c1swXSArIHBhcnRzWzFdLCBjb250 ZXh0LCBzZWVkICk7CgoJCX0gZWxzZSB7CgkJCXNldCA9IEV4cHIucmVsYXRpdmVb IHBhcnRzWzBdIF0gPwoJCQkJWyBjb250ZXh0IF0gOgoJCQkJU2l6emxlKCBwYXJ0 cy5zaGlmdCgpLCBjb250ZXh0ICk7CgoJCQl3aGlsZSAoIHBhcnRzLmxlbmd0aCAp IHsKCQkJCXNlbGVjdG9yID0gcGFydHMuc2hpZnQoKTsKCgkJCQlpZiAoIEV4cHIu cmVsYXRpdmVbIHNlbGVjdG9yIF0gKSB7CgkJCQkJc2VsZWN0b3IgKz0gcGFydHMu c2hpZnQoKTsKCQkJCX0KCgkJCQlzZXQgPSBwb3NQcm9jZXNzKCBzZWxlY3Rvciwg c2V0LCBzZWVkICk7CgkJCX0KCQl9CgoJfSBlbHNlIHsKCQkvLyBUYWtlIGEgc2hv cnRjdXQgYW5kIHNldCB0aGUgY29udGV4dCBpZiB0aGUgcm9vdCBzZWxlY3RvciBp cyBhbiBJRAoJCS8vIChidXQgbm90IGlmIGl0J2xsIGJlIGZhc3RlciBpZiB0aGUg aW5uZXIgc2VsZWN0b3IgaXMgYW4gSUQpCgkJaWYgKCAhc2VlZCAmJiBwYXJ0cy5s ZW5ndGggPiAxICYmIGNvbnRleHQubm9kZVR5cGUgPT09IDkgJiYgIWNvbnRleHRY TUwgJiYKCQkJCUV4cHIubWF0Y2guSUQudGVzdChwYXJ0c1swXSkgJiYgIUV4cHIu bWF0Y2guSUQudGVzdChwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSkgKSB7CgoJCQly ZXQgPSBTaXp6bGUuZmluZCggcGFydHMuc2hpZnQoKSwgY29udGV4dCwgY29udGV4 dFhNTCApOwoJCQljb250ZXh0ID0gcmV0LmV4cHIgPwoJCQkJU2l6emxlLmZpbHRl ciggcmV0LmV4cHIsIHJldC5zZXQgKVswXSA6CgkJCQlyZXQuc2V0WzBdOwoJCX0K CgkJaWYgKCBjb250ZXh0ICkgewoJCQlyZXQgPSBzZWVkID8KCQkJCXsgZXhwcjog cGFydHMucG9wKCksIHNldDogbWFrZUFycmF5KHNlZWQpIH0gOgoJCQkJU2l6emxl LmZpbmQoIHBhcnRzLnBvcCgpLCBwYXJ0cy5sZW5ndGggPT09IDEgJiYgKHBhcnRz WzBdID09PSAifiIgfHwgcGFydHNbMF0gPT09ICIrIikgJiYgY29udGV4dC5wYXJl bnROb2RlID8gY29udGV4dC5wYXJlbnROb2RlIDogY29udGV4dCwgY29udGV4dFhN TCApOwoKCQkJc2V0ID0gcmV0LmV4cHIgPwoJCQkJU2l6emxlLmZpbHRlciggcmV0 LmV4cHIsIHJldC5zZXQgKSA6CgkJCQlyZXQuc2V0OwoKCQkJaWYgKCBwYXJ0cy5s ZW5ndGggPiAwICkgewoJCQkJY2hlY2tTZXQgPSBtYWtlQXJyYXkoIHNldCApOwoK CQkJfSBlbHNlIHsKCQkJCXBydW5lID0gZmFsc2U7CgkJCX0KCgkJCXdoaWxlICgg cGFydHMubGVuZ3RoICkgewoJCQkJY3VyID0gcGFydHMucG9wKCk7CgkJCQlwb3Ag PSBjdXI7CgoJCQkJaWYgKCAhRXhwci5yZWxhdGl2ZVsgY3VyIF0gKSB7CgkJCQkJ Y3VyID0gIiI7CgkJCQl9IGVsc2UgewoJCQkJCXBvcCA9IHBhcnRzLnBvcCgpOwoJ CQkJfQoKCQkJCWlmICggcG9wID09IG51bGwgKSB7CgkJCQkJcG9wID0gY29udGV4 dDsKCQkJCX0KCgkJCQlFeHByLnJlbGF0aXZlWyBjdXIgXSggY2hlY2tTZXQsIHBv cCwgY29udGV4dFhNTCApOwoJCQl9CgoJCX0gZWxzZSB7CgkJCWNoZWNrU2V0ID0g cGFydHMgPSBbXTsKCQl9Cgl9CgoJaWYgKCAhY2hlY2tTZXQgKSB7CgkJY2hlY2tT ZXQgPSBzZXQ7Cgl9CgoJaWYgKCAhY2hlY2tTZXQgKSB7CgkJU2l6emxlLmVycm9y KCBjdXIgfHwgc2VsZWN0b3IgKTsKCX0KCglpZiAoIHRvU3RyaW5nLmNhbGwoY2hl Y2tTZXQpID09PSAiW29iamVjdCBBcnJheV0iICkgewoJCWlmICggIXBydW5lICkg ewoJCQlyZXN1bHRzLnB1c2guYXBwbHkoIHJlc3VsdHMsIGNoZWNrU2V0ICk7CgoJ CX0gZWxzZSBpZiAoIGNvbnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA9PT0gMSAp IHsKCQkJZm9yICggaSA9IDA7IGNoZWNrU2V0W2ldICE9IG51bGw7IGkrKyApIHsK CQkJCWlmICggY2hlY2tTZXRbaV0gJiYgKGNoZWNrU2V0W2ldID09PSB0cnVlIHx8 IGNoZWNrU2V0W2ldLm5vZGVUeXBlID09PSAxICYmIFNpenpsZS5jb250YWlucyhj b250ZXh0LCBjaGVja1NldFtpXSkpICkgewoJCQkJCXJlc3VsdHMucHVzaCggc2V0 W2ldICk7CgkJCQl9CgkJCX0KCgkJfSBlbHNlIHsKCQkJZm9yICggaSA9IDA7IGNo ZWNrU2V0W2ldICE9IG51bGw7IGkrKyApIHsKCQkJCWlmICggY2hlY2tTZXRbaV0g JiYgY2hlY2tTZXRbaV0ubm9kZVR5cGUgPT09IDEgKSB7CgkJCQkJcmVzdWx0cy5w dXNoKCBzZXRbaV0gKTsKCQkJCX0KCQkJfQoJCX0KCgl9IGVsc2UgewoJCW1ha2VB cnJheSggY2hlY2tTZXQsIHJlc3VsdHMgKTsKCX0KCglpZiAoIGV4dHJhICkgewoJ CVNpenpsZSggZXh0cmEsIG9yaWdDb250ZXh0LCByZXN1bHRzLCBzZWVkICk7CgkJ U2l6emxlLnVuaXF1ZVNvcnQoIHJlc3VsdHMgKTsKCX0KCglyZXR1cm4gcmVzdWx0 czsKfTsKClNpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7 CglpZiAoIHNvcnRPcmRlciApIHsKCQloYXNEdXBsaWNhdGUgPSBiYXNlSGFzRHVw bGljYXRlOwoJCXJlc3VsdHMuc29ydCggc29ydE9yZGVyICk7CgoJCWlmICggaGFz RHVwbGljYXRlICkgewoJCQlmb3IgKCB2YXIgaSA9IDE7IGkgPCByZXN1bHRzLmxl bmd0aDsgaSsrICkgewoJCQkJaWYgKCByZXN1bHRzW2ldID09PSByZXN1bHRzWyBp IC0gMSBdICkgewoJCQkJCXJlc3VsdHMuc3BsaWNlKCBpLS0sIDEgKTsKCQkJCX0K CQkJfQoJCX0KCX0KCglyZXR1cm4gcmVzdWx0czsKfTsKClNpenpsZS5tYXRjaGVz ID0gZnVuY3Rpb24oIGV4cHIsIHNldCApIHsKCXJldHVybiBTaXp6bGUoIGV4cHIs IG51bGwsIG51bGwsIHNldCApOwp9OwoKU2l6emxlLm1hdGNoZXNTZWxlY3RvciA9 IGZ1bmN0aW9uKCBub2RlLCBleHByICkgewoJcmV0dXJuIFNpenpsZSggZXhwciwg bnVsbCwgbnVsbCwgW25vZGVdICkubGVuZ3RoID4gMDsKfTsKClNpenpsZS5maW5k ID0gZnVuY3Rpb24oIGV4cHIsIGNvbnRleHQsIGlzWE1MICkgewoJdmFyIHNldCwg aSwgbGVuLCBtYXRjaCwgdHlwZSwgbGVmdDsKCglpZiAoICFleHByICkgewoJCXJl dHVybiBbXTsKCX0KCglmb3IgKCBpID0gMCwgbGVuID0gRXhwci5vcmRlci5sZW5n dGg7IGkgPCBsZW47IGkrKyApIHsKCQl0eXBlID0gRXhwci5vcmRlcltpXTsKCgkJ aWYgKCAobWF0Y2ggPSBFeHByLmxlZnRNYXRjaFsgdHlwZSBdLmV4ZWMoIGV4cHIg KSkgKSB7CgkJCWxlZnQgPSBtYXRjaFsxXTsKCQkJbWF0Y2guc3BsaWNlKCAxLCAx ICk7CgoJCQlpZiAoIGxlZnQuc3Vic3RyKCBsZWZ0Lmxlbmd0aCAtIDEgKSAhPT0g IlxcIiApIHsKCQkJCW1hdGNoWzFdID0gKG1hdGNoWzFdIHx8ICIiKS5yZXBsYWNl KCByQmFja3NsYXNoLCAiIiApOwoJCQkJc2V0ID0gRXhwci5maW5kWyB0eXBlIF0o IG1hdGNoLCBjb250ZXh0LCBpc1hNTCApOwoKCQkJCWlmICggc2V0ICE9IG51bGwg KSB7CgkJCQkJZXhwciA9IGV4cHIucmVwbGFjZSggRXhwci5tYXRjaFsgdHlwZSBd LCAiIiApOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgkJfQoJfQoKCWlmICggIXNl dCApIHsKCQlzZXQgPSB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFt ZSAhPT0gInVuZGVmaW5lZCIgPwoJCQljb250ZXh0LmdldEVsZW1lbnRzQnlUYWdO YW1lKCAiKiIgKSA6CgkJCVtdOwoJfQoKCXJldHVybiB7IHNldDogc2V0LCBleHBy OiBleHByIH07Cn07CgpTaXp6bGUuZmlsdGVyID0gZnVuY3Rpb24oIGV4cHIsIHNl dCwgaW5wbGFjZSwgbm90ICkgewoJdmFyIG1hdGNoLCBhbnlGb3VuZCwKCQl0eXBl LCBmb3VuZCwgaXRlbSwgZmlsdGVyLCBsZWZ0LAoJCWksIHBhc3MsCgkJb2xkID0g ZXhwciwKCQlyZXN1bHQgPSBbXSwKCQljdXJMb29wID0gc2V0LAoJCWlzWE1MRmls dGVyID0gc2V0ICYmIHNldFswXSAmJiBTaXp6bGUuaXNYTUwoIHNldFswXSApOwoK CXdoaWxlICggZXhwciAmJiBzZXQubGVuZ3RoICkgewoJCWZvciAoIHR5cGUgaW4g RXhwci5maWx0ZXIgKSB7CgkJCWlmICggKG1hdGNoID0gRXhwci5sZWZ0TWF0Y2hb IHR5cGUgXS5leGVjKCBleHByICkpICE9IG51bGwgJiYgbWF0Y2hbMl0gKSB7CgkJ CQlmaWx0ZXIgPSBFeHByLmZpbHRlclsgdHlwZSBdOwoJCQkJbGVmdCA9IG1hdGNo WzFdOwoKCQkJCWFueUZvdW5kID0gZmFsc2U7CgoJCQkJbWF0Y2guc3BsaWNlKDEs MSk7CgoJCQkJaWYgKCBsZWZ0LnN1YnN0ciggbGVmdC5sZW5ndGggLSAxICkgPT09 ICJcXCIgKSB7CgkJCQkJY29udGludWU7CgkJCQl9CgoJCQkJaWYgKCBjdXJMb29w ID09PSByZXN1bHQgKSB7CgkJCQkJcmVzdWx0ID0gW107CgkJCQl9CgoJCQkJaWYg KCBFeHByLnByZUZpbHRlclsgdHlwZSBdICkgewoJCQkJCW1hdGNoID0gRXhwci5w cmVGaWx0ZXJbIHR5cGUgXSggbWF0Y2gsIGN1ckxvb3AsIGlucGxhY2UsIHJlc3Vs dCwgbm90LCBpc1hNTEZpbHRlciApOwoKCQkJCQlpZiAoICFtYXRjaCApIHsKCQkJ CQkJYW55Rm91bmQgPSBmb3VuZCA9IHRydWU7CgoJCQkJCX0gZWxzZSBpZiAoIG1h dGNoID09PSB0cnVlICkgewoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQl9CgoJ CQkJaWYgKCBtYXRjaCApIHsKCQkJCQlmb3IgKCBpID0gMDsgKGl0ZW0gPSBjdXJM b29wW2ldKSAhPSBudWxsOyBpKysgKSB7CgkJCQkJCWlmICggaXRlbSApIHsKCQkJ CQkJCWZvdW5kID0gZmlsdGVyKCBpdGVtLCBtYXRjaCwgaSwgY3VyTG9vcCApOwoJ CQkJCQkJcGFzcyA9IG5vdCBeIGZvdW5kOwoKCQkJCQkJCWlmICggaW5wbGFjZSAm JiBmb3VuZCAhPSBudWxsICkgewoJCQkJCQkJCWlmICggcGFzcyApIHsKCQkJCQkJ CQkJYW55Rm91bmQgPSB0cnVlOwoKCQkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCQlj dXJMb29wW2ldID0gZmFsc2U7CgkJCQkJCQkJfQoKCQkJCQkJCX0gZWxzZSBpZiAo IHBhc3MgKSB7CgkJCQkJCQkJcmVzdWx0LnB1c2goIGl0ZW0gKTsKCQkJCQkJCQlh bnlGb3VuZCA9IHRydWU7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgoJ CQkJaWYgKCBmb3VuZCAhPT0gdW5kZWZpbmVkICkgewoJCQkJCWlmICggIWlucGxh Y2UgKSB7CgkJCQkJCWN1ckxvb3AgPSByZXN1bHQ7CgkJCQkJfQoKCQkJCQlleHBy ID0gZXhwci5yZXBsYWNlKCBFeHByLm1hdGNoWyB0eXBlIF0sICIiICk7CgoJCQkJ CWlmICggIWFueUZvdW5kICkgewoJCQkJCQlyZXR1cm4gW107CgkJCQkJfQoKCQkJ CQlicmVhazsKCQkJCX0KCQkJfQoJCX0KCgkJLy8gSW1wcm9wZXIgZXhwcmVzc2lv bgoJCWlmICggZXhwciA9PT0gb2xkICkgewoJCQlpZiAoIGFueUZvdW5kID09IG51 bGwgKSB7CgkJCQlTaXp6bGUuZXJyb3IoIGV4cHIgKTsKCgkJCX0gZWxzZSB7CgkJ CQlicmVhazsKCQkJfQoJCX0KCgkJb2xkID0gZXhwcjsKCX0KCglyZXR1cm4gY3Vy TG9vcDsKfTsKClNpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7Cgl0aHJv dyBuZXcgRXJyb3IoICJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNz aW9uOiAiICsgbXNnICk7Cn07CgovKioKICogVXRpbGl0eSBmdW5jdGlvbiBmb3Ig cmV0cmVpdmluZyB0aGUgdGV4dCB2YWx1ZSBvZiBhbiBhcnJheSBvZiBET00gbm9k ZXMKICogQHBhcmFtIHtBcnJheXxFbGVtZW50fSBlbGVtCiAqLwp2YXIgZ2V0VGV4 dCA9IFNpenpsZS5nZXRUZXh0ID0gZnVuY3Rpb24oIGVsZW0gKSB7CiAgICB2YXIg aSwgbm9kZSwKCQlub2RlVHlwZSA9IGVsZW0ubm9kZVR5cGUsCgkJcmV0ID0gIiI7 CgoJaWYgKCBub2RlVHlwZSApIHsKCQlpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5v ZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHsKCQkJLy8gVXNlIHRl eHRDb250ZW50IHx8IGlubmVyVGV4dCBmb3IgZWxlbWVudHMKCQkJaWYgKCB0eXBl b2YgZWxlbS50ZXh0Q29udGVudCA9PT0gJ3N0cmluZycgKSB7CgkJCQlyZXR1cm4g ZWxlbS50ZXh0Q29udGVudDsKCQkJfSBlbHNlIGlmICggdHlwZW9mIGVsZW0uaW5u ZXJUZXh0ID09PSAnc3RyaW5nJyApIHsKCQkJCS8vIFJlcGxhY2UgSUUncyBjYXJy aWFnZSByZXR1cm5zCgkJCQlyZXR1cm4gZWxlbS5pbm5lclRleHQucmVwbGFjZSgg clJldHVybiwgJycgKTsKCQkJfSBlbHNlIHsKCQkJCS8vIFRyYXZlcnNlIGl0J3Mg Y2hpbGRyZW4KCQkJCWZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07 IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nKSB7CgkJCQkJcmV0ICs9IGdldFRleHQo IGVsZW0gKTsKCQkJCX0KCQkJfQoJCX0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAz IHx8IG5vZGVUeXBlID09PSA0ICkgewoJCQlyZXR1cm4gZWxlbS5ub2RlVmFsdWU7 CgkJfQoJfSBlbHNlIHsKCgkJLy8gSWYgbm8gbm9kZVR5cGUsIHRoaXMgaXMgZXhw ZWN0ZWQgdG8gYmUgYW4gYXJyYXkKCQlmb3IgKCBpID0gMDsgKG5vZGUgPSBlbGVt W2ldKTsgaSsrICkgewoJCQkvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2Rl cwoJCQlpZiAoIG5vZGUubm9kZVR5cGUgIT09IDggKSB7CgkJCQlyZXQgKz0gZ2V0 VGV4dCggbm9kZSApOwoJCQl9CgkJfQoJfQoJcmV0dXJuIHJldDsKfTsKCnZhciBF eHByID0gU2l6emxlLnNlbGVjdG9ycyA9IHsKCW9yZGVyOiBbICJJRCIsICJOQU1F IiwgIlRBRyIgXSwKCgltYXRjaDogewoJCUlEOiAvIygoPzpbXHdcdTAwYzAtXHVG RkZGXC1dfFxcLikrKS8sCgkJQ0xBU1M6IC9cLigoPzpbXHdcdTAwYzAtXHVGRkZG XC1dfFxcLikrKS8sCgkJTkFNRTogL1xbbmFtZT1bJyJdKigoPzpbXHdcdTAwYzAt XHVGRkZGXC1dfFxcLikrKVsnIl0qXF0vLAoJCUFUVFI6IC9cW1xzKigoPzpbXHdc dTAwYzAtXHVGRkZGXC1dfFxcLikrKVxzKig/OihcUz89KVxzKig/OihbJyJdKSgu Kj8pXDN8KCM/KD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKil8KXwpXHMqXF0v LAoJCVRBRzogL14oKD86W1x3XHUwMGMwLVx1RkZGRlwqXC1dfFxcLikrKS8sCgkJ Q0hJTEQ6IC86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XChccyooZXZl bnxvZGR8KD86WytcLV0/XGQrfCg/OlsrXC1dP1xkKik/blxzKig/OlsrXC1dXHMq XGQrKT8pKVxzKlwpKT8vLAoJCVBPUzogLzoobnRofGVxfGd0fGx0fGZpcnN0fGxh c3R8ZXZlbnxvZGQpKD86XCgoXGQqKVwpKT8oPz1bXlwtXXwkKS8sCgkJUFNFVURP OiAvOigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKSg/OlwoKFsnIl0/KSgo PzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/LwoJfSwKCglsZWZ0TWF0Y2g6 IHt9LAoKCWF0dHJNYXA6IHsKCQkiY2xhc3MiOiAiY2xhc3NOYW1lIiwKCQkiZm9y IjogImh0bWxGb3IiCgl9LAoKCWF0dHJIYW5kbGU6IHsKCQlocmVmOiBmdW5jdGlv biggZWxlbSApIHsKCQkJcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCAiaHJlZiIg KTsKCQl9LAoJCXR5cGU6IGZ1bmN0aW9uKCBlbGVtICkgewoJCQlyZXR1cm4gZWxl bS5nZXRBdHRyaWJ1dGUoICJ0eXBlIiApOwoJCX0KCX0sCgoJcmVsYXRpdmU6IHsK CQkiKyI6IGZ1bmN0aW9uKGNoZWNrU2V0LCBwYXJ0KXsKCQkJdmFyIGlzUGFydFN0 ciA9IHR5cGVvZiBwYXJ0ID09PSAic3RyaW5nIiwKCQkJCWlzVGFnID0gaXNQYXJ0 U3RyICYmICFyTm9uV29yZC50ZXN0KCBwYXJ0ICksCgkJCQlpc1BhcnRTdHJOb3RU YWcgPSBpc1BhcnRTdHIgJiYgIWlzVGFnOwoKCQkJaWYgKCBpc1RhZyApIHsKCQkJ CXBhcnQgPSBwYXJ0LnRvTG93ZXJDYXNlKCk7CgkJCX0KCgkJCWZvciAoIHZhciBp ID0gMCwgbCA9IGNoZWNrU2V0Lmxlbmd0aCwgZWxlbTsgaSA8IGw7IGkrKyApIHsK CQkJCWlmICggKGVsZW0gPSBjaGVja1NldFtpXSkgKSB7CgkJCQkJd2hpbGUgKCAo ZWxlbSA9IGVsZW0ucHJldmlvdXNTaWJsaW5nKSAmJiBlbGVtLm5vZGVUeXBlICE9 PSAxICkge30KCgkJCQkJY2hlY2tTZXRbaV0gPSBpc1BhcnRTdHJOb3RUYWcgfHwg ZWxlbSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHBhcnQgPwoJ CQkJCQllbGVtIHx8IGZhbHNlIDoKCQkJCQkJZWxlbSA9PT0gcGFydDsKCQkJCX0K CQkJfQoKCQkJaWYgKCBpc1BhcnRTdHJOb3RUYWcgKSB7CgkJCQlTaXp6bGUuZmls dGVyKCBwYXJ0LCBjaGVja1NldCwgdHJ1ZSApOwoJCQl9CgkJfSwKCgkJIj4iOiBm dW5jdGlvbiggY2hlY2tTZXQsIHBhcnQgKSB7CgkJCXZhciBlbGVtLAoJCQkJaXNQ YXJ0U3RyID0gdHlwZW9mIHBhcnQgPT09ICJzdHJpbmciLAoJCQkJaSA9IDAsCgkJ CQlsID0gY2hlY2tTZXQubGVuZ3RoOwoKCQkJaWYgKCBpc1BhcnRTdHIgJiYgIXJO b25Xb3JkLnRlc3QoIHBhcnQgKSApIHsKCQkJCXBhcnQgPSBwYXJ0LnRvTG93ZXJD YXNlKCk7CgoJCQkJZm9yICggOyBpIDwgbDsgaSsrICkgewoJCQkJCWVsZW0gPSBj aGVja1NldFtpXTsKCgkJCQkJaWYgKCBlbGVtICkgewoJCQkJCQl2YXIgcGFyZW50 ID0gZWxlbS5wYXJlbnROb2RlOwoJCQkJCQljaGVja1NldFtpXSA9IHBhcmVudC5u b2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBwYXJ0ID8gcGFyZW50IDogZmFsc2U7 CgkJCQkJfQoJCQkJfQoKCQkJfSBlbHNlIHsKCQkJCWZvciAoIDsgaSA8IGw7IGkr KyApIHsKCQkJCQllbGVtID0gY2hlY2tTZXRbaV07CgoJCQkJCWlmICggZWxlbSAp IHsKCQkJCQkJY2hlY2tTZXRbaV0gPSBpc1BhcnRTdHIgPwoJCQkJCQkJZWxlbS5w YXJlbnROb2RlIDoKCQkJCQkJCWVsZW0ucGFyZW50Tm9kZSA9PT0gcGFydDsKCQkJ CQl9CgkJCQl9CgoJCQkJaWYgKCBpc1BhcnRTdHIgKSB7CgkJCQkJU2l6emxlLmZp bHRlciggcGFydCwgY2hlY2tTZXQsIHRydWUgKTsKCQkJCX0KCQkJfQoJCX0sCgoJ CSIiOiBmdW5jdGlvbihjaGVja1NldCwgcGFydCwgaXNYTUwpewoJCQl2YXIgbm9k ZUNoZWNrLAoJCQkJZG9uZU5hbWUgPSBkb25lKyssCgkJCQljaGVja0ZuID0gZGly Q2hlY2s7CgoJCQlpZiAoIHR5cGVvZiBwYXJ0ID09PSAic3RyaW5nIiAmJiAhck5v bldvcmQudGVzdCggcGFydCApICkgewoJCQkJcGFydCA9IHBhcnQudG9Mb3dlckNh c2UoKTsKCQkJCW5vZGVDaGVjayA9IHBhcnQ7CgkJCQljaGVja0ZuID0gZGlyTm9k ZUNoZWNrOwoJCQl9CgoJCQljaGVja0ZuKCAicGFyZW50Tm9kZSIsIHBhcnQsIGRv bmVOYW1lLCBjaGVja1NldCwgbm9kZUNoZWNrLCBpc1hNTCApOwoJCX0sCgoJCSJ+ IjogZnVuY3Rpb24oIGNoZWNrU2V0LCBwYXJ0LCBpc1hNTCApIHsKCQkJdmFyIG5v ZGVDaGVjaywKCQkJCWRvbmVOYW1lID0gZG9uZSsrLAoJCQkJY2hlY2tGbiA9IGRp ckNoZWNrOwoKCQkJaWYgKCB0eXBlb2YgcGFydCA9PT0gInN0cmluZyIgJiYgIXJO b25Xb3JkLnRlc3QoIHBhcnQgKSApIHsKCQkJCXBhcnQgPSBwYXJ0LnRvTG93ZXJD YXNlKCk7CgkJCQlub2RlQ2hlY2sgPSBwYXJ0OwoJCQkJY2hlY2tGbiA9IGRpck5v ZGVDaGVjazsKCQkJfQoKCQkJY2hlY2tGbiggInByZXZpb3VzU2libGluZyIsIHBh cnQsIGRvbmVOYW1lLCBjaGVja1NldCwgbm9kZUNoZWNrLCBpc1hNTCApOwoJCX0K CX0sCgoJZmluZDogewoJCUlEOiBmdW5jdGlvbiggbWF0Y2gsIGNvbnRleHQsIGlz WE1MICkgewoJCQlpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9 PSAidW5kZWZpbmVkIiAmJiAhaXNYTUwgKSB7CgkJCQl2YXIgbSA9IGNvbnRleHQu Z2V0RWxlbWVudEJ5SWQobWF0Y2hbMV0pOwoJCQkJLy8gQ2hlY2sgcGFyZW50Tm9k ZSB0byBjYXRjaCB3aGVuIEJsYWNrYmVycnkgNC42IHJldHVybnMKCQkJCS8vIG5v ZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQgIzY5NjMKCQkJ CXJldHVybiBtICYmIG0ucGFyZW50Tm9kZSA/IFttXSA6IFtdOwoJCQl9CgkJfSwK CgkJTkFNRTogZnVuY3Rpb24oIG1hdGNoLCBjb250ZXh0ICkgewoJCQlpZiAoIHR5 cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lICE9PSAidW5kZWZpbmVkIiAp IHsKCQkJCXZhciByZXQgPSBbXSwKCQkJCQlyZXN1bHRzID0gY29udGV4dC5nZXRF bGVtZW50c0J5TmFtZSggbWF0Y2hbMV0gKTsKCgkJCQlmb3IgKCB2YXIgaSA9IDAs IGwgPSByZXN1bHRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKCQkJCQlpZiAoIHJl c3VsdHNbaV0uZ2V0QXR0cmlidXRlKCJuYW1lIikgPT09IG1hdGNoWzFdICkgewoJ CQkJCQlyZXQucHVzaCggcmVzdWx0c1tpXSApOwoJCQkJCX0KCQkJCX0KCgkJCQly ZXR1cm4gcmV0Lmxlbmd0aCA9PT0gMCA/IG51bGwgOiByZXQ7CgkJCX0KCQl9LAoK CQlUQUc6IGZ1bmN0aW9uKCBtYXRjaCwgY29udGV4dCApIHsKCQkJaWYgKCB0eXBl b2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIg KSB7CgkJCQlyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggbWF0 Y2hbMV0gKTsKCQkJfQoJCX0KCX0sCglwcmVGaWx0ZXI6IHsKCQlDTEFTUzogZnVu Y3Rpb24oIG1hdGNoLCBjdXJMb29wLCBpbnBsYWNlLCByZXN1bHQsIG5vdCwgaXNY TUwgKSB7CgkJCW1hdGNoID0gIiAiICsgbWF0Y2hbMV0ucmVwbGFjZSggckJhY2tz bGFzaCwgIiIgKSArICIgIjsKCgkJCWlmICggaXNYTUwgKSB7CgkJCQlyZXR1cm4g bWF0Y2g7CgkJCX0KCgkJCWZvciAoIHZhciBpID0gMCwgZWxlbTsgKGVsZW0gPSBj dXJMb29wW2ldKSAhPSBudWxsOyBpKysgKSB7CgkJCQlpZiAoIGVsZW0gKSB7CgkJ CQkJaWYgKCBub3QgXiAoZWxlbS5jbGFzc05hbWUgJiYgKCIgIiArIGVsZW0uY2xh c3NOYW1lICsgIiAiKS5yZXBsYWNlKC9bXHRcblxyXS9nLCAiICIpLmluZGV4T2Yo bWF0Y2gpID49IDApICkgewoJCQkJCQlpZiAoICFpbnBsYWNlICkgewoJCQkJCQkJ cmVzdWx0LnB1c2goIGVsZW0gKTsKCQkJCQkJfQoKCQkJCQl9IGVsc2UgaWYgKCBp bnBsYWNlICkgewoJCQkJCQljdXJMb29wW2ldID0gZmFsc2U7CgkJCQkJfQoJCQkJ fQoJCQl9CgoJCQlyZXR1cm4gZmFsc2U7CgkJfSwKCgkJSUQ6IGZ1bmN0aW9uKCBt YXRjaCApIHsKCQkJcmV0dXJuIG1hdGNoWzFdLnJlcGxhY2UoIHJCYWNrc2xhc2gs ICIiICk7CgkJfSwKCgkJVEFHOiBmdW5jdGlvbiggbWF0Y2gsIGN1ckxvb3AgKSB7 CgkJCXJldHVybiBtYXRjaFsxXS5yZXBsYWNlKCByQmFja3NsYXNoLCAiIiApLnRv TG93ZXJDYXNlKCk7CgkJfSwKCgkJQ0hJTEQ6IGZ1bmN0aW9uKCBtYXRjaCApIHsK CQkJaWYgKCBtYXRjaFsxXSA9PT0gIm50aCIgKSB7CgkJCQlpZiAoICFtYXRjaFsy XSApIHsKCQkJCQlTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7CgkJCQl9CgoJCQkJ bWF0Y2hbMl0gPSBtYXRjaFsyXS5yZXBsYWNlKC9eXCt8XHMqL2csICcnKTsKCgkJ CQkvLyBwYXJzZSBlcXVhdGlvbnMgbGlrZSAnZXZlbicsICdvZGQnLCAnNScsICcy bicsICczbisyJywgJzRuLTEnLCAnLW4rNicKCQkJCXZhciB0ZXN0ID0gLygtPyko XGQqKSg/Om4oWytcLV0/XGQqKSk/Ly5leGVjKAoJCQkJCW1hdGNoWzJdID09PSAi ZXZlbiIgJiYgIjJuIiB8fCBtYXRjaFsyXSA9PT0gIm9kZCIgJiYgIjJuKzEiIHx8 CgkJCQkJIS9cRC8udGVzdCggbWF0Y2hbMl0gKSAmJiAiMG4rIiArIG1hdGNoWzJd IHx8IG1hdGNoWzJdKTsKCgkJCQkvLyBjYWxjdWxhdGUgdGhlIG51bWJlcnMgKGZp cnN0KW4rKGxhc3QpIGluY2x1ZGluZyBpZiB0aGV5IGFyZSBuZWdhdGl2ZQoJCQkJ bWF0Y2hbMl0gPSAodGVzdFsxXSArICh0ZXN0WzJdIHx8IDEpKSAtIDA7CgkJCQlt YXRjaFszXSA9IHRlc3RbM10gLSAwOwoJCQl9CgkJCWVsc2UgaWYgKCBtYXRjaFsy XSApIHsKCQkJCVNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTsKCQkJfQoKCQkJLy8g VE9ETzogTW92ZSB0byBub3JtYWwgY2FjaGluZyBzeXN0ZW0KCQkJbWF0Y2hbMF0g PSBkb25lKys7CgoJCQlyZXR1cm4gbWF0Y2g7CgkJfSwKCgkJQVRUUjogZnVuY3Rp b24oIG1hdGNoLCBjdXJMb29wLCBpbnBsYWNlLCByZXN1bHQsIG5vdCwgaXNYTUwg KSB7CgkJCXZhciBuYW1lID0gbWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNlKCBy QmFja3NsYXNoLCAiIiApOwoKCQkJaWYgKCAhaXNYTUwgJiYgRXhwci5hdHRyTWFw W25hbWVdICkgewoJCQkJbWF0Y2hbMV0gPSBFeHByLmF0dHJNYXBbbmFtZV07CgkJ CX0KCgkJCS8vIEhhbmRsZSBpZiBhbiB1bi1xdW90ZWQgdmFsdWUgd2FzIHVzZWQK CQkJbWF0Y2hbNF0gPSAoIG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8ICIiICkucmVw bGFjZSggckJhY2tzbGFzaCwgIiIgKTsKCgkJCWlmICggbWF0Y2hbMl0gPT09ICJ+ PSIgKSB7CgkJCQltYXRjaFs0XSA9ICIgIiArIG1hdGNoWzRdICsgIiAiOwoJCQl9 CgoJCQlyZXR1cm4gbWF0Y2g7CgkJfSwKCgkJUFNFVURPOiBmdW5jdGlvbiggbWF0 Y2gsIGN1ckxvb3AsIGlucGxhY2UsIHJlc3VsdCwgbm90ICkgewoJCQlpZiAoIG1h dGNoWzFdID09PSAibm90IiApIHsKCQkJCS8vIElmIHdlJ3JlIGRlYWxpbmcgd2l0 aCBhIGNvbXBsZXggZXhwcmVzc2lvbiwgb3IgYSBzaW1wbGUgb25lCgkJCQlpZiAo ICggY2h1bmtlci5leGVjKG1hdGNoWzNdKSB8fCAiIiApLmxlbmd0aCA+IDEgfHwg L15cdy8udGVzdChtYXRjaFszXSkgKSB7CgkJCQkJbWF0Y2hbM10gPSBTaXp6bGUo bWF0Y2hbM10sIG51bGwsIG51bGwsIGN1ckxvb3ApOwoKCQkJCX0gZWxzZSB7CgkJ CQkJdmFyIHJldCA9IFNpenpsZS5maWx0ZXIobWF0Y2hbM10sIGN1ckxvb3AsIGlu cGxhY2UsIHRydWUgXiBub3QpOwoKCQkJCQlpZiAoICFpbnBsYWNlICkgewoJCQkJ CQlyZXN1bHQucHVzaC5hcHBseSggcmVzdWx0LCByZXQgKTsKCQkJCQl9CgoJCQkJ CXJldHVybiBmYWxzZTsKCQkJCX0KCgkJCX0gZWxzZSBpZiAoIEV4cHIubWF0Y2gu UE9TLnRlc3QoIG1hdGNoWzBdICkgfHwgRXhwci5tYXRjaC5DSElMRC50ZXN0KCBt YXRjaFswXSApICkgewoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCgkJCXJldHVybiBt YXRjaDsKCQl9LAoKCQlQT1M6IGZ1bmN0aW9uKCBtYXRjaCApIHsKCQkJbWF0Y2gu dW5zaGlmdCggdHJ1ZSApOwoKCQkJcmV0dXJuIG1hdGNoOwoJCX0KCX0sCgoJZmls dGVyczogewoJCWVuYWJsZWQ6IGZ1bmN0aW9uKCBlbGVtICkgewoJCQlyZXR1cm4g ZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2UgJiYgZWxlbS50eXBlICE9PSAiaGlkZGVu IjsKCQl9LAoKCQlkaXNhYmxlZDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXJldHVy biBlbGVtLmRpc2FibGVkID09PSB0cnVlOwoJCX0sCgoJCWNoZWNrZWQ6IGZ1bmN0 aW9uKCBlbGVtICkgewoJCQlyZXR1cm4gZWxlbS5jaGVja2VkID09PSB0cnVlOwoJ CX0sCgoJCXNlbGVjdGVkOiBmdW5jdGlvbiggZWxlbSApIHsKCQkJLy8gQWNjZXNz aW5nIHRoaXMgcHJvcGVydHkgbWFrZXMgc2VsZWN0ZWQtYnktZGVmYXVsdAoJCQkv LyBvcHRpb25zIGluIFNhZmFyaSB3b3JrIHByb3Blcmx5CgkJCWlmICggZWxlbS5w YXJlbnROb2RlICkgewoJCQkJZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7 CgkJCX0KCgkJCXJldHVybiBlbGVtLnNlbGVjdGVkID09PSB0cnVlOwoJCX0sCgoJ CXBhcmVudDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXJldHVybiAhIWVsZW0uZmly c3RDaGlsZDsKCQl9LAoKCQllbXB0eTogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXJl dHVybiAhZWxlbS5maXJzdENoaWxkOwoJCX0sCgoJCWhhczogZnVuY3Rpb24oIGVs ZW0sIGksIG1hdGNoICkgewoJCQlyZXR1cm4gISFTaXp6bGUoIG1hdGNoWzNdLCBl bGVtICkubGVuZ3RoOwoJCX0sCgoJCWhlYWRlcjogZnVuY3Rpb24oIGVsZW0gKSB7 CgkJCXJldHVybiAoL2hcZC9pKS50ZXN0KCBlbGVtLm5vZGVOYW1lICk7CgkJfSwK CgkJdGV4dDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXZhciBhdHRyID0gZWxlbS5n ZXRBdHRyaWJ1dGUoICJ0eXBlIiApLCB0eXBlID0gZWxlbS50eXBlOwoJCQkvLyBJ RTYgYW5kIDcgd2lsbCBtYXAgZWxlbS50eXBlIHRvICd0ZXh0JyBmb3IgbmV3IEhU TUw1IHR5cGVzIChzZWFyY2gsIGV0YykKCQkJLy8gdXNlIGdldEF0dHJpYnV0ZSBp bnN0ZWFkIHRvIHRlc3QgdGhpcyBjYXNlCgkJCXJldHVybiBlbGVtLm5vZGVOYW1l LnRvTG93ZXJDYXNlKCkgPT09ICJpbnB1dCIgJiYgInRleHQiID09PSB0eXBlICYm ICggYXR0ciA9PT0gdHlwZSB8fCBhdHRyID09PSBudWxsICk7CgkJfSwKCgkJcmFk aW86IGZ1bmN0aW9uKCBlbGVtICkgewoJCQlyZXR1cm4gZWxlbS5ub2RlTmFtZS50 b0xvd2VyQ2FzZSgpID09PSAiaW5wdXQiICYmICJyYWRpbyIgPT09IGVsZW0udHlw ZTsKCQl9LAoKCQljaGVja2JveDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXJldHVy biBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICJpbnB1dCIgJiYgImNo ZWNrYm94IiA9PT0gZWxlbS50eXBlOwoJCX0sCgoJCWZpbGU6IGZ1bmN0aW9uKCBl bGVtICkgewoJCQlyZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09 PSAiaW5wdXQiICYmICJmaWxlIiA9PT0gZWxlbS50eXBlOwoJCX0sCgoJCXBhc3N3 b3JkOiBmdW5jdGlvbiggZWxlbSApIHsKCQkJcmV0dXJuIGVsZW0ubm9kZU5hbWUu dG9Mb3dlckNhc2UoKSA9PT0gImlucHV0IiAmJiAicGFzc3dvcmQiID09PSBlbGVt LnR5cGU7CgkJfSwKCgkJc3VibWl0OiBmdW5jdGlvbiggZWxlbSApIHsKCQkJdmFy IG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CgkJCXJldHVybiAo bmFtZSA9PT0gImlucHV0IiB8fCBuYW1lID09PSAiYnV0dG9uIikgJiYgInN1Ym1p dCIgPT09IGVsZW0udHlwZTsKCQl9LAoKCQlpbWFnZTogZnVuY3Rpb24oIGVsZW0g KSB7CgkJCXJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICJp bnB1dCIgJiYgImltYWdlIiA9PT0gZWxlbS50eXBlOwoJCX0sCgoJCXJlc2V0OiBm dW5jdGlvbiggZWxlbSApIHsKCQkJdmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRv TG93ZXJDYXNlKCk7CgkJCXJldHVybiAobmFtZSA9PT0gImlucHV0IiB8fCBuYW1l ID09PSAiYnV0dG9uIikgJiYgInJlc2V0IiA9PT0gZWxlbS50eXBlOwoJCX0sCgoJ CWJ1dHRvbjogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXZhciBuYW1lID0gZWxlbS5u b2RlTmFtZS50b0xvd2VyQ2FzZSgpOwoJCQlyZXR1cm4gbmFtZSA9PT0gImlucHV0 IiAmJiAiYnV0dG9uIiA9PT0gZWxlbS50eXBlIHx8IG5hbWUgPT09ICJidXR0b24i OwoJCX0sCgoJCWlucHV0OiBmdW5jdGlvbiggZWxlbSApIHsKCQkJcmV0dXJuICgv aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbi9pKS50ZXN0KCBlbGVtLm5vZGVO YW1lICk7CgkJfSwKCgkJZm9jdXM6IGZ1bmN0aW9uKCBlbGVtICkgewoJCQlyZXR1 cm4gZWxlbSA9PT0gZWxlbS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7CgkJ fQoJfSwKCXNldEZpbHRlcnM6IHsKCQlmaXJzdDogZnVuY3Rpb24oIGVsZW0sIGkg KSB7CgkJCXJldHVybiBpID09PSAwOwoJCX0sCgoJCWxhc3Q6IGZ1bmN0aW9uKCBl bGVtLCBpLCBtYXRjaCwgYXJyYXkgKSB7CgkJCXJldHVybiBpID09PSBhcnJheS5s ZW5ndGggLSAxOwoJCX0sCgoJCWV2ZW46IGZ1bmN0aW9uKCBlbGVtLCBpICkgewoJ CQlyZXR1cm4gaSAlIDIgPT09IDA7CgkJfSwKCgkJb2RkOiBmdW5jdGlvbiggZWxl bSwgaSApIHsKCQkJcmV0dXJuIGkgJSAyID09PSAxOwoJCX0sCgoJCWx0OiBmdW5j dGlvbiggZWxlbSwgaSwgbWF0Y2ggKSB7CgkJCXJldHVybiBpIDwgbWF0Y2hbM10g LSAwOwoJCX0sCgoJCWd0OiBmdW5jdGlvbiggZWxlbSwgaSwgbWF0Y2ggKSB7CgkJ CXJldHVybiBpID4gbWF0Y2hbM10gLSAwOwoJCX0sCgoJCW50aDogZnVuY3Rpb24o IGVsZW0sIGksIG1hdGNoICkgewoJCQlyZXR1cm4gbWF0Y2hbM10gLSAwID09PSBp OwoJCX0sCgoJCWVxOiBmdW5jdGlvbiggZWxlbSwgaSwgbWF0Y2ggKSB7CgkJCXJl dHVybiBtYXRjaFszXSAtIDAgPT09IGk7CgkJfQoJfSwKCWZpbHRlcjogewoJCVBT RVVETzogZnVuY3Rpb24oIGVsZW0sIG1hdGNoLCBpLCBhcnJheSApIHsKCQkJdmFy IG5hbWUgPSBtYXRjaFsxXSwKCQkJCWZpbHRlciA9IEV4cHIuZmlsdGVyc1sgbmFt ZSBdOwoKCQkJaWYgKCBmaWx0ZXIgKSB7CgkJCQlyZXR1cm4gZmlsdGVyKCBlbGVt LCBpLCBtYXRjaCwgYXJyYXkgKTsKCgkJCX0gZWxzZSBpZiAoIG5hbWUgPT09ICJj b250YWlucyIgKSB7CgkJCQlyZXR1cm4gKGVsZW0udGV4dENvbnRlbnQgfHwgZWxl bS5pbm5lclRleHQgfHwgZ2V0VGV4dChbIGVsZW0gXSkgfHwgIiIpLmluZGV4T2Yo bWF0Y2hbM10pID49IDA7CgoJCQl9IGVsc2UgaWYgKCBuYW1lID09PSAibm90IiAp IHsKCQkJCXZhciBub3QgPSBtYXRjaFszXTsKCgkJCQlmb3IgKCB2YXIgaiA9IDAs IGwgPSBub3QubGVuZ3RoOyBqIDwgbDsgaisrICkgewoJCQkJCWlmICggbm90W2pd ID09PSBlbGVtICkgewoJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJfQoJCQkJfQoK CQkJCXJldHVybiB0cnVlOwoKCQkJfSBlbHNlIHsKCQkJCVNpenpsZS5lcnJvcigg bmFtZSApOwoJCQl9CgkJfSwKCgkJQ0hJTEQ6IGZ1bmN0aW9uKCBlbGVtLCBtYXRj aCApIHsKCQkJdmFyIGZpcnN0LCBsYXN0LAoJCQkJZG9uZU5hbWUsIHBhcmVudCwg Y2FjaGUsCgkJCQljb3VudCwgZGlmZiwKCQkJCXR5cGUgPSBtYXRjaFsxXSwKCQkJ CW5vZGUgPSBlbGVtOwoKCQkJc3dpdGNoICggdHlwZSApIHsKCQkJCWNhc2UgIm9u bHkiOgoJCQkJY2FzZSAiZmlyc3QiOgoJCQkJCXdoaWxlICggKG5vZGUgPSBub2Rl LnByZXZpb3VzU2libGluZykgKSB7CgkJCQkJCWlmICggbm9kZS5ub2RlVHlwZSA9 PT0gMSApIHsKCQkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQkJfQoJCQkJCX0KCgkJ CQkJaWYgKCB0eXBlID09PSAiZmlyc3QiICkgewoJCQkJCQlyZXR1cm4gdHJ1ZTsK CQkJCQl9CgoJCQkJCW5vZGUgPSBlbGVtOwoKCQkJCQkvKiBmYWxscyB0aHJvdWdo ICovCgkJCQljYXNlICJsYXN0IjoKCQkJCQl3aGlsZSAoIChub2RlID0gbm9kZS5u ZXh0U2libGluZykgKSB7CgkJCQkJCWlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSAp IHsKCQkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQkJfQoJCQkJCX0KCgkJCQkJcmV0 dXJuIHRydWU7CgoJCQkJY2FzZSAibnRoIjoKCQkJCQlmaXJzdCA9IG1hdGNoWzJd OwoJCQkJCWxhc3QgPSBtYXRjaFszXTsKCgkJCQkJaWYgKCBmaXJzdCA9PT0gMSAm JiBsYXN0ID09PSAwICkgewoJCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCQl9CgoJCQkJ CWRvbmVOYW1lID0gbWF0Y2hbMF07CgkJCQkJcGFyZW50ID0gZWxlbS5wYXJlbnRO b2RlOwoKCQkJCQlpZiAoIHBhcmVudCAmJiAocGFyZW50WyBleHBhbmRvIF0gIT09 IGRvbmVOYW1lIHx8ICFlbGVtLm5vZGVJbmRleCkgKSB7CgkJCQkJCWNvdW50ID0g MDsKCgkJCQkJCWZvciAoIG5vZGUgPSBwYXJlbnQuZmlyc3RDaGlsZDsgbm9kZTsg bm9kZSA9IG5vZGUubmV4dFNpYmxpbmcgKSB7CgkJCQkJCQlpZiAoIG5vZGUubm9k ZVR5cGUgPT09IDEgKSB7CgkJCQkJCQkJbm9kZS5ub2RlSW5kZXggPSArK2NvdW50 OwoJCQkJCQkJfQoJCQkJCQl9CgoJCQkJCQlwYXJlbnRbIGV4cGFuZG8gXSA9IGRv bmVOYW1lOwoJCQkJCX0KCgkJCQkJZGlmZiA9IGVsZW0ubm9kZUluZGV4IC0gbGFz dDsKCgkJCQkJaWYgKCBmaXJzdCA9PT0gMCApIHsKCQkJCQkJcmV0dXJuIGRpZmYg PT09IDA7CgoJCQkJCX0gZWxzZSB7CgkJCQkJCXJldHVybiAoIGRpZmYgJSBmaXJz dCA9PT0gMCAmJiBkaWZmIC8gZmlyc3QgPj0gMCApOwoJCQkJCX0KCQkJfQoJCX0s CgoJCUlEOiBmdW5jdGlvbiggZWxlbSwgbWF0Y2ggKSB7CgkJCXJldHVybiBlbGVt Lm5vZGVUeXBlID09PSAxICYmIGVsZW0uZ2V0QXR0cmlidXRlKCJpZCIpID09PSBt YXRjaDsKCQl9LAoKCQlUQUc6IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCApIHsKCQkJ cmV0dXJuIChtYXRjaCA9PT0gIioiICYmIGVsZW0ubm9kZVR5cGUgPT09IDEpIHx8 ICEhZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkg PT09IG1hdGNoOwoJCX0sCgoJCUNMQVNTOiBmdW5jdGlvbiggZWxlbSwgbWF0Y2gg KSB7CgkJCXJldHVybiAoIiAiICsgKGVsZW0uY2xhc3NOYW1lIHx8IGVsZW0uZ2V0 QXR0cmlidXRlKCJjbGFzcyIpKSArICIgIikKCQkJCS5pbmRleE9mKCBtYXRjaCAp ID4gLTE7CgkJfSwKCgkJQVRUUjogZnVuY3Rpb24oIGVsZW0sIG1hdGNoICkgewoJ CQl2YXIgbmFtZSA9IG1hdGNoWzFdLAoJCQkJcmVzdWx0ID0gU2l6emxlLmF0dHIg PwoJCQkJCVNpenpsZS5hdHRyKCBlbGVtLCBuYW1lICkgOgoJCQkJCUV4cHIuYXR0 ckhhbmRsZVsgbmFtZSBdID8KCQkJCQlFeHByLmF0dHJIYW5kbGVbIG5hbWUgXSgg ZWxlbSApIDoKCQkJCQllbGVtWyBuYW1lIF0gIT0gbnVsbCA/CgkJCQkJCWVsZW1b IG5hbWUgXSA6CgkJCQkJCWVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICksCgkJCQl2 YWx1ZSA9IHJlc3VsdCArICIiLAoJCQkJdHlwZSA9IG1hdGNoWzJdLAoJCQkJY2hl Y2sgPSBtYXRjaFs0XTsKCgkJCXJldHVybiByZXN1bHQgPT0gbnVsbCA/CgkJCQl0 eXBlID09PSAiIT0iIDoKCQkJCSF0eXBlICYmIFNpenpsZS5hdHRyID8KCQkJCXJl c3VsdCAhPSBudWxsIDoKCQkJCXR5cGUgPT09ICI9IiA/CgkJCQl2YWx1ZSA9PT0g Y2hlY2sgOgoJCQkJdHlwZSA9PT0gIio9IiA/CgkJCQl2YWx1ZS5pbmRleE9mKGNo ZWNrKSA+PSAwIDoKCQkJCXR5cGUgPT09ICJ+PSIgPwoJCQkJKCIgIiArIHZhbHVl ICsgIiAiKS5pbmRleE9mKGNoZWNrKSA+PSAwIDoKCQkJCSFjaGVjayA/CgkJCQl2 YWx1ZSAmJiByZXN1bHQgIT09IGZhbHNlIDoKCQkJCXR5cGUgPT09ICIhPSIgPwoJ CQkJdmFsdWUgIT09IGNoZWNrIDoKCQkJCXR5cGUgPT09ICJePSIgPwoJCQkJdmFs dWUuaW5kZXhPZihjaGVjaykgPT09IDAgOgoJCQkJdHlwZSA9PT0gIiQ9IiA/CgkJ CQl2YWx1ZS5zdWJzdHIodmFsdWUubGVuZ3RoIC0gY2hlY2subGVuZ3RoKSA9PT0g Y2hlY2sgOgoJCQkJdHlwZSA9PT0gInw9IiA/CgkJCQl2YWx1ZSA9PT0gY2hlY2sg fHwgdmFsdWUuc3Vic3RyKDAsIGNoZWNrLmxlbmd0aCArIDEpID09PSBjaGVjayAr ICItIiA6CgkJCQlmYWxzZTsKCQl9LAoKCQlQT1M6IGZ1bmN0aW9uKCBlbGVtLCBt YXRjaCwgaSwgYXJyYXkgKSB7CgkJCXZhciBuYW1lID0gbWF0Y2hbMl0sCgkJCQlm aWx0ZXIgPSBFeHByLnNldEZpbHRlcnNbIG5hbWUgXTsKCgkJCWlmICggZmlsdGVy ICkgewoJCQkJcmV0dXJuIGZpbHRlciggZWxlbSwgaSwgbWF0Y2gsIGFycmF5ICk7 CgkJCX0KCQl9Cgl9Cn07Cgp2YXIgb3JpZ1BPUyA9IEV4cHIubWF0Y2guUE9TLAoJ ZmVzY2FwZSA9IGZ1bmN0aW9uKGFsbCwgbnVtKXsKCQlyZXR1cm4gIlxcIiArIChu dW0gLSAwICsgMSk7Cgl9OwoKZm9yICggdmFyIHR5cGUgaW4gRXhwci5tYXRjaCAp IHsKCUV4cHIubWF0Y2hbIHR5cGUgXSA9IG5ldyBSZWdFeHAoIEV4cHIubWF0Y2hb IHR5cGUgXS5zb3VyY2UgKyAoLyg/IVteXFtdKlxdKSg/IVteXChdKlwpKS8uc291 cmNlKSApOwoJRXhwci5sZWZ0TWF0Y2hbIHR5cGUgXSA9IG5ldyBSZWdFeHAoIC8o Xig/Oi58XHJ8XG4pKj8pLy5zb3VyY2UgKyBFeHByLm1hdGNoWyB0eXBlIF0uc291 cmNlLnJlcGxhY2UoL1xcKFxkKykvZywgZmVzY2FwZSkgKTsKfQovLyBFeHBvc2Ug b3JpZ1BPUwovLyAiZ2xvYmFsIiBhcyBpbiByZWdhcmRsZXNzIG9mIHJlbGF0aW9u IHRvIGJyYWNrZXRzL3BhcmVucwpFeHByLm1hdGNoLmdsb2JhbFBPUyA9IG9yaWdQ T1M7Cgp2YXIgbWFrZUFycmF5ID0gZnVuY3Rpb24oIGFycmF5LCByZXN1bHRzICkg ewoJYXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCggYXJyYXksIDAg KTsKCglpZiAoIHJlc3VsdHMgKSB7CgkJcmVzdWx0cy5wdXNoLmFwcGx5KCByZXN1 bHRzLCBhcnJheSApOwoJCXJldHVybiByZXN1bHRzOwoJfQoKCXJldHVybiBhcnJh eTsKfTsKCi8vIFBlcmZvcm0gYSBzaW1wbGUgY2hlY2sgdG8gZGV0ZXJtaW5lIGlm IHRoZSBicm93c2VyIGlzIGNhcGFibGUgb2YKLy8gY29udmVydGluZyBhIE5vZGVM aXN0IHRvIGFuIGFycmF5IHVzaW5nIGJ1aWx0aW4gbWV0aG9kcy4KLy8gQWxzbyB2 ZXJpZmllcyB0aGF0IHRoZSByZXR1cm5lZCBhcnJheSBob2xkcyBET00gbm9kZXMK Ly8gKHdoaWNoIGlzIG5vdCB0aGUgY2FzZSBpbiB0aGUgQmxhY2tiZXJyeSBicm93 c2VyKQp0cnkgewoJQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoIGRvY3VtZW50 LmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLCAwIClbMF0ubm9kZVR5cGU7Cgov LyBQcm92aWRlIGEgZmFsbGJhY2sgbWV0aG9kIGlmIGl0IGRvZXMgbm90IHdvcmsK fSBjYXRjaCggZSApIHsKCW1ha2VBcnJheSA9IGZ1bmN0aW9uKCBhcnJheSwgcmVz dWx0cyApIHsKCQl2YXIgaSA9IDAsCgkJCXJldCA9IHJlc3VsdHMgfHwgW107CgoJ CWlmICggdG9TdHJpbmcuY2FsbChhcnJheSkgPT09ICJbb2JqZWN0IEFycmF5XSIg KSB7CgkJCUFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KCByZXQsIGFycmF5ICk7 CgoJCX0gZWxzZSB7CgkJCWlmICggdHlwZW9mIGFycmF5Lmxlbmd0aCA9PT0gIm51 bWJlciIgKSB7CgkJCQlmb3IgKCB2YXIgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7 IGkrKyApIHsKCQkJCQlyZXQucHVzaCggYXJyYXlbaV0gKTsKCQkJCX0KCgkJCX0g ZWxzZSB7CgkJCQlmb3IgKCA7IGFycmF5W2ldOyBpKysgKSB7CgkJCQkJcmV0LnB1 c2goIGFycmF5W2ldICk7CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVybiByZXQ7Cgl9 Owp9Cgp2YXIgc29ydE9yZGVyLCBzaWJsaW5nQ2hlY2s7CgppZiAoIGRvY3VtZW50 LmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiApIHsKCXNv cnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkgewoJCWlmICggYSA9PT0gYiApIHsK CQkJaGFzRHVwbGljYXRlID0gdHJ1ZTsKCQkJcmV0dXJuIDA7CgkJfQoKCQlpZiAo ICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIHx8ICFiLmNvbXBhcmVEb2N1bWVu dFBvc2l0aW9uICkgewoJCQlyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlv biA/IC0xIDogMTsKCQl9CgoJCXJldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0 aW9uKGIpICYgNCA/IC0xIDogMTsKCX07Cgp9IGVsc2UgewoJc29ydE9yZGVyID0g ZnVuY3Rpb24oIGEsIGIgKSB7CgkJLy8gVGhlIG5vZGVzIGFyZSBpZGVudGljYWws IHdlIGNhbiBleGl0IGVhcmx5CgkJaWYgKCBhID09PSBiICkgewoJCQloYXNEdXBs aWNhdGUgPSB0cnVlOwoJCQlyZXR1cm4gMDsKCgkJLy8gRmFsbGJhY2sgdG8gdXNp bmcgc291cmNlSW5kZXggKGluIElFKSBpZiBpdCdzIGF2YWlsYWJsZSBvbiBib3Ro IG5vZGVzCgkJfSBlbHNlIGlmICggYS5zb3VyY2VJbmRleCAmJiBiLnNvdXJjZUlu ZGV4ICkgewoJCQlyZXR1cm4gYS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7 CgkJfQoKCQl2YXIgYWwsIGJsLAoJCQlhcCA9IFtdLAoJCQlicCA9IFtdLAoJCQlh dXAgPSBhLnBhcmVudE5vZGUsCgkJCWJ1cCA9IGIucGFyZW50Tm9kZSwKCQkJY3Vy ID0gYXVwOwoKCQkvLyBJZiB0aGUgbm9kZXMgYXJlIHNpYmxpbmdzIChvciBpZGVu dGljYWwpIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrCgkJaWYgKCBhdXAgPT09IGJ1 cCApIHsKCQkJcmV0dXJuIHNpYmxpbmdDaGVjayggYSwgYiApOwoKCQkvLyBJZiBu byBwYXJlbnRzIHdlcmUgZm91bmQgdGhlbiB0aGUgbm9kZXMgYXJlIGRpc2Nvbm5l Y3RlZAoJCX0gZWxzZSBpZiAoICFhdXAgKSB7CgkJCXJldHVybiAtMTsKCgkJfSBl bHNlIGlmICggIWJ1cCApIHsKCQkJcmV0dXJuIDE7CgkJfQoKCQkvLyBPdGhlcndp c2UgdGhleSdyZSBzb21ld2hlcmUgZWxzZSBpbiB0aGUgdHJlZSBzbyB3ZSBuZWVk CgkJLy8gdG8gYnVpbGQgdXAgYSBmdWxsIGxpc3Qgb2YgdGhlIHBhcmVudE5vZGVz IGZvciBjb21wYXJpc29uCgkJd2hpbGUgKCBjdXIgKSB7CgkJCWFwLnVuc2hpZnQo IGN1ciApOwoJCQljdXIgPSBjdXIucGFyZW50Tm9kZTsKCQl9CgoJCWN1ciA9IGJ1 cDsKCgkJd2hpbGUgKCBjdXIgKSB7CgkJCWJwLnVuc2hpZnQoIGN1ciApOwoJCQlj dXIgPSBjdXIucGFyZW50Tm9kZTsKCQl9CgoJCWFsID0gYXAubGVuZ3RoOwoJCWJs ID0gYnAubGVuZ3RoOwoKCQkvLyBTdGFydCB3YWxraW5nIGRvd24gdGhlIHRyZWUg bG9va2luZyBmb3IgYSBkaXNjcmVwYW5jeQoJCWZvciAoIHZhciBpID0gMDsgaSA8 IGFsICYmIGkgPCBibDsgaSsrICkgewoJCQlpZiAoIGFwW2ldICE9PSBicFtpXSAp IHsKCQkJCXJldHVybiBzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApOwoJCQl9 CgkJfQoKCQkvLyBXZSBlbmRlZCBzb21lcGxhY2UgdXAgdGhlIHRyZWUgc28gZG8g YSBzaWJsaW5nIGNoZWNrCgkJcmV0dXJuIGkgPT09IGFsID8KCQkJc2libGluZ0No ZWNrKCBhLCBicFtpXSwgLTEgKSA6CgkJCXNpYmxpbmdDaGVjayggYXBbaV0sIGIs IDEgKTsKCX07CgoJc2libGluZ0NoZWNrID0gZnVuY3Rpb24oIGEsIGIsIHJldCAp IHsKCQlpZiAoIGEgPT09IGIgKSB7CgkJCXJldHVybiByZXQ7CgkJfQoKCQl2YXIg Y3VyID0gYS5uZXh0U2libGluZzsKCgkJd2hpbGUgKCBjdXIgKSB7CgkJCWlmICgg Y3VyID09PSBiICkgewoJCQkJcmV0dXJuIC0xOwoJCQl9CgoJCQljdXIgPSBjdXIu bmV4dFNpYmxpbmc7CgkJfQoKCQlyZXR1cm4gMTsKCX07Cn0KCi8vIENoZWNrIHRv IHNlZSBpZiB0aGUgYnJvd3NlciByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWUgd2hl bgovLyBxdWVyeWluZyBieSBnZXRFbGVtZW50QnlJZCAoYW5kIHByb3ZpZGUgYSB3 b3JrYXJvdW5kKQooZnVuY3Rpb24oKXsKCS8vIFdlJ3JlIGdvaW5nIHRvIGluamVj dCBhIGZha2UgaW5wdXQgZWxlbWVudCB3aXRoIGEgc3BlY2lmaWVkIG5hbWUKCXZh ciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksCgkJaWQgPSAi c2NyaXB0IiArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCksCgkJcm9vdCA9IGRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudDsKCglmb3JtLmlubmVySFRNTCA9ICI8YSBuYW1l PSciICsgaWQgKyAiJy8+IjsKCgkvLyBJbmplY3QgaXQgaW50byB0aGUgcm9vdCBl bGVtZW50LCBjaGVjayBpdHMgc3RhdHVzLCBhbmQgcmVtb3ZlIGl0IHF1aWNrbHkK CXJvb3QuaW5zZXJ0QmVmb3JlKCBmb3JtLCByb290LmZpcnN0Q2hpbGQgKTsKCgkv LyBUaGUgd29ya2Fyb3VuZCBoYXMgdG8gZG8gYWRkaXRpb25hbCBjaGVja3MgYWZ0 ZXIgYSBnZXRFbGVtZW50QnlJZAoJLy8gV2hpY2ggc2xvd3MgdGhpbmdzIGRvd24g Zm9yIG90aGVyIGJyb3dzZXJzIChoZW5jZSB0aGUgYnJhbmNoaW5nKQoJaWYgKCBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCggaWQgKSApIHsKCQlFeHByLmZpbmQuSUQg PSBmdW5jdGlvbiggbWF0Y2gsIGNvbnRleHQsIGlzWE1MICkgewoJCQlpZiAoIHR5 cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSAidW5kZWZpbmVkIiAmJiAh aXNYTUwgKSB7CgkJCQl2YXIgbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQobWF0 Y2hbMV0pOwoKCQkJCXJldHVybiBtID8KCQkJCQltLmlkID09PSBtYXRjaFsxXSB8 fCB0eXBlb2YgbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSAidW5kZWZpbmVkIiAmJiBt LmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlID09PSBtYXRjaFsxXSA/ CgkJCQkJCVttXSA6CgkJCQkJCXVuZGVmaW5lZCA6CgkJCQkJW107CgkJCX0KCQl9 OwoKCQlFeHByLmZpbHRlci5JRCA9IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCApIHsK CQkJdmFyIG5vZGUgPSB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSAi dW5kZWZpbmVkIiAmJiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7CgoJCQly ZXR1cm4gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiBub2RlICYmIG5vZGUubm9kZVZh bHVlID09PSBtYXRjaDsKCQl9OwoJfQoKCXJvb3QucmVtb3ZlQ2hpbGQoIGZvcm0g KTsKCgkvLyByZWxlYXNlIG1lbW9yeSBpbiBJRQoJcm9vdCA9IGZvcm0gPSBudWxs Owp9KSgpOwoKKGZ1bmN0aW9uKCl7CgkvLyBDaGVjayB0byBzZWUgaWYgdGhlIGJy b3dzZXIgcmV0dXJucyBvbmx5IGVsZW1lbnRzCgkvLyB3aGVuIGRvaW5nIGdldEVs ZW1lbnRzQnlUYWdOYW1lKCIqIikKCgkvLyBDcmVhdGUgYSBmYWtlIGVsZW1lbnQK CXZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKCWRpdi5h cHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIikgKTsKCgkvLyBN YWtlIHN1cmUgbm8gY29tbWVudHMgYXJlIGZvdW5kCglpZiAoIGRpdi5nZXRFbGVt ZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCA+IDAgKSB7CgkJRXhwci5maW5kLlRB RyA9IGZ1bmN0aW9uKCBtYXRjaCwgY29udGV4dCApIHsKCQkJdmFyIHJlc3VsdHMg PSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBtYXRjaFsxXSApOwoKCQkJ Ly8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50cwoJCQlpZiAoIG1hdGNoWzFd ID09PSAiKiIgKSB7CgkJCQl2YXIgdG1wID0gW107CgoJCQkJZm9yICggdmFyIGkg PSAwOyByZXN1bHRzW2ldOyBpKysgKSB7CgkJCQkJaWYgKCByZXN1bHRzW2ldLm5v ZGVUeXBlID09PSAxICkgewoJCQkJCQl0bXAucHVzaCggcmVzdWx0c1tpXSApOwoJ CQkJCX0KCQkJCX0KCgkJCQlyZXN1bHRzID0gdG1wOwoJCQl9CgoJCQlyZXR1cm4g cmVzdWx0czsKCQl9OwoJfQoKCS8vIENoZWNrIHRvIHNlZSBpZiBhbiBhdHRyaWJ1 dGUgcmV0dXJucyBub3JtYWxpemVkIGhyZWYgYXR0cmlidXRlcwoJZGl2LmlubmVy SFRNTCA9ICI8YSBocmVmPScjJz48L2E+IjsKCglpZiAoIGRpdi5maXJzdENoaWxk ICYmIHR5cGVvZiBkaXYuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUgIT09ICJ1bmRl ZmluZWQiICYmCgkJCWRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIp ICE9PSAiIyIgKSB7CgoJCUV4cHIuYXR0ckhhbmRsZS5ocmVmID0gZnVuY3Rpb24o IGVsZW0gKSB7CgkJCXJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggImhyZWYiLCAy ICk7CgkJfTsKCX0KCgkvLyByZWxlYXNlIG1lbW9yeSBpbiBJRQoJZGl2ID0gbnVs bDsKfSkoKTsKCmlmICggZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCApIHsKCShm dW5jdGlvbigpewoJCXZhciBvbGRTaXp6bGUgPSBTaXp6bGUsCgkJCWRpdiA9IGRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLAoJCQlpZCA9ICJfX3NpenpsZV9f IjsKCgkJZGl2LmlubmVySFRNTCA9ICI8cCBjbGFzcz0nVEVTVCc+PC9wPiI7CgoJ CS8vIFNhZmFyaSBjYW4ndCBoYW5kbGUgdXBwZXJjYXNlIG9yIHVuaWNvZGUgY2hh cmFjdGVycyB3aGVuCgkJLy8gaW4gcXVpcmtzIG1vZGUuCgkJaWYgKCBkaXYucXVl cnlTZWxlY3RvckFsbCAmJiBkaXYucXVlcnlTZWxlY3RvckFsbCgiLlRFU1QiKS5s ZW5ndGggPT09IDAgKSB7CgkJCXJldHVybjsKCQl9CgoJCVNpenpsZSA9IGZ1bmN0 aW9uKCBxdWVyeSwgY29udGV4dCwgZXh0cmEsIHNlZWQgKSB7CgkJCWNvbnRleHQg PSBjb250ZXh0IHx8IGRvY3VtZW50OwoKCQkJLy8gT25seSB1c2UgcXVlcnlTZWxl Y3RvckFsbCBvbiBub24tWE1MIGRvY3VtZW50cwoJCQkvLyAoSUQgc2VsZWN0b3Jz IGRvbid0IHdvcmsgaW4gbm9uLUhUTUwgZG9jdW1lbnRzKQoJCQlpZiAoICFzZWVk ICYmICFTaXp6bGUuaXNYTUwoY29udGV4dCkgKSB7CgkJCQkvLyBTZWUgaWYgd2Ug ZmluZCBhIHNlbGVjdG9yIHRvIHNwZWVkIHVwCgkJCQl2YXIgbWF0Y2ggPSAvXihc dyskKXxeXC4oW1x3XC1dKyQpfF4jKFtcd1wtXSskKS8uZXhlYyggcXVlcnkgKTsK CgkJCQlpZiAoIG1hdGNoICYmIChjb250ZXh0Lm5vZGVUeXBlID09PSAxIHx8IGNv bnRleHQubm9kZVR5cGUgPT09IDkpICkgewoJCQkJCS8vIFNwZWVkLXVwOiBTaXp6 bGUoIlRBRyIpCgkJCQkJaWYgKCBtYXRjaFsxXSApIHsKCQkJCQkJcmV0dXJuIG1h a2VBcnJheSggY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggcXVlcnkgKSwg ZXh0cmEgKTsKCgkJCQkJLy8gU3BlZWQtdXA6IFNpenpsZSgiLkNMQVNTIikKCQkJ CQl9IGVsc2UgaWYgKCBtYXRjaFsyXSAmJiBFeHByLmZpbmQuQ0xBU1MgJiYgY29u dGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICkgewoJCQkJCQlyZXR1cm4gbWFr ZUFycmF5KCBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIG1hdGNoWzJd ICksIGV4dHJhICk7CgkJCQkJfQoJCQkJfQoKCQkJCWlmICggY29udGV4dC5ub2Rl VHlwZSA9PT0gOSApIHsKCQkJCQkvLyBTcGVlZC11cDogU2l6emxlKCJib2R5IikK CQkJCQkvLyBUaGUgYm9keSBlbGVtZW50IG9ubHkgZXhpc3RzIG9uY2UsIG9wdGlt aXplIGZpbmRpbmcgaXQKCQkJCQlpZiAoIHF1ZXJ5ID09PSAiYm9keSIgJiYgY29u dGV4dC5ib2R5ICkgewoJCQkJCQlyZXR1cm4gbWFrZUFycmF5KCBbIGNvbnRleHQu Ym9keSBdLCBleHRyYSApOwoKCQkJCQkvLyBTcGVlZC11cDogU2l6emxlKCIjSUQi KQoJCQkJCX0gZWxzZSBpZiAoIG1hdGNoICYmIG1hdGNoWzNdICkgewoJCQkJCQl2 YXIgZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWzNdICk7CgoJ CQkJCQkvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJy eSA0LjYgcmV0dXJucwoJCQkJCQkvLyBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIg aW4gdGhlIGRvY3VtZW50ICM2OTYzCgkJCQkJCWlmICggZWxlbSAmJiBlbGVtLnBh cmVudE5vZGUgKSB7CgkJCQkJCQkvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgSUUg YW5kIE9wZXJhIHJldHVybiBpdGVtcwoJCQkJCQkJLy8gYnkgbmFtZSBpbnN0ZWFk IG9mIElECgkJCQkJCQlpZiAoIGVsZW0uaWQgPT09IG1hdGNoWzNdICkgewoJCQkJ CQkJCXJldHVybiBtYWtlQXJyYXkoIFsgZWxlbSBdLCBleHRyYSApOwoJCQkJCQkJ fQoKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCXJldHVybiBtYWtlQXJyYXkoIFtdLCBl eHRyYSApOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQl0cnkgewoJCQkJCQlyZXR1cm4g bWFrZUFycmF5KCBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwocXVlcnkpLCBleHRy YSApOwoJCQkJCX0gY2F0Y2gocXNhRXJyb3IpIHt9CgoJCQkJLy8gcVNBIHdvcmtz IHN0cmFuZ2VseSBvbiBFbGVtZW50LXJvb3RlZCBxdWVyaWVzCgkJCQkvLyBXZSBj YW4gd29yayBhcm91bmQgdGhpcyBieSBzcGVjaWZ5aW5nIGFuIGV4dHJhIElEIG9u IHRoZSByb290CgkJCQkvLyBhbmQgd29ya2luZyB1cCBmcm9tIHRoZXJlIChUaGFu a3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhlIHRlY2huaXF1ZSkKCQkJCS8vIElF IDggZG9lc24ndCB3b3JrIG9uIG9iamVjdCBlbGVtZW50cwoJCQkJfSBlbHNlIGlm ICggY29udGV4dC5ub2RlVHlwZSA9PT0gMSAmJiBjb250ZXh0Lm5vZGVOYW1lLnRv TG93ZXJDYXNlKCkgIT09ICJvYmplY3QiICkgewoJCQkJCXZhciBvbGRDb250ZXh0 ID0gY29udGV4dCwKCQkJCQkJb2xkID0gY29udGV4dC5nZXRBdHRyaWJ1dGUoICJp ZCIgKSwKCQkJCQkJbmlkID0gb2xkIHx8IGlkLAoJCQkJCQloYXNQYXJlbnQgPSBj b250ZXh0LnBhcmVudE5vZGUsCgkJCQkJCXJlbGF0aXZlSGllcmFyY2h5U2VsZWN0 b3IgPSAvXlxzKlsrfl0vLnRlc3QoIHF1ZXJ5ICk7CgoJCQkJCWlmICggIW9sZCAp IHsKCQkJCQkJY29udGV4dC5zZXRBdHRyaWJ1dGUoICJpZCIsIG5pZCApOwoJCQkJ CX0gZWxzZSB7CgkJCQkJCW5pZCA9IG5pZC5yZXBsYWNlKCAvJy9nLCAiXFwkJiIg KTsKCQkJCQl9CgkJCQkJaWYgKCByZWxhdGl2ZUhpZXJhcmNoeVNlbGVjdG9yICYm IGhhc1BhcmVudCApIHsKCQkJCQkJY29udGV4dCA9IGNvbnRleHQucGFyZW50Tm9k ZTsKCQkJCQl9CgoJCQkJCXRyeSB7CgkJCQkJCWlmICggIXJlbGF0aXZlSGllcmFy Y2h5U2VsZWN0b3IgfHwgaGFzUGFyZW50ICkgewoJCQkJCQkJcmV0dXJuIG1ha2VB cnJheSggY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCAiW2lkPSciICsgbmlkICsg IiddICIgKyBxdWVyeSApLCBleHRyYSApOwoJCQkJCQl9CgoJCQkJCX0gY2F0Y2go cHNldWRvRXJyb3IpIHsKCQkJCQl9IGZpbmFsbHkgewoJCQkJCQlpZiAoICFvbGQg KSB7CgkJCQkJCQlvbGRDb250ZXh0LnJlbW92ZUF0dHJpYnV0ZSggImlkIiApOwoJ CQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQlyZXR1cm4gb2xkU2l6emxlKHF1 ZXJ5LCBjb250ZXh0LCBleHRyYSwgc2VlZCk7CgkJfTsKCgkJZm9yICggdmFyIHBy b3AgaW4gb2xkU2l6emxlICkgewoJCQlTaXp6bGVbIHByb3AgXSA9IG9sZFNpenps ZVsgcHJvcCBdOwoJCX0KCgkJLy8gcmVsZWFzZSBtZW1vcnkgaW4gSUUKCQlkaXYg PSBudWxsOwoJfSkoKTsKfQoKKGZ1bmN0aW9uKCl7Cgl2YXIgaHRtbCA9IGRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudCwKCQltYXRjaGVzID0gaHRtbC5tYXRjaGVzU2Vs ZWN0b3IgfHwgaHRtbC5tb3pNYXRjaGVzU2VsZWN0b3IgfHwgaHRtbC53ZWJraXRN YXRjaGVzU2VsZWN0b3IgfHwgaHRtbC5tc01hdGNoZXNTZWxlY3RvcjsKCglpZiAo IG1hdGNoZXMgKSB7CgkJLy8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUg dG8gZG8gbWF0Y2hlc1NlbGVjdG9yCgkJLy8gb24gYSBkaXNjb25uZWN0ZWQgbm9k ZSAoSUUgOSBmYWlscyB0aGlzKQoJCXZhciBkaXNjb25uZWN0ZWRNYXRjaCA9ICFt YXRjaGVzLmNhbGwoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYiICksICJk aXYiICksCgkJCXBzZXVkb1dvcmtzID0gZmFsc2U7CgoJCXRyeSB7CgkJCS8vIFRo aXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb24KCQkJLy8gR2Vja28gZG9l cyBub3QgZXJyb3IsIHJldHVybnMgZmFsc2UgaW5zdGVhZAoJCQltYXRjaGVzLmNh bGwoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgIlt0ZXN0IT0nJ106c2l6emxl IiApOwoKCQl9IGNhdGNoKCBwc2V1ZG9FcnJvciApIHsKCQkJcHNldWRvV29ya3Mg PSB0cnVlOwoJCX0KCgkJU2l6emxlLm1hdGNoZXNTZWxlY3RvciA9IGZ1bmN0aW9u KCBub2RlLCBleHByICkgewoJCQkvLyBNYWtlIHN1cmUgdGhhdCBhdHRyaWJ1dGUg c2VsZWN0b3JzIGFyZSBxdW90ZWQKCQkJZXhwciA9IGV4cHIucmVwbGFjZSgvXD1c cyooW14nIlxdXSopXHMqXF0vZywgIj0nJDEnXSIpOwoKCQkJaWYgKCAhU2l6emxl LmlzWE1MKCBub2RlICkgKSB7CgkJCQl0cnkgewoJCQkJCWlmICggcHNldWRvV29y a3MgfHwgIUV4cHIubWF0Y2guUFNFVURPLnRlc3QoIGV4cHIgKSAmJiAhLyE9Ly50 ZXN0KCBleHByICkgKSB7CgkJCQkJCXZhciByZXQgPSBtYXRjaGVzLmNhbGwoIG5v ZGUsIGV4cHIgKTsKCgkJCQkJCS8vIElFIDkncyBtYXRjaGVzU2VsZWN0b3IgcmV0 dXJucyBmYWxzZSBvbiBkaXNjb25uZWN0ZWQgbm9kZXMKCQkJCQkJaWYgKCByZXQg fHwgIWRpc2Nvbm5lY3RlZE1hdGNoIHx8CgkJCQkJCQkJLy8gQXMgd2VsbCwgZGlz Y29ubmVjdGVkIG5vZGVzIGFyZSBzYWlkIHRvIGJlIGluIGEgZG9jdW1lbnQKCQkJ CQkJCQkvLyBmcmFnbWVudCBpbiBJRSA5LCBzbyBjaGVjayBmb3IgdGhhdAoJCQkJ CQkJCW5vZGUuZG9jdW1lbnQgJiYgbm9kZS5kb2N1bWVudC5ub2RlVHlwZSAhPT0g MTEgKSB7CgkJCQkJCQlyZXR1cm4gcmV0OwoJCQkJCQl9CgkJCQkJfQoJCQkJfSBj YXRjaChlKSB7fQoJCQl9CgoJCQlyZXR1cm4gU2l6emxlKGV4cHIsIG51bGwsIG51 bGwsIFtub2RlXSkubGVuZ3RoID4gMDsKCQl9OwoJfQp9KSgpOwoKKGZ1bmN0aW9u KCl7Cgl2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CgoJ ZGl2LmlubmVySFRNTCA9ICI8ZGl2IGNsYXNzPSd0ZXN0IGUnPjwvZGl2PjxkaXYg Y2xhc3M9J3Rlc3QnPjwvZGl2PiI7CgoJLy8gT3BlcmEgY2FuJ3QgZmluZCBhIHNl Y29uZCBjbGFzc25hbWUgKGluIDkuNikKCS8vIEFsc28sIG1ha2Ugc3VyZSB0aGF0 IGdldEVsZW1lbnRzQnlDbGFzc05hbWUgYWN0dWFsbHkgZXhpc3RzCglpZiAoICFk aXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSB8fCBkaXYuZ2V0RWxlbWVudHNCeUNs YXNzTmFtZSgiZSIpLmxlbmd0aCA9PT0gMCApIHsKCQlyZXR1cm47Cgl9CgoJLy8g U2FmYXJpIGNhY2hlcyBjbGFzcyBhdHRyaWJ1dGVzLCBkb2Vzbid0IGNhdGNoIGNo YW5nZXMgKGluIDMuMikKCWRpdi5sYXN0Q2hpbGQuY2xhc3NOYW1lID0gImUiOwoK CWlmICggZGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGggPT09 IDEgKSB7CgkJcmV0dXJuOwoJfQoKCUV4cHIub3JkZXIuc3BsaWNlKDEsIDAsICJD TEFTUyIpOwoJRXhwci5maW5kLkNMQVNTID0gZnVuY3Rpb24oIG1hdGNoLCBjb250 ZXh0LCBpc1hNTCApIHsKCQlpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRz QnlDbGFzc05hbWUgIT09ICJ1bmRlZmluZWQiICYmICFpc1hNTCApIHsKCQkJcmV0 dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShtYXRjaFsxXSk7CgkJ fQoJfTsKCgkvLyByZWxlYXNlIG1lbW9yeSBpbiBJRQoJZGl2ID0gbnVsbDsKfSko KTsKCmZ1bmN0aW9uIGRpck5vZGVDaGVjayggZGlyLCBjdXIsIGRvbmVOYW1lLCBj aGVja1NldCwgbm9kZUNoZWNrLCBpc1hNTCApIHsKCWZvciAoIHZhciBpID0gMCwg bCA9IGNoZWNrU2V0Lmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKCQl2YXIgZWxlbSA9 IGNoZWNrU2V0W2ldOwoKCQlpZiAoIGVsZW0gKSB7CgkJCXZhciBtYXRjaCA9IGZh bHNlOwoKCQkJZWxlbSA9IGVsZW1bZGlyXTsKCgkJCXdoaWxlICggZWxlbSApIHsK CQkJCWlmICggZWxlbVsgZXhwYW5kbyBdID09PSBkb25lTmFtZSApIHsKCQkJCQlt YXRjaCA9IGNoZWNrU2V0W2VsZW0uc2l6c2V0XTsKCQkJCQlicmVhazsKCQkJCX0K CgkJCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgIWlzWE1MICl7CgkJCQkJ ZWxlbVsgZXhwYW5kbyBdID0gZG9uZU5hbWU7CgkJCQkJZWxlbS5zaXpzZXQgPSBp OwoJCQkJfQoKCQkJCWlmICggZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09 PSBjdXIgKSB7CgkJCQkJbWF0Y2ggPSBlbGVtOwoJCQkJCWJyZWFrOwoJCQkJfQoK CQkJCWVsZW0gPSBlbGVtW2Rpcl07CgkJCX0KCgkJCWNoZWNrU2V0W2ldID0gbWF0 Y2g7CgkJfQoJfQp9CgpmdW5jdGlvbiBkaXJDaGVjayggZGlyLCBjdXIsIGRvbmVO YW1lLCBjaGVja1NldCwgbm9kZUNoZWNrLCBpc1hNTCApIHsKCWZvciAoIHZhciBp ID0gMCwgbCA9IGNoZWNrU2V0Lmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKCQl2YXIg ZWxlbSA9IGNoZWNrU2V0W2ldOwoKCQlpZiAoIGVsZW0gKSB7CgkJCXZhciBtYXRj aCA9IGZhbHNlOwoKCQkJZWxlbSA9IGVsZW1bZGlyXTsKCgkJCXdoaWxlICggZWxl bSApIHsKCQkJCWlmICggZWxlbVsgZXhwYW5kbyBdID09PSBkb25lTmFtZSApIHsK CQkJCQltYXRjaCA9IGNoZWNrU2V0W2VsZW0uc2l6c2V0XTsKCQkJCQlicmVhazsK CQkJCX0KCgkJCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CgkJCQkJaWYg KCAhaXNYTUwgKSB7CgkJCQkJCWVsZW1bIGV4cGFuZG8gXSA9IGRvbmVOYW1lOwoJ CQkJCQllbGVtLnNpenNldCA9IGk7CgkJCQkJfQoKCQkJCQlpZiAoIHR5cGVvZiBj dXIgIT09ICJzdHJpbmciICkgewoJCQkJCQlpZiAoIGVsZW0gPT09IGN1ciApIHsK CQkJCQkJCW1hdGNoID0gdHJ1ZTsKCQkJCQkJCWJyZWFrOwoJCQkJCQl9CgoJCQkJ CX0gZWxzZSBpZiAoIFNpenpsZS5maWx0ZXIoIGN1ciwgW2VsZW1dICkubGVuZ3Ro ID4gMCApIHsKCQkJCQkJbWF0Y2ggPSBlbGVtOwoJCQkJCQlicmVhazsKCQkJCQl9 CgkJCQl9CgoJCQkJZWxlbSA9IGVsZW1bZGlyXTsKCQkJfQoKCQkJY2hlY2tTZXRb aV0gPSBtYXRjaDsKCQl9Cgl9Cn0KCmlmICggZG9jdW1lbnQuZG9jdW1lbnRFbGVt ZW50LmNvbnRhaW5zICkgewoJU2l6emxlLmNvbnRhaW5zID0gZnVuY3Rpb24oIGEs IGIgKSB7CgkJcmV0dXJuIGEgIT09IGIgJiYgKGEuY29udGFpbnMgPyBhLmNvbnRh aW5zKGIpIDogdHJ1ZSk7Cgl9OwoKfSBlbHNlIGlmICggZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICkgewoJU2l6emxlLmNv bnRhaW5zID0gZnVuY3Rpb24oIGEsIGIgKSB7CgkJcmV0dXJuICEhKGEuY29tcGFy ZURvY3VtZW50UG9zaXRpb24oYikgJiAxNik7Cgl9OwoKfSBlbHNlIHsKCVNpenps ZS5jb250YWlucyA9IGZ1bmN0aW9uKCkgewoJCXJldHVybiBmYWxzZTsKCX07Cn0K ClNpenpsZS5pc1hNTCA9IGZ1bmN0aW9uKCBlbGVtICkgewoJLy8gZG9jdW1lbnRF bGVtZW50IGlzIHZlcmlmaWVkIGZvciBjYXNlcyB3aGVyZSBpdCBkb2Vzbid0IHll dCBleGlzdAoJLy8gKHN1Y2ggYXMgbG9hZGluZyBpZnJhbWVzIGluIElFIC0gIzQ4 MzMpCgl2YXIgZG9jdW1lbnRFbGVtZW50ID0gKGVsZW0gPyBlbGVtLm93bmVyRG9j dW1lbnQgfHwgZWxlbSA6IDApLmRvY3VtZW50RWxlbWVudDsKCglyZXR1cm4gZG9j dW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lICE9PSAiSFRN TCIgOiBmYWxzZTsKfTsKCnZhciBwb3NQcm9jZXNzID0gZnVuY3Rpb24oIHNlbGVj dG9yLCBjb250ZXh0LCBzZWVkICkgewoJdmFyIG1hdGNoLAoJCXRtcFNldCA9IFtd LAoJCWxhdGVyID0gIiIsCgkJcm9vdCA9IGNvbnRleHQubm9kZVR5cGUgPyBbY29u dGV4dF0gOiBjb250ZXh0OwoKCS8vIFBvc2l0aW9uIHNlbGVjdG9ycyBtdXN0IGJl IGRvbmUgYWZ0ZXIgdGhlIGZpbHRlcgoJLy8gQW5kIHNvIG11c3QgOm5vdChwb3Np dGlvbmFsKSBzbyB3ZSBtb3ZlIGFsbCBQU0VVRE9zIHRvIHRoZSBlbmQKCXdoaWxl ICggKG1hdGNoID0gRXhwci5tYXRjaC5QU0VVRE8uZXhlYyggc2VsZWN0b3IgKSkg KSB7CgkJbGF0ZXIgKz0gbWF0Y2hbMF07CgkJc2VsZWN0b3IgPSBzZWxlY3Rvci5y ZXBsYWNlKCBFeHByLm1hdGNoLlBTRVVETywgIiIgKTsKCX0KCglzZWxlY3RvciA9 IEV4cHIucmVsYXRpdmVbc2VsZWN0b3JdID8gc2VsZWN0b3IgKyAiKiIgOiBzZWxl Y3RvcjsKCglmb3IgKCB2YXIgaSA9IDAsIGwgPSByb290Lmxlbmd0aDsgaSA8IGw7 IGkrKyApIHsKCQlTaXp6bGUoIHNlbGVjdG9yLCByb290W2ldLCB0bXBTZXQsIHNl ZWQgKTsKCX0KCglyZXR1cm4gU2l6emxlLmZpbHRlciggbGF0ZXIsIHRtcFNldCAp Owp9OwoKLy8gRVhQT1NFCi8vIE92ZXJyaWRlIHNpenpsZSBhdHRyaWJ1dGUgcmV0 cmlldmFsClNpenpsZS5hdHRyID0galF1ZXJ5LmF0dHI7ClNpenpsZS5zZWxlY3Rv cnMuYXR0ck1hcCA9IHt9OwpqUXVlcnkuZmluZCA9IFNpenpsZTsKalF1ZXJ5LmV4 cHIgPSBTaXp6bGUuc2VsZWN0b3JzOwpqUXVlcnkuZXhwclsiOiJdID0galF1ZXJ5 LmV4cHIuZmlsdGVyczsKalF1ZXJ5LnVuaXF1ZSA9IFNpenpsZS51bmlxdWVTb3J0 OwpqUXVlcnkudGV4dCA9IFNpenpsZS5nZXRUZXh0OwpqUXVlcnkuaXNYTUxEb2Mg PSBTaXp6bGUuaXNYTUw7CmpRdWVyeS5jb250YWlucyA9IFNpenpsZS5jb250YWlu czsKCgp9KSgpOwoKCnZhciBydW50aWwgPSAvVW50aWwkLywKCXJwYXJlbnRzcHJl diA9IC9eKD86cGFyZW50c3xwcmV2VW50aWx8cHJldkFsbCkvLAoJLy8gTm90ZTog VGhpcyBSZWdFeHAgc2hvdWxkIGJlIGltcHJvdmVkLCBvciBsaWtlbHkgcHVsbGVk IGZyb20gU2l6emxlCglybXVsdGlzZWxlY3RvciA9IC8sLywKCWlzU2ltcGxlID0g L14uW146I1xbXC4sXSokLywKCXNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNl LAoJUE9TID0galF1ZXJ5LmV4cHIubWF0Y2guZ2xvYmFsUE9TLAoJLy8gbWV0aG9k cyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRp bmcgZnJvbSBhIHVuaXF1ZSBzZXQKCWd1YXJhbnRlZWRVbmlxdWUgPSB7CgkJY2hp bGRyZW46IHRydWUsCgkJY29udGVudHM6IHRydWUsCgkJbmV4dDogdHJ1ZSwKCQlw cmV2OiB0cnVlCgl9OwoKalF1ZXJ5LmZuLmV4dGVuZCh7CglmaW5kOiBmdW5jdGlv biggc2VsZWN0b3IgKSB7CgkJdmFyIHNlbGYgPSB0aGlzLAoJCQlpLCBsOwoKCQlp ZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgKSB7CgkJCXJldHVybiBq UXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKGZ1bmN0aW9uKCkgewoJCQkJZm9yICgg aSA9IDAsIGwgPSBzZWxmLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKCQkJCQlpZiAo IGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7CgkJCQkJCXJl dHVybiB0cnVlOwoJCQkJCX0KCQkJCX0KCQkJfSk7CgkJfQoKCQl2YXIgcmV0ID0g dGhpcy5wdXNoU3RhY2soICIiLCAiZmluZCIsIHNlbGVjdG9yICksCgkJCWxlbmd0 aCwgbiwgcjsKCgkJZm9yICggaSA9IDAsIGwgPSB0aGlzLmxlbmd0aDsgaSA8IGw7 IGkrKyApIHsKCQkJbGVuZ3RoID0gcmV0Lmxlbmd0aDsKCQkJalF1ZXJ5LmZpbmQo IHNlbGVjdG9yLCB0aGlzW2ldLCByZXQgKTsKCgkJCWlmICggaSA+IDAgKSB7CgkJ CQkvLyBNYWtlIHN1cmUgdGhhdCB0aGUgcmVzdWx0cyBhcmUgdW5pcXVlCgkJCQlm b3IgKCBuID0gbGVuZ3RoOyBuIDwgcmV0Lmxlbmd0aDsgbisrICkgewoJCQkJCWZv ciAoIHIgPSAwOyByIDwgbGVuZ3RoOyByKysgKSB7CgkJCQkJCWlmICggcmV0W3Jd ID09PSByZXRbbl0gKSB7CgkJCQkJCQlyZXQuc3BsaWNlKG4tLSwgMSk7CgkJCQkJ CQlicmVhazsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJu IHJldDsKCX0sCgoJaGFzOiBmdW5jdGlvbiggdGFyZ2V0ICkgewoJCXZhciB0YXJn ZXRzID0galF1ZXJ5KCB0YXJnZXQgKTsKCQlyZXR1cm4gdGhpcy5maWx0ZXIoZnVu Y3Rpb24oKSB7CgkJCWZvciAoIHZhciBpID0gMCwgbCA9IHRhcmdldHMubGVuZ3Ro OyBpIDwgbDsgaSsrICkgewoJCQkJaWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMs IHRhcmdldHNbaV0gKSApIHsKCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCX0KCQkJfQoJ CX0pOwoJfSwKCglub3Q6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKCQlyZXR1cm4g dGhpcy5wdXNoU3RhY2soIHdpbm5vdyh0aGlzLCBzZWxlY3RvciwgZmFsc2UpLCAi bm90Iiwgc2VsZWN0b3IpOwoJfSwKCglmaWx0ZXI6IGZ1bmN0aW9uKCBzZWxlY3Rv ciApIHsKCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyh0aGlzLCBzZWxl Y3RvciwgdHJ1ZSksICJmaWx0ZXIiLCBzZWxlY3RvciApOwoJfSwKCglpczogZnVu Y3Rpb24oIHNlbGVjdG9yICkgewoJCXJldHVybiAhIXNlbGVjdG9yICYmICgKCQkJ dHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiA/CgkJCQkvLyBJZiB0aGlzIGlz IGEgcG9zaXRpb25hbCBzZWxlY3RvciwgY2hlY2sgbWVtYmVyc2hpcCBpbiB0aGUg cmV0dXJuZWQgc2V0CgkJCQkvLyBzbyAkKCJwOmZpcnN0IikuaXMoInA6bGFzdCIp IHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byAicCIuCgkJCQlQ T1MudGVzdCggc2VsZWN0b3IgKSA/CgkJCQkJalF1ZXJ5KCBzZWxlY3RvciwgdGhp cy5jb250ZXh0ICkuaW5kZXgoIHRoaXNbMF0gKSA+PSAwIDoKCQkJCQlqUXVlcnku ZmlsdGVyKCBzZWxlY3RvciwgdGhpcyApLmxlbmd0aCA+IDAgOgoJCQkJdGhpcy5m aWx0ZXIoIHNlbGVjdG9yICkubGVuZ3RoID4gMCApOwoJfSwKCgljbG9zZXN0OiBm dW5jdGlvbiggc2VsZWN0b3JzLCBjb250ZXh0ICkgewoJCXZhciByZXQgPSBbXSwg aSwgbCwgY3VyID0gdGhpc1swXTsKCgkJLy8gQXJyYXkgKGRlcHJlY2F0ZWQgYXMg b2YgalF1ZXJ5IDEuNykKCQlpZiAoIGpRdWVyeS5pc0FycmF5KCBzZWxlY3RvcnMg KSApIHsKCQkJdmFyIGxldmVsID0gMTsKCgkJCXdoaWxlICggY3VyICYmIGN1ci5v d25lckRvY3VtZW50ICYmIGN1ciAhPT0gY29udGV4dCApIHsKCQkJCWZvciAoIGkg PSAwOyBpIDwgc2VsZWN0b3JzLmxlbmd0aDsgaSsrICkgewoKCQkJCQlpZiAoIGpR dWVyeSggY3VyICkuaXMoIHNlbGVjdG9yc1sgaSBdICkgKSB7CgkJCQkJCXJldC5w dXNoKHsgc2VsZWN0b3I6IHNlbGVjdG9yc1sgaSBdLCBlbGVtOiBjdXIsIGxldmVs OiBsZXZlbCB9KTsKCQkJCQl9CgkJCQl9CgoJCQkJY3VyID0gY3VyLnBhcmVudE5v ZGU7CgkJCQlsZXZlbCsrOwoJCQl9CgoJCQlyZXR1cm4gcmV0OwoJCX0KCgkJLy8g U3RyaW5nCgkJdmFyIHBvcyA9IFBPUy50ZXN0KCBzZWxlY3RvcnMgKSB8fCB0eXBl b2Ygc2VsZWN0b3JzICE9PSAic3RyaW5nIiA/CgkJCQlqUXVlcnkoIHNlbGVjdG9y cywgY29udGV4dCB8fCB0aGlzLmNvbnRleHQgKSA6CgkJCQkwOwoKCQlmb3IgKCBp ID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrICkgewoJCQljdXIgPSB0 aGlzW2ldOwoKCQkJd2hpbGUgKCBjdXIgKSB7CgkJCQlpZiAoIHBvcyA/IHBvcy5p bmRleChjdXIpID4gLTEgOiBqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoY3Vy LCBzZWxlY3RvcnMpICkgewoJCQkJCXJldC5wdXNoKCBjdXIgKTsKCQkJCQlicmVh azsKCgkJCQl9IGVsc2UgewoJCQkJCWN1ciA9IGN1ci5wYXJlbnROb2RlOwoJCQkJ CWlmICggIWN1ciB8fCAhY3VyLm93bmVyRG9jdW1lbnQgfHwgY3VyID09PSBjb250 ZXh0IHx8IGN1ci5ub2RlVHlwZSA9PT0gMTEgKSB7CgkJCQkJCWJyZWFrOwoJCQkJ CX0KCQkJCX0KCQkJfQoJCX0KCgkJcmV0ID0gcmV0Lmxlbmd0aCA+IDEgPyBqUXVl cnkudW5pcXVlKCByZXQgKSA6IHJldDsKCgkJcmV0dXJuIHRoaXMucHVzaFN0YWNr KCByZXQsICJjbG9zZXN0Iiwgc2VsZWN0b3JzICk7Cgl9LAoKCS8vIERldGVybWlu ZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4KCS8vIHRoZSBtYXRj aGVkIHNldCBvZiBlbGVtZW50cwoJaW5kZXg6IGZ1bmN0aW9uKCBlbGVtICkgewoK CQkvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudAoJCWlmICgg IWVsZW0gKSB7CgkJCXJldHVybiAoIHRoaXNbMF0gJiYgdGhpc1swXS5wYXJlbnRO b2RlICkgPyB0aGlzLnByZXZBbGwoKS5sZW5ndGggOiAtMTsKCQl9CgoJCS8vIGlu ZGV4IGluIHNlbGVjdG9yCgkJaWYgKCB0eXBlb2YgZWxlbSA9PT0gInN0cmluZyIg KSB7CgkJCXJldHVybiBqUXVlcnkuaW5BcnJheSggdGhpc1swXSwgalF1ZXJ5KCBl bGVtICkgKTsKCQl9CgoJCS8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRl c2lyZWQgZWxlbWVudAoJCXJldHVybiBqUXVlcnkuaW5BcnJheSgKCQkJLy8gSWYg aXQgcmVjZWl2ZXMgYSBqUXVlcnkgb2JqZWN0LCB0aGUgZmlyc3QgZWxlbWVudCBp cyB1c2VkCgkJCWVsZW0uanF1ZXJ5ID8gZWxlbVswXSA6IGVsZW0sIHRoaXMgKTsK CX0sCgoJYWRkOiBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7CgkJdmFy IHNldCA9IHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgPwoJCQkJalF1ZXJ5 KCBzZWxlY3RvciwgY29udGV4dCApIDoKCQkJCWpRdWVyeS5tYWtlQXJyYXkoIHNl bGVjdG9yICYmIHNlbGVjdG9yLm5vZGVUeXBlID8gWyBzZWxlY3RvciBdIDogc2Vs ZWN0b3IgKSwKCQkJYWxsID0galF1ZXJ5Lm1lcmdlKCB0aGlzLmdldCgpLCBzZXQg KTsKCgkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBpc0Rpc2Nvbm5lY3RlZCggc2V0 WzBdICkgfHwgaXNEaXNjb25uZWN0ZWQoIGFsbFswXSApID8KCQkJYWxsIDoKCQkJ alF1ZXJ5LnVuaXF1ZSggYWxsICkgKTsKCX0sCgoJYW5kU2VsZjogZnVuY3Rpb24o KSB7CgkJcmV0dXJuIHRoaXMuYWRkKCB0aGlzLnByZXZPYmplY3QgKTsKCX0KfSk7 CgovLyBBIHBhaW5mdWxseSBzaW1wbGUgY2hlY2sgdG8gc2VlIGlmIGFuIGVsZW1l bnQgaXMgZGlzY29ubmVjdGVkCi8vIGZyb20gYSBkb2N1bWVudCAoc2hvdWxkIGJl IGltcHJvdmVkLCB3aGVyZSBmZWFzaWJsZSkuCmZ1bmN0aW9uIGlzRGlzY29ubmVj dGVkKCBub2RlICkgewoJcmV0dXJuICFub2RlIHx8ICFub2RlLnBhcmVudE5vZGUg fHwgbm9kZS5wYXJlbnROb2RlLm5vZGVUeXBlID09PSAxMTsKfQoKalF1ZXJ5LmVh Y2goewoJcGFyZW50OiBmdW5jdGlvbiggZWxlbSApIHsKCQl2YXIgcGFyZW50ID0g ZWxlbS5wYXJlbnROb2RlOwoJCXJldHVybiBwYXJlbnQgJiYgcGFyZW50Lm5vZGVU eXBlICE9PSAxMSA/IHBhcmVudCA6IG51bGw7Cgl9LAoJcGFyZW50czogZnVuY3Rp b24oIGVsZW0gKSB7CgkJcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJwYXJlbnRO b2RlIiApOwoJfSwKCXBhcmVudHNVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVu dGlsICkgewoJCXJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCAicGFyZW50Tm9kZSIs IHVudGlsICk7Cgl9LAoJbmV4dDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJcmV0dXJu IGpRdWVyeS5udGgoIGVsZW0sIDIsICJuZXh0U2libGluZyIgKTsKCX0sCglwcmV2 OiBmdW5jdGlvbiggZWxlbSApIHsKCQlyZXR1cm4galF1ZXJ5Lm50aCggZWxlbSwg MiwgInByZXZpb3VzU2libGluZyIgKTsKCX0sCgluZXh0QWxsOiBmdW5jdGlvbigg ZWxlbSApIHsKCQlyZXR1cm4galF1ZXJ5LmRpciggZWxlbSwgIm5leHRTaWJsaW5n IiApOwoJfSwKCXByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkgewoJCXJldHVybiBq UXVlcnkuZGlyKCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiApOwoJfSwKCW5leHRV bnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkgewoJCXJldHVybiBqUXVl cnkuZGlyKCBlbGVtLCAibmV4dFNpYmxpbmciLCB1bnRpbCApOwoJfSwKCXByZXZV bnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkgewoJCXJldHVybiBqUXVl cnkuZGlyKCBlbGVtLCAicHJldmlvdXNTaWJsaW5nIiwgdW50aWwgKTsKCX0sCglz aWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7CgkJcmV0dXJuIGpRdWVyeS5zaWJs aW5nKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0g KTsKCX0sCgljaGlsZHJlbjogZnVuY3Rpb24oIGVsZW0gKSB7CgkJcmV0dXJuIGpR dWVyeS5zaWJsaW5nKCBlbGVtLmZpcnN0Q2hpbGQgKTsKCX0sCgljb250ZW50czog ZnVuY3Rpb24oIGVsZW0gKSB7CgkJcmV0dXJuIGpRdWVyeS5ub2RlTmFtZSggZWxl bSwgImlmcmFtZSIgKSA/CgkJCWVsZW0uY29udGVudERvY3VtZW50IHx8IGVsZW0u Y29udGVudFdpbmRvdy5kb2N1bWVudCA6CgkJCWpRdWVyeS5tYWtlQXJyYXkoIGVs ZW0uY2hpbGROb2RlcyApOwoJfQp9LCBmdW5jdGlvbiggbmFtZSwgZm4gKSB7Cglq UXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7 CgkJdmFyIHJldCA9IGpRdWVyeS5tYXAoIHRoaXMsIGZuLCB1bnRpbCApOwoKCQlp ZiAoICFydW50aWwudGVzdCggbmFtZSApICkgewoJCQlzZWxlY3RvciA9IHVudGls OwoJCX0KCgkJaWYgKCBzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT09ICJz dHJpbmciICkgewoJCQlyZXQgPSBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgcmV0 ICk7CgkJfQoKCQlyZXQgPSB0aGlzLmxlbmd0aCA+IDEgJiYgIWd1YXJhbnRlZWRV bmlxdWVbIG5hbWUgXSA/IGpRdWVyeS51bmlxdWUoIHJldCApIDogcmV0OwoKCQlp ZiAoICh0aGlzLmxlbmd0aCA+IDEgfHwgcm11bHRpc2VsZWN0b3IudGVzdCggc2Vs ZWN0b3IgKSkgJiYgcnBhcmVudHNwcmV2LnRlc3QoIG5hbWUgKSApIHsKCQkJcmV0 ID0gcmV0LnJldmVyc2UoKTsKCQl9CgoJCXJldHVybiB0aGlzLnB1c2hTdGFjaygg cmV0LCBuYW1lLCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKS5qb2luKCIsIikgKTsK CX07Cn0pOwoKalF1ZXJ5LmV4dGVuZCh7CglmaWx0ZXI6IGZ1bmN0aW9uKCBleHBy LCBlbGVtcywgbm90ICkgewoJCWlmICggbm90ICkgewoJCQlleHByID0gIjpub3Qo IiArIGV4cHIgKyAiKSI7CgkJfQoKCQlyZXR1cm4gZWxlbXMubGVuZ3RoID09PSAx ID8KCQkJalF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKGVsZW1zWzBdLCBleHBy KSA/IFsgZWxlbXNbMF0gXSA6IFtdIDoKCQkJalF1ZXJ5LmZpbmQubWF0Y2hlcyhl eHByLCBlbGVtcyk7Cgl9LAoKCWRpcjogZnVuY3Rpb24oIGVsZW0sIGRpciwgdW50 aWwgKSB7CgkJdmFyIG1hdGNoZWQgPSBbXSwKCQkJY3VyID0gZWxlbVsgZGlyIF07 CgoJCXdoaWxlICggY3VyICYmIGN1ci5ub2RlVHlwZSAhPT0gOSAmJiAodW50aWwg PT09IHVuZGVmaW5lZCB8fCBjdXIubm9kZVR5cGUgIT09IDEgfHwgIWpRdWVyeSgg Y3VyICkuaXMoIHVudGlsICkpICkgewoJCQlpZiAoIGN1ci5ub2RlVHlwZSA9PT0g MSApIHsKCQkJCW1hdGNoZWQucHVzaCggY3VyICk7CgkJCX0KCQkJY3VyID0gY3Vy W2Rpcl07CgkJfQoJCXJldHVybiBtYXRjaGVkOwoJfSwKCgludGg6IGZ1bmN0aW9u KCBjdXIsIHJlc3VsdCwgZGlyLCBlbGVtICkgewoJCXJlc3VsdCA9IHJlc3VsdCB8 fCAxOwoJCXZhciBudW0gPSAwOwoKCQlmb3IgKCA7IGN1cjsgY3VyID0gY3VyW2Rp cl0gKSB7CgkJCWlmICggY3VyLm5vZGVUeXBlID09PSAxICYmICsrbnVtID09PSBy ZXN1bHQgKSB7CgkJCQlicmVhazsKCQkJfQoJCX0KCgkJcmV0dXJuIGN1cjsKCX0s CgoJc2libGluZzogZnVuY3Rpb24oIG4sIGVsZW0gKSB7CgkJdmFyIHIgPSBbXTsK CgkJZm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHsKCQkJaWYgKCBuLm5v ZGVUeXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7CgkJCQlyLnB1c2goIG4gKTsK CQkJfQoJCX0KCgkJcmV0dXJuIHI7Cgl9Cn0pOwoKLy8gSW1wbGVtZW50IHRoZSBp ZGVudGljYWwgZnVuY3Rpb25hbGl0eSBmb3IgZmlsdGVyIGFuZCBub3QKZnVuY3Rp b24gd2lubm93KCBlbGVtZW50cywgcXVhbGlmaWVyLCBrZWVwICkgewoKCS8vIENh bid0IHBhc3MgbnVsbCBvciB1bmRlZmluZWQgdG8gaW5kZXhPZiBpbiBGaXJlZm94 IDQKCS8vIFNldCB0byAwIHRvIHNraXAgc3RyaW5nIGNoZWNrCglxdWFsaWZpZXIg PSBxdWFsaWZpZXIgfHwgMDsKCglpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBxdWFs aWZpZXIgKSApIHsKCQlyZXR1cm4galF1ZXJ5LmdyZXAoZWxlbWVudHMsIGZ1bmN0 aW9uKCBlbGVtLCBpICkgewoJCQl2YXIgcmV0VmFsID0gISFxdWFsaWZpZXIuY2Fs bCggZWxlbSwgaSwgZWxlbSApOwoJCQlyZXR1cm4gcmV0VmFsID09PSBrZWVwOwoJ CX0pOwoKCX0gZWxzZSBpZiAoIHF1YWxpZmllci5ub2RlVHlwZSApIHsKCQlyZXR1 cm4galF1ZXJ5LmdyZXAoZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgewoJ CQlyZXR1cm4gKCBlbGVtID09PSBxdWFsaWZpZXIgKSA9PT0ga2VlcDsKCQl9KTsK Cgl9IGVsc2UgaWYgKCB0eXBlb2YgcXVhbGlmaWVyID09PSAic3RyaW5nIiApIHsK CQl2YXIgZmlsdGVyZWQgPSBqUXVlcnkuZ3JlcChlbGVtZW50cywgZnVuY3Rpb24o IGVsZW0gKSB7CgkJCXJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxOwoJCX0pOwoK CQlpZiAoIGlzU2ltcGxlLnRlc3QoIHF1YWxpZmllciApICkgewoJCQlyZXR1cm4g alF1ZXJ5LmZpbHRlcihxdWFsaWZpZXIsIGZpbHRlcmVkLCAha2VlcCk7CgkJfSBl bHNlIHsKCQkJcXVhbGlmaWVyID0galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBm aWx0ZXJlZCApOwoJCX0KCX0KCglyZXR1cm4galF1ZXJ5LmdyZXAoZWxlbWVudHMs IGZ1bmN0aW9uKCBlbGVtLCBpICkgewoJCXJldHVybiAoIGpRdWVyeS5pbkFycmF5 KCBlbGVtLCBxdWFsaWZpZXIgKSA+PSAwICkgPT09IGtlZXA7Cgl9KTsKfQoKCgoK ZnVuY3Rpb24gY3JlYXRlU2FmZUZyYWdtZW50KCBkb2N1bWVudCApIHsKCXZhciBs aXN0ID0gbm9kZU5hbWVzLnNwbGl0KCAifCIgKSwKCXNhZmVGcmFnID0gZG9jdW1l bnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwoKCWlmICggc2FmZUZyYWcuY3Jl YXRlRWxlbWVudCApIHsKCQl3aGlsZSAoIGxpc3QubGVuZ3RoICkgewoJCQlzYWZl RnJhZy5jcmVhdGVFbGVtZW50KAoJCQkJbGlzdC5wb3AoKQoJCQkpOwoJCX0KCX0K CXJldHVybiBzYWZlRnJhZzsKfQoKdmFyIG5vZGVOYW1lcyA9ICJhYmJyfGFydGlj bGV8YXNpZGV8YXVkaW98YmRpfGNhbnZhc3xkYXRhfGRhdGFsaXN0fGRldGFpbHN8 ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfCIgKwoJCSJoZWFkZXJ8aGdyb3VwfG1h cmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGlt ZXx2aWRlbyIsCglyaW5saW5lalF1ZXJ5ID0gLyBqUXVlcnlcZCs9Iig/OlxkK3xu dWxsKSIvZywKCXJsZWFkaW5nV2hpdGVzcGFjZSA9IC9eXHMrLywKCXJ4aHRtbFRh ZyA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0 YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vaWcsCglydGFnTmFtZSA9IC88KFtc dzpdKykvLAoJcnRib2R5ID0gLzx0Ym9keS9pLAoJcmh0bWwgPSAvPHwmIz9cdys7 LywKCXJub0lubmVyaHRtbCA9IC88KD86c2NyaXB0fHN0eWxlKS9pLAoJcm5vY2Fj aGUgPSAvPCg/OnNjcmlwdHxvYmplY3R8ZW1iZWR8b3B0aW9ufHN0eWxlKS9pLAoJ cm5vc2hpbWNhY2hlID0gbmV3IFJlZ0V4cCgiPCg/OiIgKyBub2RlTmFtZXMgKyAi KVtcXHMvPl0iLCAiaSIpLAoJLy8gY2hlY2tlZD0iY2hlY2tlZCIgb3IgY2hlY2tl ZAoJcmNoZWNrZWQgPSAvY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikv aSwKCXJzY3JpcHRUeXBlID0gL1wvKGphdmF8ZWNtYSlzY3JpcHQvaSwKCXJjbGVh blNjcmlwdCA9IC9eXHMqPCEoPzpcW0NEQVRBXFt8XC1cLSkvLAoJd3JhcE1hcCA9 IHsKCQlvcHRpb246IFsgMSwgIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4i LCAiPC9zZWxlY3Q+IiBdLAoJCWxlZ2VuZDogWyAxLCAiPGZpZWxkc2V0PiIsICI8 L2ZpZWxkc2V0PiIgXSwKCQl0aGVhZDogWyAxLCAiPHRhYmxlPiIsICI8L3RhYmxl PiIgXSwKCQl0cjogWyAyLCAiPHRhYmxlPjx0Ym9keT4iLCAiPC90Ym9keT48L3Rh YmxlPiIgXSwKCQl0ZDogWyAzLCAiPHRhYmxlPjx0Ym9keT48dHI+IiwgIjwvdHI+ PC90Ym9keT48L3RhYmxlPiIgXSwKCQljb2w6IFsgMiwgIjx0YWJsZT48dGJvZHk+ PC90Ym9keT48Y29sZ3JvdXA+IiwgIjwvY29sZ3JvdXA+PC90YWJsZT4iIF0sCgkJ YXJlYTogWyAxLCAiPG1hcD4iLCAiPC9tYXA+IiBdLAoJCV9kZWZhdWx0OiBbIDAs ICIiLCAiIiBdCgl9LAoJc2FmZUZyYWdtZW50ID0gY3JlYXRlU2FmZUZyYWdtZW50 KCBkb2N1bWVudCApOwoKd3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9u Owp3cmFwTWFwLnRib2R5ID0gd3JhcE1hcC50Zm9vdCA9IHdyYXBNYXAuY29sZ3Jv dXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFwLnRoZWFkOwp3cmFwTWFwLnRo ID0gd3JhcE1hcC50ZDsKCi8vIElFIGNhbid0IHNlcmlhbGl6ZSA8bGluaz4gYW5k IDxzY3JpcHQ+IHRhZ3Mgbm9ybWFsbHkKaWYgKCAhalF1ZXJ5LnN1cHBvcnQuaHRt bFNlcmlhbGl6ZSApIHsKCXdyYXBNYXAuX2RlZmF1bHQgPSBbIDEsICJkaXY8ZGl2 PiIsICI8L2Rpdj4iIF07Cn0KCmpRdWVyeS5mbi5leHRlbmQoewoJdGV4dDogZnVu Y3Rpb24oIHZhbHVlICkgewoJCXJldHVybiBqUXVlcnkuYWNjZXNzKCB0aGlzLCBm dW5jdGlvbiggdmFsdWUgKSB7CgkJCXJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVk ID8KCQkJCWpRdWVyeS50ZXh0KCB0aGlzICkgOgoJCQkJdGhpcy5lbXB0eSgpLmFw cGVuZCggKCB0aGlzWzBdICYmIHRoaXNbMF0ub3duZXJEb2N1bWVudCB8fCBkb2N1 bWVudCApLmNyZWF0ZVRleHROb2RlKCB2YWx1ZSApICk7CgkJfSwgbnVsbCwgdmFs dWUsIGFyZ3VtZW50cy5sZW5ndGggKTsKCX0sCgoJd3JhcEFsbDogZnVuY3Rpb24o IGh0bWwgKSB7CgkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApICkgewoJ CQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHsKCQkJCWpRdWVyeSh0aGlz KS53cmFwQWxsKCBodG1sLmNhbGwodGhpcywgaSkgKTsKCQkJfSk7CgkJfQoKCQlp ZiAoIHRoaXNbMF0gKSB7CgkJCS8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0 YXJnZXQgYXJvdW5kCgkJCXZhciB3cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWzBd Lm93bmVyRG9jdW1lbnQgKS5lcSgwKS5jbG9uZSh0cnVlKTsKCgkJCWlmICggdGhp c1swXS5wYXJlbnROb2RlICkgewoJCQkJd3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNb MF0gKTsKCQkJfQoKCQkJd3JhcC5tYXAoZnVuY3Rpb24oKSB7CgkJCQl2YXIgZWxl bSA9IHRoaXM7CgoJCQkJd2hpbGUgKCBlbGVtLmZpcnN0Q2hpbGQgJiYgZWxlbS5m aXJzdENoaWxkLm5vZGVUeXBlID09PSAxICkgewoJCQkJCWVsZW0gPSBlbGVtLmZp cnN0Q2hpbGQ7CgkJCQl9CgoJCQkJcmV0dXJuIGVsZW07CgkJCX0pLmFwcGVuZCgg dGhpcyApOwoJCX0KCgkJcmV0dXJuIHRoaXM7Cgl9LAoKCXdyYXBJbm5lcjogZnVu Y3Rpb24oIGh0bWwgKSB7CgkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCAp ICkgewoJCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHsKCQkJCWpRdWVy eSh0aGlzKS53cmFwSW5uZXIoIGh0bWwuY2FsbCh0aGlzLCBpKSApOwoJCQl9KTsK CQl9CgoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCXZhciBzZWxm ID0galF1ZXJ5KCB0aGlzICksCgkJCQljb250ZW50cyA9IHNlbGYuY29udGVudHMo KTsKCgkJCWlmICggY29udGVudHMubGVuZ3RoICkgewoJCQkJY29udGVudHMud3Jh cEFsbCggaHRtbCApOwoKCQkJfSBlbHNlIHsKCQkJCXNlbGYuYXBwZW5kKCBodG1s ICk7CgkJCX0KCQl9KTsKCX0sCgoJd3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7CgkJ dmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApOwoKCQly ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHsKCQkJalF1ZXJ5KCB0aGlzICku d3JhcEFsbCggaXNGdW5jdGlvbiA/IGh0bWwuY2FsbCh0aGlzLCBpKSA6IGh0bWwg KTsKCQl9KTsKCX0sCgoJdW53cmFwOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhp cy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCkgewoJCQlpZiAoICFqUXVlcnkubm9k ZU5hbWUoIHRoaXMsICJib2R5IiApICkgewoJCQkJalF1ZXJ5KCB0aGlzICkucmVw bGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApOwoJCQl9CgkJfSkuZW5kKCk7Cgl9 LAoKCWFwcGVuZDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMuZG9tTWFuaXAo YXJndW1lbnRzLCB0cnVlLCBmdW5jdGlvbiggZWxlbSApIHsKCQkJaWYgKCB0aGlz Lm5vZGVUeXBlID09PSAxICkgewoJCQkJdGhpcy5hcHBlbmRDaGlsZCggZWxlbSAp OwoJCQl9CgkJfSk7Cgl9LAoKCXByZXBlbmQ6IGZ1bmN0aW9uKCkgewoJCXJldHVy biB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywgdHJ1ZSwgZnVuY3Rpb24oIGVsZW0g KSB7CgkJCWlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSApIHsKCQkJCXRoaXMuaW5z ZXJ0QmVmb3JlKCBlbGVtLCB0aGlzLmZpcnN0Q2hpbGQgKTsKCQkJfQoJCX0pOwoJ fSwKCgliZWZvcmU6IGZ1bmN0aW9uKCkgewoJCWlmICggdGhpc1swXSAmJiB0aGlz WzBdLnBhcmVudE5vZGUgKSB7CgkJCXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3Vt ZW50cywgZmFsc2UsIGZ1bmN0aW9uKCBlbGVtICkgewoJCQkJdGhpcy5wYXJlbnRO b2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApOwoJCQl9KTsKCQl9IGVsc2Ug aWYgKCBhcmd1bWVudHMubGVuZ3RoICkgewoJCQl2YXIgc2V0ID0galF1ZXJ5LmNs ZWFuKCBhcmd1bWVudHMgKTsKCQkJc2V0LnB1c2guYXBwbHkoIHNldCwgdGhpcy50 b0FycmF5KCkgKTsKCQkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBzZXQsICJiZWZv cmUiLCBhcmd1bWVudHMgKTsKCQl9Cgl9LAoKCWFmdGVyOiBmdW5jdGlvbigpIHsK CQlpZiAoIHRoaXNbMF0gJiYgdGhpc1swXS5wYXJlbnROb2RlICkgewoJCQlyZXR1 cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsIGZhbHNlLCBmdW5jdGlvbiggZWxl bSApIHsKCQkJCXRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRo aXMubmV4dFNpYmxpbmcgKTsKCQkJfSk7CgkJfSBlbHNlIGlmICggYXJndW1lbnRz Lmxlbmd0aCApIHsKCQkJdmFyIHNldCA9IHRoaXMucHVzaFN0YWNrKCB0aGlzLCAi YWZ0ZXIiLCBhcmd1bWVudHMgKTsKCQkJc2V0LnB1c2guYXBwbHkoIHNldCwgalF1 ZXJ5LmNsZWFuKGFyZ3VtZW50cykgKTsKCQkJcmV0dXJuIHNldDsKCQl9Cgl9LAoK CS8vIGtlZXBEYXRhIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS0tZG8gbm90IGRv Y3VtZW50CglyZW1vdmU6IGZ1bmN0aW9uKCBzZWxlY3Rvciwga2VlcERhdGEgKSB7 CgkJZm9yICggdmFyIGkgPSAwLCBlbGVtOyAoZWxlbSA9IHRoaXNbaV0pICE9IG51 bGw7IGkrKyApIHsKCQkJaWYgKCAhc2VsZWN0b3IgfHwgalF1ZXJ5LmZpbHRlcigg c2VsZWN0b3IsIFsgZWxlbSBdICkubGVuZ3RoICkgewoJCQkJaWYgKCAha2VlcERh dGEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKCQkJCQlqUXVlcnkuY2xlYW5E YXRhKCBlbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikgKTsKCQkJCQlqUXVl cnkuY2xlYW5EYXRhKCBbIGVsZW0gXSApOwoJCQkJfQoKCQkJCWlmICggZWxlbS5w YXJlbnROb2RlICkgewoJCQkJCWVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCgg ZWxlbSApOwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gdGhpczsKCX0sCgoJZW1w dHk6IGZ1bmN0aW9uKCkgewoJCWZvciAoIHZhciBpID0gMCwgZWxlbTsgKGVsZW0g PSB0aGlzW2ldKSAhPSBudWxsOyBpKysgKSB7CgkJCS8vIFJlbW92ZSBlbGVtZW50 IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrcwoJCQlpZiAoIGVsZW0ubm9k ZVR5cGUgPT09IDEgKSB7CgkJCQlqUXVlcnkuY2xlYW5EYXRhKCBlbGVtLmdldEVs ZW1lbnRzQnlUYWdOYW1lKCIqIikgKTsKCQkJfQoKCQkJLy8gUmVtb3ZlIGFueSBy ZW1haW5pbmcgbm9kZXMKCQkJd2hpbGUgKCBlbGVtLmZpcnN0Q2hpbGQgKSB7CgkJ CQllbGVtLnJlbW92ZUNoaWxkKCBlbGVtLmZpcnN0Q2hpbGQgKTsKCQkJfQoJCX0K CgkJcmV0dXJuIHRoaXM7Cgl9LAoKCWNsb25lOiBmdW5jdGlvbiggZGF0YUFuZEV2 ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7CgkJZGF0YUFuZEV2ZW50cyA9IGRh dGFBbmRFdmVudHMgPT0gbnVsbCA/IGZhbHNlIDogZGF0YUFuZEV2ZW50czsKCQlk ZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5kRXZlbnRzID09IG51bGwgPyBk YXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7CgoJCXJldHVybiB0aGlz Lm1hcCggZnVuY3Rpb24gKCkgewoJCQlyZXR1cm4galF1ZXJ5LmNsb25lKCB0aGlz LCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApOwoJCX0pOwoJfSwK CglodG1sOiBmdW5jdGlvbiggdmFsdWUgKSB7CgkJcmV0dXJuIGpRdWVyeS5hY2Nl c3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHsKCQkJdmFyIGVsZW0gPSB0aGlz WzBdIHx8IHt9LAoJCQkJaSA9IDAsCgkJCQlsID0gdGhpcy5sZW5ndGg7CgoJCQlp ZiAoIHZhbHVlID09PSB1bmRlZmluZWQgKSB7CgkJCQlyZXR1cm4gZWxlbS5ub2Rl VHlwZSA9PT0gMSA/CgkJCQkJZWxlbS5pbm5lckhUTUwucmVwbGFjZSggcmlubGlu ZWpRdWVyeSwgIiIgKSA6CgkJCQkJbnVsbDsKCQkJfQoKCgkJCWlmICggdHlwZW9m IHZhbHVlID09PSAic3RyaW5nIiAmJiAhcm5vSW5uZXJodG1sLnRlc3QoIHZhbHVl ICkgJiYKCQkJCSggalF1ZXJ5LnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UgfHwg IXJsZWFkaW5nV2hpdGVzcGFjZS50ZXN0KCB2YWx1ZSApICkgJiYKCQkJCSF3cmFw TWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgWyIiLCAiIl0gKVsxXS50 b0xvd2VyQ2FzZSgpIF0gKSB7CgoJCQkJdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCBy eGh0bWxUYWcsICI8JDE+PC8kMj4iICk7CgoJCQkJdHJ5IHsKCQkJCQlmb3IgKDsg aSA8IGw7IGkrKyApIHsKCQkJCQkJLy8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5k IHByZXZlbnQgbWVtb3J5IGxlYWtzCgkJCQkJCWVsZW0gPSB0aGlzW2ldIHx8IHt9 OwoJCQkJCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CgkJCQkJCQlqUXVl cnkuY2xlYW5EYXRhKCBlbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCAiKiIgKSAp OwoJCQkJCQkJZWxlbS5pbm5lckhUTUwgPSB2YWx1ZTsKCQkJCQkJfQoJCQkJCX0K CgkJCQkJZWxlbSA9IDA7CgoJCQkJLy8gSWYgdXNpbmcgaW5uZXJIVE1MIHRocm93 cyBhbiBleGNlcHRpb24sIHVzZSB0aGUgZmFsbGJhY2sgbWV0aG9kCgkJCQl9IGNh dGNoKGUpIHt9CgkJCX0KCgkJCWlmICggZWxlbSApIHsKCQkJCXRoaXMuZW1wdHko KS5hcHBlbmQoIHZhbHVlICk7CgkJCX0KCQl9LCBudWxsLCB2YWx1ZSwgYXJndW1l bnRzLmxlbmd0aCApOwoJfSwKCglyZXBsYWNlV2l0aDogZnVuY3Rpb24oIHZhbHVl ICkgewoJCWlmICggdGhpc1swXSAmJiB0aGlzWzBdLnBhcmVudE5vZGUgKSB7CgkJ CS8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBlbGVtZW50cyBhcmUgcmVtb3ZlZCBmcm9t IHRoZSBET00gYmVmb3JlIHRoZXkgYXJlIGluc2VydGVkCgkJCS8vIHRoaXMgY2Fu IGhlbHAgZml4IHJlcGxhY2luZyBhIHBhcmVudCB3aXRoIGNoaWxkIGVsZW1lbnRz CgkJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7CgkJCQlyZXR1 cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHsKCQkJCQl2YXIgc2VsZiA9IGpRdWVy eSh0aGlzKSwgb2xkID0gc2VsZi5odG1sKCk7CgkJCQkJc2VsZi5yZXBsYWNlV2l0 aCggdmFsdWUuY2FsbCggdGhpcywgaSwgb2xkICkgKTsKCQkJCX0pOwoJCQl9CgoJ CQlpZiAoIHR5cGVvZiB2YWx1ZSAhPT0gInN0cmluZyIgKSB7CgkJCQl2YWx1ZSA9 IGpRdWVyeSggdmFsdWUgKS5kZXRhY2goKTsKCQkJfQoKCQkJcmV0dXJuIHRoaXMu ZWFjaChmdW5jdGlvbigpIHsKCQkJCXZhciBuZXh0ID0gdGhpcy5uZXh0U2libGlu ZywKCQkJCQlwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7CgoJCQkJalF1ZXJ5KCB0 aGlzICkucmVtb3ZlKCk7CgoJCQkJaWYgKCBuZXh0ICkgewoJCQkJCWpRdWVyeShu ZXh0KS5iZWZvcmUoIHZhbHVlICk7CgkJCQl9IGVsc2UgewoJCQkJCWpRdWVyeShw YXJlbnQpLmFwcGVuZCggdmFsdWUgKTsKCQkJCX0KCQkJfSk7CgkJfSBlbHNlIHsK CQkJcmV0dXJuIHRoaXMubGVuZ3RoID8KCQkJCXRoaXMucHVzaFN0YWNrKCBqUXVl cnkoalF1ZXJ5LmlzRnVuY3Rpb24odmFsdWUpID8gdmFsdWUoKSA6IHZhbHVlKSwg InJlcGxhY2VXaXRoIiwgdmFsdWUgKSA6CgkJCQl0aGlzOwoJCX0KCX0sCgoJZGV0 YWNoOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CgkJcmV0dXJuIHRoaXMucmVtb3Zl KCBzZWxlY3RvciwgdHJ1ZSApOwoJfSwKCglkb21NYW5pcDogZnVuY3Rpb24oIGFy Z3MsIHRhYmxlLCBjYWxsYmFjayApIHsKCQl2YXIgcmVzdWx0cywgZmlyc3QsIGZy YWdtZW50LCBwYXJlbnQsCgkJCXZhbHVlID0gYXJnc1swXSwKCQkJc2NyaXB0cyA9 IFtdOwoKCQkvLyBXZSBjYW4ndCBjbG9uZU5vZGUgZnJhZ21lbnRzIHRoYXQgY29u dGFpbiBjaGVja2VkLCBpbiBXZWJLaXQKCQlpZiAoICFqUXVlcnkuc3VwcG9ydC5j aGVja0Nsb25lICYmIGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYgdHlwZW9mIHZh bHVlID09PSAic3RyaW5nIiAmJiByY2hlY2tlZC50ZXN0KCB2YWx1ZSApICkgewoJ CQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJalF1ZXJ5KHRoaXMp LmRvbU1hbmlwKCBhcmdzLCB0YWJsZSwgY2FsbGJhY2ssIHRydWUgKTsKCQkJfSk7 CgkJfQoKCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKSApIHsKCQkJcmV0 dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKSB7CgkJCQl2YXIgc2VsZiA9IGpRdWVy eSh0aGlzKTsKCQkJCWFyZ3NbMF0gPSB2YWx1ZS5jYWxsKHRoaXMsIGksIHRhYmxl ID8gc2VsZi5odG1sKCkgOiB1bmRlZmluZWQpOwoJCQkJc2VsZi5kb21NYW5pcCgg YXJncywgdGFibGUsIGNhbGxiYWNrICk7CgkJCX0pOwoJCX0KCgkJaWYgKCB0aGlz WzBdICkgewoJCQlwYXJlbnQgPSB2YWx1ZSAmJiB2YWx1ZS5wYXJlbnROb2RlOwoK CQkJLy8gSWYgd2UncmUgaW4gYSBmcmFnbWVudCwganVzdCB1c2UgdGhhdCBpbnN0 ZWFkIG9mIGJ1aWxkaW5nIGEgbmV3IG9uZQoJCQlpZiAoIGpRdWVyeS5zdXBwb3J0 LnBhcmVudE5vZGUgJiYgcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSA9PT0gMTEg JiYgcGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoID09PSB0aGlzLmxlbmd0aCApIHsK CQkJCXJlc3VsdHMgPSB7IGZyYWdtZW50OiBwYXJlbnQgfTsKCgkJCX0gZWxzZSB7 CgkJCQlyZXN1bHRzID0galF1ZXJ5LmJ1aWxkRnJhZ21lbnQoIGFyZ3MsIHRoaXMs IHNjcmlwdHMgKTsKCQkJfQoKCQkJZnJhZ21lbnQgPSByZXN1bHRzLmZyYWdtZW50 OwoKCQkJaWYgKCBmcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSApIHsK CQkJCWZpcnN0ID0gZnJhZ21lbnQgPSBmcmFnbWVudC5maXJzdENoaWxkOwoJCQl9 IGVsc2UgewoJCQkJZmlyc3QgPSBmcmFnbWVudC5maXJzdENoaWxkOwoJCQl9CgoJ CQlpZiAoIGZpcnN0ICkgewoJCQkJdGFibGUgPSB0YWJsZSAmJiBqUXVlcnkubm9k ZU5hbWUoIGZpcnN0LCAidHIiICk7CgoJCQkJZm9yICggdmFyIGkgPSAwLCBsID0g dGhpcy5sZW5ndGgsIGxhc3RJbmRleCA9IGwgLSAxOyBpIDwgbDsgaSsrICkgewoJ CQkJCWNhbGxiYWNrLmNhbGwoCgkJCQkJCXRhYmxlID8KCQkJCQkJCXJvb3QodGhp c1tpXSwgZmlyc3QpIDoKCQkJCQkJCXRoaXNbaV0sCgkJCQkJCS8vIE1ha2Ugc3Vy ZSB0aGF0IHdlIGRvIG5vdCBsZWFrIG1lbW9yeSBieSBpbmFkdmVydGVudGx5IGRp c2NhcmRpbmcKCQkJCQkJLy8gdGhlIG9yaWdpbmFsIGZyYWdtZW50ICh3aGljaCBt aWdodCBoYXZlIGF0dGFjaGVkIGRhdGEpIGluc3RlYWQgb2YKCQkJCQkJLy8gdXNp bmcgaXQ7IGluIGFkZGl0aW9uLCB1c2UgdGhlIG9yaWdpbmFsIGZyYWdtZW50IG9i amVjdCBmb3IgdGhlIGxhc3QKCQkJCQkJLy8gaXRlbSBpbnN0ZWFkIG9mIGZpcnN0 IGJlY2F1c2UgaXQgY2FuIGVuZCB1cCBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5 CgkJCQkJCS8vIGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoQnVnICM4MDcwKS4KCQkJ CQkJLy8gRnJhZ21lbnRzIGZyb20gdGhlIGZyYWdtZW50IGNhY2hlIG11c3QgYWx3 YXlzIGJlIGNsb25lZCBhbmQgbmV2ZXIgdXNlZAoJCQkJCQkvLyBpbiBwbGFjZS4K CQkJCQkJcmVzdWx0cy5jYWNoZWFibGUgfHwgKCBsID4gMSAmJiBpIDwgbGFzdElu ZGV4ICkgPwoJCQkJCQkJalF1ZXJ5LmNsb25lKCBmcmFnbWVudCwgdHJ1ZSwgdHJ1 ZSApIDoKCQkJCQkJCWZyYWdtZW50CgkJCQkJKTsKCQkJCX0KCQkJfQoKCQkJaWYg KCBzY3JpcHRzLmxlbmd0aCApIHsKCQkJCWpRdWVyeS5lYWNoKCBzY3JpcHRzLCBm dW5jdGlvbiggaSwgZWxlbSApIHsKCQkJCQlpZiAoIGVsZW0uc3JjICkgewoJCQkJ CQlqUXVlcnkuYWpheCh7CgkJCQkJCQl0eXBlOiAiR0VUIiwKCQkJCQkJCWdsb2Jh bDogZmFsc2UsCgkJCQkJCQl1cmw6IGVsZW0uc3JjLAoJCQkJCQkJYXN5bmM6IGZh bHNlLAoJCQkJCQkJZGF0YVR5cGU6ICJzY3JpcHQiCgkJCQkJCX0pOwoJCQkJCX0g ZWxzZSB7CgkJCQkJCWpRdWVyeS5nbG9iYWxFdmFsKCAoIGVsZW0udGV4dCB8fCBl bGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJIVE1MIHx8ICIiICkucmVwbGFj ZSggcmNsZWFuU2NyaXB0LCAiLyokMCovIiApICk7CgkJCQkJfQoKCQkJCQlpZiAo IGVsZW0ucGFyZW50Tm9kZSApIHsKCQkJCQkJZWxlbS5wYXJlbnROb2RlLnJlbW92 ZUNoaWxkKCBlbGVtICk7CgkJCQkJfQoJCQkJfSk7CgkJCX0KCQl9CgoJCXJldHVy biB0aGlzOwoJfQp9KTsKCmZ1bmN0aW9uIHJvb3QoIGVsZW0sIGN1ciApIHsKCXJl dHVybiBqUXVlcnkubm9kZU5hbWUoZWxlbSwgInRhYmxlIikgPwoJCShlbGVtLmdl dEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdIHx8CgkJZWxlbS5hcHBlbmRD aGlsZChlbGVtLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSkp IDoKCQllbGVtOwp9CgpmdW5jdGlvbiBjbG9uZUNvcHlFdmVudCggc3JjLCBkZXN0 ICkgewoKCWlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSB8fCAhalF1ZXJ5Lmhhc0Rh dGEoIHNyYyApICkgewoJCXJldHVybjsKCX0KCgl2YXIgdHlwZSwgaSwgbCwKCQlv bGREYXRhID0galF1ZXJ5Ll9kYXRhKCBzcmMgKSwKCQljdXJEYXRhID0galF1ZXJ5 Ll9kYXRhKCBkZXN0LCBvbGREYXRhICksCgkJZXZlbnRzID0gb2xkRGF0YS5ldmVu dHM7CgoJaWYgKCBldmVudHMgKSB7CgkJZGVsZXRlIGN1ckRhdGEuaGFuZGxlOwoJ CWN1ckRhdGEuZXZlbnRzID0ge307CgoJCWZvciAoIHR5cGUgaW4gZXZlbnRzICkg ewoJCQlmb3IgKCBpID0gMCwgbCA9IGV2ZW50c1sgdHlwZSBdLmxlbmd0aDsgaSA8 IGw7IGkrKyApIHsKCQkJCWpRdWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2 ZW50c1sgdHlwZSBdWyBpIF0gKTsKCQkJfQoJCX0KCX0KCgkvLyBtYWtlIHRoZSBj bG9uZWQgcHVibGljIGRhdGEgb2JqZWN0IGEgY29weSBmcm9tIHRoZSBvcmlnaW5h bAoJaWYgKCBjdXJEYXRhLmRhdGEgKSB7CgkJY3VyRGF0YS5kYXRhID0galF1ZXJ5 LmV4dGVuZCgge30sIGN1ckRhdGEuZGF0YSApOwoJfQp9CgpmdW5jdGlvbiBjbG9u ZUZpeEF0dHJpYnV0ZXMoIHNyYywgZGVzdCApIHsKCXZhciBub2RlTmFtZTsKCgkv LyBXZSBkbyBub3QgbmVlZCB0byBkbyBhbnl0aGluZyBmb3Igbm9uLUVsZW1lbnRz CglpZiAoIGRlc3Qubm9kZVR5cGUgIT09IDEgKSB7CgkJcmV0dXJuOwoJfQoKCS8v IGNsZWFyQXR0cmlidXRlcyByZW1vdmVzIHRoZSBhdHRyaWJ1dGVzLCB3aGljaCB3 ZSBkb24ndCB3YW50LAoJLy8gYnV0IGFsc28gcmVtb3ZlcyB0aGUgYXR0YWNoRXZl bnQgZXZlbnRzLCB3aGljaCB3ZSAqZG8qIHdhbnQKCWlmICggZGVzdC5jbGVhckF0 dHJpYnV0ZXMgKSB7CgkJZGVzdC5jbGVhckF0dHJpYnV0ZXMoKTsKCX0KCgkvLyBt ZXJnZUF0dHJpYnV0ZXMsIGluIGNvbnRyYXN0LCBvbmx5IG1lcmdlcyBiYWNrIG9u IHRoZQoJLy8gb3JpZ2luYWwgYXR0cmlidXRlcywgbm90IHRoZSBldmVudHMKCWlm ICggZGVzdC5tZXJnZUF0dHJpYnV0ZXMgKSB7CgkJZGVzdC5tZXJnZUF0dHJpYnV0 ZXMoIHNyYyApOwoJfQoKCW5vZGVOYW1lID0gZGVzdC5ub2RlTmFtZS50b0xvd2Vy Q2FzZSgpOwoKCS8vIElFNi04IGZhaWwgdG8gY2xvbmUgY2hpbGRyZW4gaW5zaWRl IG9iamVjdCBlbGVtZW50cyB0aGF0IHVzZQoJLy8gdGhlIHByb3ByaWV0YXJ5IGNs YXNzaWQgYXR0cmlidXRlIHZhbHVlIChyYXRoZXIgdGhhbiB0aGUgdHlwZQoJLy8g YXR0cmlidXRlKSB0byBpZGVudGlmeSB0aGUgdHlwZSBvZiBjb250ZW50IHRvIGRp c3BsYXkKCWlmICggbm9kZU5hbWUgPT09ICJvYmplY3QiICkgewoJCWRlc3Qub3V0 ZXJIVE1MID0gc3JjLm91dGVySFRNTDsKCgl9IGVsc2UgaWYgKCBub2RlTmFtZSA9 PT0gImlucHV0IiAmJiAoc3JjLnR5cGUgPT09ICJjaGVja2JveCIgfHwgc3JjLnR5 cGUgPT09ICJyYWRpbyIpICkgewoJCS8vIElFNi04IGZhaWxzIHRvIHBlcnNpc3Qg dGhlIGNoZWNrZWQgc3RhdGUgb2YgYSBjbG9uZWQgY2hlY2tib3gKCQkvLyBvciBy YWRpbyBidXR0b24uIFdvcnNlLCBJRTYtNyBmYWlsIHRvIGdpdmUgdGhlIGNsb25l ZCBlbGVtZW50CgkJLy8gYSBjaGVja2VkIGFwcGVhcmFuY2UgaWYgdGhlIGRlZmF1 bHRDaGVja2VkIHZhbHVlIGlzbid0IGFsc28gc2V0CgkJaWYgKCBzcmMuY2hlY2tl ZCApIHsKCQkJZGVzdC5kZWZhdWx0Q2hlY2tlZCA9IGRlc3QuY2hlY2tlZCA9IHNy Yy5jaGVja2VkOwoJCX0KCgkJLy8gSUU2LTcgZ2V0IGNvbmZ1c2VkIGFuZCBlbmQg dXAgc2V0dGluZyB0aGUgdmFsdWUgb2YgYSBjbG9uZWQKCQkvLyBjaGVja2JveC9y YWRpbyBidXR0b24gdG8gYW4gZW1wdHkgc3RyaW5nIGluc3RlYWQgb2YgIm9uIgoJ CWlmICggZGVzdC52YWx1ZSAhPT0gc3JjLnZhbHVlICkgewoJCQlkZXN0LnZhbHVl ID0gc3JjLnZhbHVlOwoJCX0KCgkvLyBJRTYtOCBmYWlscyB0byByZXR1cm4gdGhl IHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3RlZAoJLy8gc3Rh dGUgd2hlbiBjbG9uaW5nIG9wdGlvbnMKCX0gZWxzZSBpZiAoIG5vZGVOYW1lID09 PSAib3B0aW9uIiApIHsKCQlkZXN0LnNlbGVjdGVkID0gc3JjLmRlZmF1bHRTZWxl Y3RlZDsKCgkvLyBJRTYtOCBmYWlscyB0byBzZXQgdGhlIGRlZmF1bHRWYWx1ZSB0 byB0aGUgY29ycmVjdCB2YWx1ZSB3aGVuCgkvLyBjbG9uaW5nIG90aGVyIHR5cGVz IG9mIGlucHV0IGZpZWxkcwoJfSBlbHNlIGlmICggbm9kZU5hbWUgPT09ICJpbnB1 dCIgfHwgbm9kZU5hbWUgPT09ICJ0ZXh0YXJlYSIgKSB7CgkJZGVzdC5kZWZhdWx0 VmFsdWUgPSBzcmMuZGVmYXVsdFZhbHVlOwoKCS8vIElFIGJsYW5rcyBjb250ZW50 cyB3aGVuIGNsb25pbmcgc2NyaXB0cwoJfSBlbHNlIGlmICggbm9kZU5hbWUgPT09 ICJzY3JpcHQiICYmIGRlc3QudGV4dCAhPT0gc3JjLnRleHQgKSB7CgkJZGVzdC50 ZXh0ID0gc3JjLnRleHQ7Cgl9CgoJLy8gRXZlbnQgZGF0YSBnZXRzIHJlZmVyZW5j ZWQgaW5zdGVhZCBvZiBjb3BpZWQgaWYgdGhlIGV4cGFuZG8KCS8vIGdldHMgY29w aWVkIHRvbwoJZGVzdC5yZW1vdmVBdHRyaWJ1dGUoIGpRdWVyeS5leHBhbmRvICk7 CgoJLy8gQ2xlYXIgZmxhZ3MgZm9yIGJ1YmJsaW5nIHNwZWNpYWwgY2hhbmdlL3N1 Ym1pdCBldmVudHMsIHRoZXkgbXVzdAoJLy8gYmUgcmVhdHRhY2hlZCB3aGVuIHRo ZSBuZXdseSBjbG9uZWQgZXZlbnRzIGFyZSBmaXJzdCBhY3RpdmF0ZWQKCWRlc3Qu cmVtb3ZlQXR0cmlidXRlKCAiX3N1Ym1pdF9hdHRhY2hlZCIgKTsKCWRlc3QucmVt b3ZlQXR0cmlidXRlKCAiX2NoYW5nZV9hdHRhY2hlZCIgKTsKfQoKalF1ZXJ5LmJ1 aWxkRnJhZ21lbnQgPSBmdW5jdGlvbiggYXJncywgbm9kZXMsIHNjcmlwdHMgKSB7 Cgl2YXIgZnJhZ21lbnQsIGNhY2hlYWJsZSwgY2FjaGVyZXN1bHRzLCBkb2MsCglm aXJzdCA9IGFyZ3NbIDAgXTsKCgkvLyBub2RlcyBtYXkgY29udGFpbiBlaXRoZXIg YW4gZXhwbGljaXQgZG9jdW1lbnQgb2JqZWN0LAoJLy8gYSBqUXVlcnkgY29sbGVj dGlvbiBvciBjb250ZXh0IG9iamVjdC4KCS8vIElmIG5vZGVzWzBdIGNvbnRhaW5z IGEgdmFsaWQgb2JqZWN0IHRvIGFzc2lnbiB0byBkb2MKCWlmICggbm9kZXMgJiYg bm9kZXNbMF0gKSB7CgkJZG9jID0gbm9kZXNbMF0ub3duZXJEb2N1bWVudCB8fCBu b2Rlc1swXTsKCX0KCgkvLyBFbnN1cmUgdGhhdCBhbiBhdHRyIG9iamVjdCBkb2Vz bid0IGluY29ycmVjdGx5IHN0YW5kIGluIGFzIGEgZG9jdW1lbnQgb2JqZWN0Cgkv LyBDaHJvbWUgYW5kIEZpcmVmb3ggc2VlbSB0byBhbGxvdyB0aGlzIHRvIG9jY3Vy IGFuZCB3aWxsIHRocm93IGV4Y2VwdGlvbgoJLy8gRml4ZXMgIzg5NTAKCWlmICgg IWRvYy5jcmVhdGVEb2N1bWVudEZyYWdtZW50ICkgewoJCWRvYyA9IGRvY3VtZW50 OwoJfQoKCS8vIE9ubHkgY2FjaGUgInNtYWxsIiAoMS8yIEtCKSBIVE1MIHN0cmlu Z3MgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBtYWluIGRvY3VtZW50Cgkv LyBDbG9uaW5nIG9wdGlvbnMgbG9zZXMgdGhlIHNlbGVjdGVkIHN0YXRlLCBzbyBk b24ndCBjYWNoZSB0aGVtCgkvLyBJRSA2IGRvZXNuJ3QgbGlrZSBpdCB3aGVuIHlv dSBwdXQgPG9iamVjdD4gb3IgPGVtYmVkPiBlbGVtZW50cyBpbiBhIGZyYWdtZW50 CgkvLyBBbHNvLCBXZWJLaXQgZG9lcyBub3QgY2xvbmUgJ2NoZWNrZWQnIGF0dHJp YnV0ZXMgb24gY2xvbmVOb2RlLCBzbyBkb24ndCBjYWNoZQoJLy8gTGFzdGx5LCBJ RTYsNyw4IHdpbGwgbm90IGNvcnJlY3RseSByZXVzZSBjYWNoZWQgZnJhZ21lbnRz IHRoYXQgd2VyZSBjcmVhdGVkIGZyb20gdW5rbm93biBlbGVtcyAjMTA1MDEKCWlm ICggYXJncy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIGZpcnN0ID09PSAic3RyaW5n IiAmJiBmaXJzdC5sZW5ndGggPCA1MTIgJiYgZG9jID09PSBkb2N1bWVudCAmJgoJ CWZpcnN0LmNoYXJBdCgwKSA9PT0gIjwiICYmICFybm9jYWNoZS50ZXN0KCBmaXJz dCApICYmCgkJKGpRdWVyeS5zdXBwb3J0LmNoZWNrQ2xvbmUgfHwgIXJjaGVja2Vk LnRlc3QoIGZpcnN0ICkpICYmCgkJKGpRdWVyeS5zdXBwb3J0Lmh0bWw1Q2xvbmUg fHwgIXJub3NoaW1jYWNoZS50ZXN0KCBmaXJzdCApKSApIHsKCgkJY2FjaGVhYmxl ID0gdHJ1ZTsKCgkJY2FjaGVyZXN1bHRzID0galF1ZXJ5LmZyYWdtZW50c1sgZmly c3QgXTsKCQlpZiAoIGNhY2hlcmVzdWx0cyAmJiBjYWNoZXJlc3VsdHMgIT09IDEg KSB7CgkJCWZyYWdtZW50ID0gY2FjaGVyZXN1bHRzOwoJCX0KCX0KCglpZiAoICFm cmFnbWVudCApIHsKCQlmcmFnbWVudCA9IGRvYy5jcmVhdGVEb2N1bWVudEZyYWdt ZW50KCk7CgkJalF1ZXJ5LmNsZWFuKCBhcmdzLCBkb2MsIGZyYWdtZW50LCBzY3Jp cHRzICk7Cgl9CgoJaWYgKCBjYWNoZWFibGUgKSB7CgkJalF1ZXJ5LmZyYWdtZW50 c1sgZmlyc3QgXSA9IGNhY2hlcmVzdWx0cyA/IGZyYWdtZW50IDogMTsKCX0KCgly ZXR1cm4geyBmcmFnbWVudDogZnJhZ21lbnQsIGNhY2hlYWJsZTogY2FjaGVhYmxl IH07Cn07CgpqUXVlcnkuZnJhZ21lbnRzID0ge307CgpqUXVlcnkuZWFjaCh7Cglh cHBlbmRUbzogImFwcGVuZCIsCglwcmVwZW5kVG86ICJwcmVwZW5kIiwKCWluc2Vy dEJlZm9yZTogImJlZm9yZSIsCglpbnNlcnRBZnRlcjogImFmdGVyIiwKCXJlcGxh Y2VBbGw6ICJyZXBsYWNlV2l0aCIKfSwgZnVuY3Rpb24oIG5hbWUsIG9yaWdpbmFs ICkgewoJalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc2VsZWN0b3IgKSB7 CgkJdmFyIHJldCA9IFtdLAoJCQlpbnNlcnQgPSBqUXVlcnkoIHNlbGVjdG9yICks CgkJCXBhcmVudCA9IHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXNbMF0ucGFyZW50 Tm9kZTsKCgkJaWYgKCBwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlID09PSAxMSAm JiBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgJiYgaW5zZXJ0Lmxlbmd0 aCA9PT0gMSApIHsKCQkJaW5zZXJ0WyBvcmlnaW5hbCBdKCB0aGlzWzBdICk7CgkJ CXJldHVybiB0aGlzOwoKCQl9IGVsc2UgewoJCQlmb3IgKCB2YXIgaSA9IDAsIGwg PSBpbnNlcnQubGVuZ3RoOyBpIDwgbDsgaSsrICkgewoJCQkJdmFyIGVsZW1zID0g KCBpID4gMCA/IHRoaXMuY2xvbmUodHJ1ZSkgOiB0aGlzICkuZ2V0KCk7CgkJCQlq UXVlcnkoIGluc2VydFtpXSApWyBvcmlnaW5hbCBdKCBlbGVtcyApOwoJCQkJcmV0 ID0gcmV0LmNvbmNhdCggZWxlbXMgKTsKCQkJfQoKCQkJcmV0dXJuIHRoaXMucHVz aFN0YWNrKCByZXQsIG5hbWUsIGluc2VydC5zZWxlY3RvciApOwoJCX0KCX07Cn0p OwoKZnVuY3Rpb24gZ2V0QWxsKCBlbGVtICkgewoJaWYgKCB0eXBlb2YgZWxlbS5n ZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgKSB7CgkJcmV0dXJu IGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoICIqIiApOwoKCX0gZWxzZSBpZiAo IHR5cGVvZiBlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwgIT09ICJ1bmRlZmluZWQiICkg ewoJCXJldHVybiBlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwoICIqIiApOwoKCX0gZWxz ZSB7CgkJcmV0dXJuIFtdOwoJfQp9CgovLyBVc2VkIGluIGNsZWFuLCBmaXhlcyB0 aGUgZGVmYXVsdENoZWNrZWQgcHJvcGVydHkKZnVuY3Rpb24gZml4RGVmYXVsdENo ZWNrZWQoIGVsZW0gKSB7CglpZiAoIGVsZW0udHlwZSA9PT0gImNoZWNrYm94IiB8 fCBlbGVtLnR5cGUgPT09ICJyYWRpbyIgKSB7CgkJZWxlbS5kZWZhdWx0Q2hlY2tl ZCA9IGVsZW0uY2hlY2tlZDsKCX0KfQovLyBGaW5kcyBhbGwgaW5wdXRzIGFuZCBw YXNzZXMgdGhlbSB0byBmaXhEZWZhdWx0Q2hlY2tlZApmdW5jdGlvbiBmaW5kSW5w dXRzKCBlbGVtICkgewoJdmFyIG5vZGVOYW1lID0gKCBlbGVtLm5vZGVOYW1lIHx8 ICIiICkudG9Mb3dlckNhc2UoKTsKCWlmICggbm9kZU5hbWUgPT09ICJpbnB1dCIg KSB7CgkJZml4RGVmYXVsdENoZWNrZWQoIGVsZW0gKTsKCS8vIFNraXAgc2NyaXB0 cywgZ2V0IG90aGVyIGNoaWxkcmVuCgl9IGVsc2UgaWYgKCBub2RlTmFtZSAhPT0g InNjcmlwdCIgJiYgdHlwZW9mIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09 ICJ1bmRlZmluZWQiICkgewoJCWpRdWVyeS5ncmVwKCBlbGVtLmdldEVsZW1lbnRz QnlUYWdOYW1lKCJpbnB1dCIpLCBmaXhEZWZhdWx0Q2hlY2tlZCApOwoJfQp9Cgov LyBEZXJpdmVkIEZyb206IGh0dHA6Ly93d3cuaWVjc3MuY29tL3NoaW1wcm92ZS9q YXZhc2NyaXB0L3NoaW1wcm92ZS4xLTAtMS5qcwpmdW5jdGlvbiBzaGltQ2xvbmVO b2RlKCBlbGVtICkgewoJdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo ICJkaXYiICk7CglzYWZlRnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGRpdiApOwoKCWRp di5pbm5lckhUTUwgPSBlbGVtLm91dGVySFRNTDsKCXJldHVybiBkaXYuZmlyc3RD aGlsZDsKfQoKalF1ZXJ5LmV4dGVuZCh7CgljbG9uZTogZnVuY3Rpb24oIGVsZW0s IGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkgewoJCXZhciBzcmNF bGVtZW50cywKCQkJZGVzdEVsZW1lbnRzLAoJCQlpLAoJCQkvLyBJRTw9OCBkb2Vz IG5vdCBwcm9wZXJseSBjbG9uZSBkZXRhY2hlZCwgdW5rbm93biBlbGVtZW50IG5v ZGVzCgkJCWNsb25lID0galF1ZXJ5LnN1cHBvcnQuaHRtbDVDbG9uZSB8fCBqUXVl cnkuaXNYTUxEb2MoZWxlbSkgfHwgIXJub3NoaW1jYWNoZS50ZXN0KCAiPCIgKyBl bGVtLm5vZGVOYW1lICsgIj4iICkgPwoJCQkJZWxlbS5jbG9uZU5vZGUoIHRydWUg KSA6CgkJCQlzaGltQ2xvbmVOb2RlKCBlbGVtICk7CgoJCWlmICggKCFqUXVlcnku c3VwcG9ydC5ub0Nsb25lRXZlbnQgfHwgIWpRdWVyeS5zdXBwb3J0Lm5vQ2xvbmVD aGVja2VkKSAmJgoJCQkJKGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgZWxlbS5ub2Rl VHlwZSA9PT0gMTEpICYmICFqUXVlcnkuaXNYTUxEb2MoZWxlbSkgKSB7CgkJCS8v IElFIGNvcGllcyBldmVudHMgYm91bmQgdmlhIGF0dGFjaEV2ZW50IHdoZW4gdXNp bmcgY2xvbmVOb2RlLgoJCQkvLyBDYWxsaW5nIGRldGFjaEV2ZW50IG9uIHRoZSBj bG9uZSB3aWxsIGFsc28gcmVtb3ZlIHRoZSBldmVudHMKCQkJLy8gZnJvbSB0aGUg b3JpZ2luYWwuIEluIG9yZGVyIHRvIGdldCBhcm91bmQgdGhpcywgd2UgdXNlIHNv bWUKCQkJLy8gcHJvcHJpZXRhcnkgbWV0aG9kcyB0byBjbGVhciB0aGUgZXZlbnRz LiBUaGFua3MgdG8gTW9vVG9vbHMKCQkJLy8gZ3V5cyBmb3IgdGhpcyBob3RuZXNz LgoKCQkJY2xvbmVGaXhBdHRyaWJ1dGVzKCBlbGVtLCBjbG9uZSApOwoKCQkJLy8g VXNpbmcgU2l6emxlIGhlcmUgaXMgY3Jhenkgc2xvdywgc28gd2UgdXNlIGdldEVs ZW1lbnRzQnlUYWdOYW1lIGluc3RlYWQKCQkJc3JjRWxlbWVudHMgPSBnZXRBbGwo IGVsZW0gKTsKCQkJZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApOwoKCQkJ Ly8gV2VpcmQgaXRlcmF0aW9uIGJlY2F1c2UgSUUgd2lsbCByZXBsYWNlIHRoZSBs ZW5ndGggcHJvcGVydHkKCQkJLy8gd2l0aCBhbiBlbGVtZW50IGlmIHlvdSBhcmUg Y2xvbmluZyB0aGUgYm9keSBhbmQgb25lIG9mIHRoZQoJCQkvLyBlbGVtZW50cyBv biB0aGUgcGFnZSBoYXMgYSBuYW1lIG9yIGlkIG9mICJsZW5ndGgiCgkJCWZvciAo IGkgPSAwOyBzcmNFbGVtZW50c1tpXTsgKytpICkgewoJCQkJLy8gRW5zdXJlIHRo YXQgdGhlIGRlc3RpbmF0aW9uIG5vZGUgaXMgbm90IG51bGw7IEZpeGVzICM5NTg3 CgkJCQlpZiAoIGRlc3RFbGVtZW50c1tpXSApIHsKCQkJCQljbG9uZUZpeEF0dHJp YnV0ZXMoIHNyY0VsZW1lbnRzW2ldLCBkZXN0RWxlbWVudHNbaV0gKTsKCQkJCX0K CQkJfQoJCX0KCgkJLy8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFs IHRvIHRoZSBjbG9uZQoJCWlmICggZGF0YUFuZEV2ZW50cyApIHsKCQkJY2xvbmVD b3B5RXZlbnQoIGVsZW0sIGNsb25lICk7CgoJCQlpZiAoIGRlZXBEYXRhQW5kRXZl bnRzICkgewoJCQkJc3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTsKCQkJCWRl c3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUgKTsKCgkJCQlmb3IgKCBpID0gMDsg c3JjRWxlbWVudHNbaV07ICsraSApIHsKCQkJCQljbG9uZUNvcHlFdmVudCggc3Jj RWxlbWVudHNbaV0sIGRlc3RFbGVtZW50c1tpXSApOwoJCQkJfQoJCQl9CgkJfQoK CQlzcmNFbGVtZW50cyA9IGRlc3RFbGVtZW50cyA9IG51bGw7CgoJCS8vIFJldHVy biB0aGUgY2xvbmVkIHNldAoJCXJldHVybiBjbG9uZTsKCX0sCgoJY2xlYW46IGZ1 bmN0aW9uKCBlbGVtcywgY29udGV4dCwgZnJhZ21lbnQsIHNjcmlwdHMgKSB7CgkJ dmFyIGNoZWNrU2NyaXB0VHlwZSwgc2NyaXB0LCBqLAoJCQkJcmV0ID0gW107CgoJ CWNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50OwoKCQkvLyAhY29udGV4dC5j cmVhdGVFbGVtZW50IGZhaWxzIGluIElFIHdpdGggYW4gZXJyb3IgYnV0IHJldHVy bnMgdHlwZW9mICdvYmplY3QnCgkJaWYgKCB0eXBlb2YgY29udGV4dC5jcmVhdGVF bGVtZW50ID09PSAidW5kZWZpbmVkIiApIHsKCQkJY29udGV4dCA9IGNvbnRleHQu b3duZXJEb2N1bWVudCB8fCBjb250ZXh0WzBdICYmIGNvbnRleHRbMF0ub3duZXJE b2N1bWVudCB8fCBkb2N1bWVudDsKCQl9CgoJCWZvciAoIHZhciBpID0gMCwgZWxl bTsgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkgewoJCQlpZiAoIHR5 cGVvZiBlbGVtID09PSAibnVtYmVyIiApIHsKCQkJCWVsZW0gKz0gIiI7CgkJCX0K CgkJCWlmICggIWVsZW0gKSB7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJLy8gQ29u dmVydCBodG1sIHN0cmluZyBpbnRvIERPTSBub2RlcwoJCQlpZiAoIHR5cGVvZiBl bGVtID09PSAic3RyaW5nIiApIHsKCQkJCWlmICggIXJodG1sLnRlc3QoIGVsZW0g KSApIHsKCQkJCQllbGVtID0gY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggZWxlbSAp OwoJCQkJfSBlbHNlIHsKCQkJCQkvLyBGaXggIlhIVE1MIi1zdHlsZSB0YWdzIGlu IGFsbCBicm93c2VycwoJCQkJCWVsZW0gPSBlbGVtLnJlcGxhY2UocnhodG1sVGFn LCAiPCQxPjwvJDI+Iik7CgoJCQkJCS8vIFRyaW0gd2hpdGVzcGFjZSwgb3RoZXJ3 aXNlIGluZGV4T2Ygd29uJ3Qgd29yayBhcyBleHBlY3RlZAoJCQkJCXZhciB0YWcg PSAoIHJ0YWdOYW1lLmV4ZWMoIGVsZW0gKSB8fCBbIiIsICIiXSApWzFdLnRvTG93 ZXJDYXNlKCksCgkJCQkJCXdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFw Ll9kZWZhdWx0LAoJCQkJCQlkZXB0aCA9IHdyYXBbMF0sCgkJCQkJCWRpdiA9IGNv bnRleHQuY3JlYXRlRWxlbWVudCgiZGl2IiksCgkJCQkJCXNhZmVDaGlsZE5vZGVz ID0gc2FmZUZyYWdtZW50LmNoaWxkTm9kZXMsCgkJCQkJCXJlbW92ZTsKCgkJCQkJ Ly8gQXBwZW5kIHdyYXBwZXIgZWxlbWVudCB0byB1bmtub3duIGVsZW1lbnQgc2Fm ZSBkb2MgZnJhZ21lbnQKCQkJCQlpZiAoIGNvbnRleHQgPT09IGRvY3VtZW50ICkg ewoJCQkJCQkvLyBVc2UgdGhlIGZyYWdtZW50IHdlJ3ZlIGFscmVhZHkgY3JlYXRl ZCBmb3IgdGhpcyBkb2N1bWVudAoJCQkJCQlzYWZlRnJhZ21lbnQuYXBwZW5kQ2hp bGQoIGRpdiApOwoJCQkJCX0gZWxzZSB7CgkJCQkJCS8vIFVzZSBhIGZyYWdtZW50 IGNyZWF0ZWQgd2l0aCB0aGUgb3duZXIgZG9jdW1lbnQKCQkJCQkJY3JlYXRlU2Fm ZUZyYWdtZW50KCBjb250ZXh0ICkuYXBwZW5kQ2hpbGQoIGRpdiApOwoJCQkJCX0K CgkJCQkJLy8gR28gdG8gaHRtbCBhbmQgYmFjaywgdGhlbiBwZWVsIG9mZiBleHRy YSB3cmFwcGVycwoJCQkJCWRpdi5pbm5lckhUTUwgPSB3cmFwWzFdICsgZWxlbSAr IHdyYXBbMl07CgoJCQkJCS8vIE1vdmUgdG8gdGhlIHJpZ2h0IGRlcHRoCgkJCQkJ d2hpbGUgKCBkZXB0aC0tICkgewoJCQkJCQlkaXYgPSBkaXYubGFzdENoaWxkOwoJ CQkJCX0KCgkJCQkJLy8gUmVtb3ZlIElFJ3MgYXV0b2luc2VydGVkIDx0Ym9keT4g ZnJvbSB0YWJsZSBmcmFnbWVudHMKCQkJCQlpZiAoICFqUXVlcnkuc3VwcG9ydC50 Ym9keSApIHsKCgkJCQkJCS8vIFN0cmluZyB3YXMgYSA8dGFibGU+LCAqbWF5KiBo YXZlIHNwdXJpb3VzIDx0Ym9keT4KCQkJCQkJdmFyIGhhc0JvZHkgPSBydGJvZHku dGVzdChlbGVtKSwKCQkJCQkJCXRib2R5ID0gdGFnID09PSAidGFibGUiICYmICFo YXNCb2R5ID8KCQkJCQkJCQlkaXYuZmlyc3RDaGlsZCAmJiBkaXYuZmlyc3RDaGls ZC5jaGlsZE5vZGVzIDoKCgkJCQkJCQkJLy8gU3RyaW5nIHdhcyBhIGJhcmUgPHRo ZWFkPiBvciA8dGZvb3Q+CgkJCQkJCQkJd3JhcFsxXSA9PT0gIjx0YWJsZT4iICYm ICFoYXNCb2R5ID8KCQkJCQkJCQkJZGl2LmNoaWxkTm9kZXMgOgoJCQkJCQkJCQlb XTsKCgkJCQkJCWZvciAoIGogPSB0Ym9keS5sZW5ndGggLSAxOyBqID49IDAgOyAt LWogKSB7CgkJCQkJCQlpZiAoIGpRdWVyeS5ub2RlTmFtZSggdGJvZHlbIGogXSwg InRib2R5IiApICYmICF0Ym9keVsgaiBdLmNoaWxkTm9kZXMubGVuZ3RoICkgewoJ CQkJCQkJCXRib2R5WyBqIF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdGJvZHlb IGogXSApOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoKCQkJCQkvLyBJRSBjb21w bGV0ZWx5IGtpbGxzIGxlYWRpbmcgd2hpdGVzcGFjZSB3aGVuIGlubmVySFRNTCBp cyB1c2VkCgkJCQkJaWYgKCAhalF1ZXJ5LnN1cHBvcnQubGVhZGluZ1doaXRlc3Bh Y2UgJiYgcmxlYWRpbmdXaGl0ZXNwYWNlLnRlc3QoIGVsZW0gKSApIHsKCQkJCQkJ ZGl2Lmluc2VydEJlZm9yZSggY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggcmxlYWRp bmdXaGl0ZXNwYWNlLmV4ZWMoZWxlbSlbMF0gKSwgZGl2LmZpcnN0Q2hpbGQgKTsK CQkJCQl9CgoJCQkJCWVsZW0gPSBkaXYuY2hpbGROb2RlczsKCgkJCQkJLy8gQ2xl YXIgZWxlbWVudHMgZnJvbSBEb2N1bWVudEZyYWdtZW50IChzYWZlRnJhZ21lbnQg b3Igb3RoZXJ3aXNlKQoJCQkJCS8vIHRvIGF2b2lkIGhvYXJkaW5nIGVsZW1lbnRz LiBGaXhlcyAjMTEzNTYKCQkJCQlpZiAoIGRpdiApIHsKCQkJCQkJZGl2LnBhcmVu dE5vZGUucmVtb3ZlQ2hpbGQoIGRpdiApOwoKCQkJCQkJLy8gR3VhcmQgYWdhaW5z dCAtMSBpbmRleCBleGNlcHRpb25zIGluIEZGMy42CgkJCQkJCWlmICggc2FmZUNo aWxkTm9kZXMubGVuZ3RoID4gMCApIHsKCQkJCQkJCXJlbW92ZSA9IHNhZmVDaGls ZE5vZGVzWyBzYWZlQ2hpbGROb2Rlcy5sZW5ndGggLSAxIF07CgoJCQkJCQkJaWYg KCByZW1vdmUgJiYgcmVtb3ZlLnBhcmVudE5vZGUgKSB7CgkJCQkJCQkJcmVtb3Zl LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHJlbW92ZSApOwoJCQkJCQkJfQoJCQkJ CQl9CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQkvLyBSZXNldHMgZGVmYXVsdENoZWNr ZWQgZm9yIGFueSByYWRpb3MgYW5kIGNoZWNrYm94ZXMKCQkJLy8gYWJvdXQgdG8g YmUgYXBwZW5kZWQgdG8gdGhlIERPTSBpbiBJRSA2LzcgKCM4MDYwKQoJCQl2YXIg bGVuOwoJCQlpZiAoICFqUXVlcnkuc3VwcG9ydC5hcHBlbmRDaGVja2VkICkgewoJ CQkJaWYgKCBlbGVtWzBdICYmIHR5cGVvZiAobGVuID0gZWxlbS5sZW5ndGgpID09 PSAibnVtYmVyIiApIHsKCQkJCQlmb3IgKCBqID0gMDsgaiA8IGxlbjsgaisrICkg ewoJCQkJCQlmaW5kSW5wdXRzKCBlbGVtW2pdICk7CgkJCQkJfQoJCQkJfSBlbHNl IHsKCQkJCQlmaW5kSW5wdXRzKCBlbGVtICk7CgkJCQl9CgkJCX0KCgkJCWlmICgg ZWxlbS5ub2RlVHlwZSApIHsKCQkJCXJldC5wdXNoKCBlbGVtICk7CgkJCX0gZWxz ZSB7CgkJCQlyZXQgPSBqUXVlcnkubWVyZ2UoIHJldCwgZWxlbSApOwoJCQl9CgkJ fQoKCQlpZiAoIGZyYWdtZW50ICkgewoJCQljaGVja1NjcmlwdFR5cGUgPSBmdW5j dGlvbiggZWxlbSApIHsKCQkJCXJldHVybiAhZWxlbS50eXBlIHx8IHJzY3JpcHRU eXBlLnRlc3QoIGVsZW0udHlwZSApOwoJCQl9OwoJCQlmb3IgKCBpID0gMDsgcmV0 W2ldOyBpKysgKSB7CgkJCQlzY3JpcHQgPSByZXRbaV07CgkJCQlpZiAoIHNjcmlw dHMgJiYgalF1ZXJ5Lm5vZGVOYW1lKCBzY3JpcHQsICJzY3JpcHQiICkgJiYgKCFz Y3JpcHQudHlwZSB8fCByc2NyaXB0VHlwZS50ZXN0KCBzY3JpcHQudHlwZSApKSAp IHsKCQkJCQlzY3JpcHRzLnB1c2goIHNjcmlwdC5wYXJlbnROb2RlID8gc2NyaXB0 LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHNjcmlwdCApIDogc2NyaXB0ICk7CgoJ CQkJfSBlbHNlIHsKCQkJCQlpZiAoIHNjcmlwdC5ub2RlVHlwZSA9PT0gMSApIHsK CQkJCQkJdmFyIGpzVGFncyA9IGpRdWVyeS5ncmVwKCBzY3JpcHQuZ2V0RWxlbWVu dHNCeVRhZ05hbWUoICJzY3JpcHQiICksIGNoZWNrU2NyaXB0VHlwZSApOwoKCQkJ CQkJcmV0LnNwbGljZS5hcHBseSggcmV0LCBbaSArIDEsIDBdLmNvbmNhdCgganNU YWdzICkgKTsKCQkJCQl9CgkJCQkJZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIHNjcmlw dCApOwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gcmV0OwoJfSwKCgljbGVhbkRh dGE6IGZ1bmN0aW9uKCBlbGVtcyApIHsKCQl2YXIgZGF0YSwgaWQsCgkJCWNhY2hl ID0galF1ZXJ5LmNhY2hlLAoJCQlzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNp YWwsCgkJCWRlbGV0ZUV4cGFuZG8gPSBqUXVlcnkuc3VwcG9ydC5kZWxldGVFeHBh bmRvOwoKCQlmb3IgKCB2YXIgaSA9IDAsIGVsZW07IChlbGVtID0gZWxlbXNbaV0p ICE9IG51bGw7IGkrKyApIHsKCQkJaWYgKCBlbGVtLm5vZGVOYW1lICYmIGpRdWVy eS5ub0RhdGFbZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSApIHsKCQkJCWNv bnRpbnVlOwoJCQl9CgoJCQlpZCA9IGVsZW1bIGpRdWVyeS5leHBhbmRvIF07CgoJ CQlpZiAoIGlkICkgewoJCQkJZGF0YSA9IGNhY2hlWyBpZCBdOwoKCQkJCWlmICgg ZGF0YSAmJiBkYXRhLmV2ZW50cyApIHsKCQkJCQlmb3IgKCB2YXIgdHlwZSBpbiBk YXRhLmV2ZW50cyApIHsKCQkJCQkJaWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7CgkJ CQkJCQlqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7CgoJCQkJCQkv LyBUaGlzIGlzIGEgc2hvcnRjdXQgdG8gYXZvaWQgalF1ZXJ5LmV2ZW50LnJlbW92 ZSdzIG92ZXJoZWFkCgkJCQkJCX0gZWxzZSB7CgkJCQkJCQlqUXVlcnkucmVtb3Zl RXZlbnQoIGVsZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7CgkJCQkJCX0KCQkJCQl9 CgoJCQkJCS8vIE51bGwgdGhlIERPTSByZWZlcmVuY2UgdG8gYXZvaWQgSUU2Lzcv OCBsZWFrICgjNzA1NCkKCQkJCQlpZiAoIGRhdGEuaGFuZGxlICkgewoJCQkJCQlk YXRhLmhhbmRsZS5lbGVtID0gbnVsbDsKCQkJCQl9CgkJCQl9CgoJCQkJaWYgKCBk ZWxldGVFeHBhbmRvICkgewoJCQkJCWRlbGV0ZSBlbGVtWyBqUXVlcnkuZXhwYW5k byBdOwoKCQkJCX0gZWxzZSBpZiAoIGVsZW0ucmVtb3ZlQXR0cmlidXRlICkgewoJ CQkJCWVsZW0ucmVtb3ZlQXR0cmlidXRlKCBqUXVlcnkuZXhwYW5kbyApOwoJCQkJ fQoKCQkJCWRlbGV0ZSBjYWNoZVsgaWQgXTsKCQkJfQoJCX0KCX0KfSk7CgoKCgp2 YXIgcmFscGhhID0gL2FscGhhXChbXildKlwpL2ksCglyb3BhY2l0eSA9IC9vcGFj aXR5PShbXildKikvLAoJLy8gZml4ZWQgZm9yIElFOSwgc2VlICM4MzQ2CglydXBw ZXIgPSAvKFtBLVpdfF5tcykvZywKCXJudW0gPSAvXltcLStdPyg/OlxkKlwuKT9c ZCskL2ksCglybnVtbm9ucHggPSAvXi0/KD86XGQqXC4pP1xkKyg/IXB4KVteXGRc c10rJC9pLAoJcnJlbE51bSA9IC9eKFtcLStdKT0oW1wtKy5cZGVdKykvLAoJcm1h cmdpbiA9IC9ebWFyZ2luLywKCgljc3NTaG93ID0geyBwb3NpdGlvbjogImFic29s dXRlIiwgdmlzaWJpbGl0eTogImhpZGRlbiIsIGRpc3BsYXk6ICJibG9jayIgfSwK CgkvLyBvcmRlciBpcyBpbXBvcnRhbnQhCgljc3NFeHBhbmQgPSBbICJUb3AiLCAi UmlnaHQiLCAiQm90dG9tIiwgIkxlZnQiIF0sCgoJY3VyQ1NTLAoKCWdldENvbXB1 dGVkU3R5bGUsCgljdXJyZW50U3R5bGU7CgpqUXVlcnkuZm4uY3NzID0gZnVuY3Rp b24oIG5hbWUsIHZhbHVlICkgewoJcmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRoaXMs IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHsKCQlyZXR1cm4gdmFsdWUg IT09IHVuZGVmaW5lZCA/CgkJCWpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFs dWUgKSA6CgkJCWpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTsKCX0sIG5hbWUsIHZh bHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApOwp9OwoKalF1ZXJ5LmV4dGVuZCh7 CgkvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcg dGhlIGRlZmF1bHQKCS8vIGJlaGF2aW9yIG9mIGdldHRpbmcgYW5kIHNldHRpbmcg YSBzdHlsZSBwcm9wZXJ0eQoJY3NzSG9va3M6IHsKCQlvcGFjaXR5OiB7CgkJCWdl dDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgewoJCQkJaWYgKCBjb21wdXRl ZCApIHsKCQkJCQkvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNr IGZyb20gb3BhY2l0eQoJCQkJCXZhciByZXQgPSBjdXJDU1MoIGVsZW0sICJvcGFj aXR5IiApOwoJCQkJCXJldHVybiByZXQgPT09ICIiID8gIjEiIDogcmV0OwoKCQkJ CX0gZWxzZSB7CgkJCQkJcmV0dXJuIGVsZW0uc3R5bGUub3BhY2l0eTsKCQkJCX0K CQkJfQoJCX0KCX0sCgoJLy8gRXhjbHVkZSB0aGUgZm9sbG93aW5nIGNzcyBwcm9w ZXJ0aWVzIHRvIGFkZCBweAoJY3NzTnVtYmVyOiB7CgkJImZpbGxPcGFjaXR5Ijog dHJ1ZSwKCQkiZm9udFdlaWdodCI6IHRydWUsCgkJImxpbmVIZWlnaHQiOiB0cnVl LAoJCSJvcGFjaXR5IjogdHJ1ZSwKCQkib3JwaGFucyI6IHRydWUsCgkJIndpZG93 cyI6IHRydWUsCgkJInpJbmRleCI6IHRydWUsCgkJInpvb20iOiB0cnVlCgl9LAoK CS8vIEFkZCBpbiBwcm9wZXJ0aWVzIHdob3NlIG5hbWVzIHlvdSB3aXNoIHRvIGZp eCBiZWZvcmUKCS8vIHNldHRpbmcgb3IgZ2V0dGluZyB0aGUgdmFsdWUKCWNzc1By b3BzOiB7CgkJLy8gbm9ybWFsaXplIGZsb2F0IGNzcyBwcm9wZXJ0eQoJCSJmbG9h dCI6IGpRdWVyeS5zdXBwb3J0LmNzc0Zsb2F0ID8gImNzc0Zsb2F0IiA6ICJzdHls ZUZsb2F0IgoJfSwKCgkvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkg b24gYSBET00gTm9kZQoJc3R5bGU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1 ZSwgZXh0cmEgKSB7CgkJLy8gRG9uJ3Qgc2V0IHN0eWxlcyBvbiB0ZXh0IGFuZCBj b21tZW50IG5vZGVzCgkJaWYgKCAhZWxlbSB8fCBlbGVtLm5vZGVUeXBlID09PSAz IHx8IGVsZW0ubm9kZVR5cGUgPT09IDggfHwgIWVsZW0uc3R5bGUgKSB7CgkJCXJl dHVybjsKCQl9CgoJCS8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0 aCB0aGUgcmlnaHQgbmFtZQoJCXZhciByZXQsIHR5cGUsIG9yaWdOYW1lID0galF1 ZXJ5LmNhbWVsQ2FzZSggbmFtZSApLAoJCQlzdHlsZSA9IGVsZW0uc3R5bGUsIGhv b2tzID0galF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdOwoKCQluYW1lID0galF1 ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8IG9yaWdOYW1lOwoKCQkvLyBDaGVj ayBpZiB3ZSdyZSBzZXR0aW5nIGEgdmFsdWUKCQlpZiAoIHZhbHVlICE9PSB1bmRl ZmluZWQgKSB7CgkJCXR5cGUgPSB0eXBlb2YgdmFsdWU7CgoJCQkvLyBjb252ZXJ0 IHJlbGF0aXZlIG51bWJlciBzdHJpbmdzICgrPSBvciAtPSkgdG8gcmVsYXRpdmUg bnVtYmVycy4gIzczNDUKCQkJaWYgKCB0eXBlID09PSAic3RyaW5nIiAmJiAocmV0 ID0gcnJlbE51bS5leGVjKCB2YWx1ZSApKSApIHsKCQkJCXZhbHVlID0gKCArKCBy ZXRbMV0gKyAxKSAqICtyZXRbMl0gKSArIHBhcnNlRmxvYXQoIGpRdWVyeS5jc3Mo IGVsZW0sIG5hbWUgKSApOwoJCQkJLy8gRml4ZXMgYnVnICM5MjM3CgkJCQl0eXBl ID0gIm51bWJlciI7CgkJCX0KCgkJCS8vIE1ha2Ugc3VyZSB0aGF0IE5hTiBhbmQg bnVsbCB2YWx1ZXMgYXJlbid0IHNldC4gU2VlOiAjNzExNgoJCQlpZiAoIHZhbHVl ID09IG51bGwgfHwgdHlwZSA9PT0gIm51bWJlciIgJiYgaXNOYU4oIHZhbHVlICkg KSB7CgkJCQlyZXR1cm47CgkJCX0KCgkJCS8vIElmIGEgbnVtYmVyIHdhcyBwYXNz ZWQgaW4sIGFkZCAncHgnIHRvIHRoZSAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBw cm9wZXJ0aWVzKQoJCQlpZiAoIHR5cGUgPT09ICJudW1iZXIiICYmICFqUXVlcnku Y3NzTnVtYmVyWyBvcmlnTmFtZSBdICkgewoJCQkJdmFsdWUgKz0gInB4IjsKCQkJ fQoKCQkJLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCwgdXNlIHRoYXQgdmFsdWUs IG90aGVyd2lzZSBqdXN0IHNldCB0aGUgc3BlY2lmaWVkIHZhbHVlCgkJCWlmICgg IWhvb2tzIHx8ICEoInNldCIgaW4gaG9va3MpIHx8ICh2YWx1ZSA9IGhvb2tzLnNl dCggZWxlbSwgdmFsdWUgKSkgIT09IHVuZGVmaW5lZCApIHsKCQkJCS8vIFdyYXBw ZWQgdG8gcHJldmVudCBJRSBmcm9tIHRocm93aW5nIGVycm9ycyB3aGVuICdpbnZh bGlkJyB2YWx1ZXMgYXJlIHByb3ZpZGVkCgkJCQkvLyBGaXhlcyBidWcgIzU1MDkK CQkJCXRyeSB7CgkJCQkJc3R5bGVbIG5hbWUgXSA9IHZhbHVlOwoJCQkJfSBjYXRj aChlKSB7fQoJCQl9CgoJCX0gZWxzZSB7CgkJCS8vIElmIGEgaG9vayB3YXMgcHJv dmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZQoJCQlp ZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQo IGVsZW0sIGZhbHNlLCBleHRyYSApKSAhPT0gdW5kZWZpbmVkICkgewoJCQkJcmV0 dXJuIHJldDsKCQkJfQoKCQkJLy8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1 ZSBmcm9tIHRoZSBzdHlsZSBvYmplY3QKCQkJcmV0dXJuIHN0eWxlWyBuYW1lIF07 CgkJfQoJfSwKCgljc3M6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBleHRyYSApIHsK CQl2YXIgcmV0LCBob29rczsKCgkJLy8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29y a2luZyB3aXRoIHRoZSByaWdodCBuYW1lCgkJbmFtZSA9IGpRdWVyeS5jYW1lbENh c2UoIG5hbWUgKTsKCQlob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdOwoJ CW5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG5hbWUgXSB8fCBuYW1lOwoKCQkvLyBj c3NGbG9hdCBuZWVkcyBhIHNwZWNpYWwgdHJlYXRtZW50CgkJaWYgKCBuYW1lID09 PSAiY3NzRmxvYXQiICkgewoJCQluYW1lID0gImZsb2F0IjsKCQl9CgoJCS8vIElm IGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBmcm9t IHRoZXJlCgkJaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAmJiAocmV0ID0g aG9va3MuZ2V0KCBlbGVtLCB0cnVlLCBleHRyYSApKSAhPT0gdW5kZWZpbmVkICkg ewoJCQlyZXR1cm4gcmV0OwoKCQkvLyBPdGhlcndpc2UsIGlmIGEgd2F5IHRvIGdl dCB0aGUgY29tcHV0ZWQgdmFsdWUgZXhpc3RzLCB1c2UgdGhhdAoJCX0gZWxzZSBp ZiAoIGN1ckNTUyApIHsKCQkJcmV0dXJuIGN1ckNTUyggZWxlbSwgbmFtZSApOwoJ CX0KCX0sCgoJLy8gQSBtZXRob2QgZm9yIHF1aWNrbHkgc3dhcHBpbmcgaW4vb3V0 IENTUyBwcm9wZXJ0aWVzIHRvIGdldCBjb3JyZWN0IGNhbGN1bGF0aW9ucwoJc3dh cDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrICkgewoJCXZhciBv bGQgPSB7fSwKCQkJcmV0LCBuYW1lOwoKCQkvLyBSZW1lbWJlciB0aGUgb2xkIHZh bHVlcywgYW5kIGluc2VydCB0aGUgbmV3IG9uZXMKCQlmb3IgKCBuYW1lIGluIG9w dGlvbnMgKSB7CgkJCW9sZFsgbmFtZSBdID0gZWxlbS5zdHlsZVsgbmFtZSBdOwoJ CQllbGVtLnN0eWxlWyBuYW1lIF0gPSBvcHRpb25zWyBuYW1lIF07CgkJfQoKCQly ZXQgPSBjYWxsYmFjay5jYWxsKCBlbGVtICk7CgoJCS8vIFJldmVydCB0aGUgb2xk IHZhbHVlcwoJCWZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHsKCQkJZWxlbS5zdHls ZVsgbmFtZSBdID0gb2xkWyBuYW1lIF07CgkJfQoKCQlyZXR1cm4gcmV0OwoJfQp9 KTsKCi8vIERFUFJFQ0FURUQgaW4gMS4zLCBVc2UgalF1ZXJ5LmNzcygpIGluc3Rl YWQKalF1ZXJ5LmN1ckNTUyA9IGpRdWVyeS5jc3M7CgppZiAoIGRvY3VtZW50LmRl ZmF1bHRWaWV3ICYmIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5 bGUgKSB7CglnZXRDb21wdXRlZFN0eWxlID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUg KSB7CgkJdmFyIHJldCwgZGVmYXVsdFZpZXcsIGNvbXB1dGVkU3R5bGUsIHdpZHRo LAoJCQlzdHlsZSA9IGVsZW0uc3R5bGU7CgoJCW5hbWUgPSBuYW1lLnJlcGxhY2Uo IHJ1cHBlciwgIi0kMSIgKS50b0xvd2VyQ2FzZSgpOwoKCQlpZiAoIChkZWZhdWx0 VmlldyA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgJiYKCQkJCShj b21wdXRlZFN0eWxlID0gZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSggZWxl bSwgbnVsbCApKSApIHsKCgkJCXJldCA9IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVy dHlWYWx1ZSggbmFtZSApOwoJCQlpZiAoIHJldCA9PT0gIiIgJiYgIWpRdWVyeS5j b250YWlucyggZWxlbS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgZWxl bSApICkgewoJCQkJcmV0ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7CgkJ CX0KCQl9CgoJCS8vIEEgdHJpYnV0ZSB0byB0aGUgImF3ZXNvbWUgaGFjayBieSBE ZWFuIEVkd2FyZHMiCgkJLy8gV2ViS2l0IHVzZXMgImNvbXB1dGVkIHZhbHVlIChw ZXJjZW50YWdlIGlmIHNwZWNpZmllZCkiIGluc3RlYWQgb2YgInVzZWQgdmFsdWUi IGZvciBtYXJnaW5zCgkJLy8gd2hpY2ggaXMgYWdhaW5zdCB0aGUgQ1NTT00gZHJh ZnQgc3BlYzogaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vI3Jlc29sdmVk LXZhbHVlcwoJCWlmICggIWpRdWVyeS5zdXBwb3J0LnBpeGVsTWFyZ2luICYmIGNv bXB1dGVkU3R5bGUgJiYgcm1hcmdpbi50ZXN0KCBuYW1lICkgJiYgcm51bW5vbnB4 LnRlc3QoIHJldCApICkgewoJCQl3aWR0aCA9IHN0eWxlLndpZHRoOwoJCQlzdHls ZS53aWR0aCA9IHJldDsKCQkJcmV0ID0gY29tcHV0ZWRTdHlsZS53aWR0aDsKCQkJ c3R5bGUud2lkdGggPSB3aWR0aDsKCQl9CgoJCXJldHVybiByZXQ7Cgl9Owp9Cgpp ZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUgKSB7Cglj dXJyZW50U3R5bGUgPSBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKCQl2YXIgbGVm dCwgcnNMZWZ0LCB1bmNvbXB1dGVkLAoJCQlyZXQgPSBlbGVtLmN1cnJlbnRTdHls ZSAmJiBlbGVtLmN1cnJlbnRTdHlsZVsgbmFtZSBdLAoJCQlzdHlsZSA9IGVsZW0u c3R5bGU7CgoJCS8vIEF2b2lkIHNldHRpbmcgcmV0IHRvIGVtcHR5IHN0cmluZyBo ZXJlCgkJLy8gc28gd2UgZG9uJ3QgZGVmYXVsdCB0byBhdXRvCgkJaWYgKCByZXQg PT0gbnVsbCAmJiBzdHlsZSAmJiAodW5jb21wdXRlZCA9IHN0eWxlWyBuYW1lIF0p ICkgewoJCQlyZXQgPSB1bmNvbXB1dGVkOwoJCX0KCgkJLy8gRnJvbSB0aGUgYXdl c29tZSBoYWNrIGJ5IERlYW4gRWR3YXJkcwoJCS8vIGh0dHA6Ly9lcmlrLmVhZS5u ZXQvYXJjaGl2ZXMvMjAwNy8wNy8yNy8xOC41NC4xNS8jY29tbWVudC0xMDIyOTEK CgkJLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBhIHJlZ3VsYXIgcGl4ZWwg bnVtYmVyCgkJLy8gYnV0IGEgbnVtYmVyIHRoYXQgaGFzIGEgd2VpcmQgZW5kaW5n LCB3ZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8gcGl4ZWxzCgkJaWYgKCBybnVtbm9u cHgudGVzdCggcmV0ICkgKSB7CgoJCQkvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwg dmFsdWVzCgkJCWxlZnQgPSBzdHlsZS5sZWZ0OwoJCQlyc0xlZnQgPSBlbGVtLnJ1 bnRpbWVTdHlsZSAmJiBlbGVtLnJ1bnRpbWVTdHlsZS5sZWZ0OwoKCQkJLy8gUHV0 IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dAoJ CQlpZiAoIHJzTGVmdCApIHsKCQkJCWVsZW0ucnVudGltZVN0eWxlLmxlZnQgPSBl bGVtLmN1cnJlbnRTdHlsZS5sZWZ0OwoJCQl9CgkJCXN0eWxlLmxlZnQgPSBuYW1l ID09PSAiZm9udFNpemUiID8gIjFlbSIgOiByZXQ7CgkJCXJldCA9IHN0eWxlLnBp eGVsTGVmdCArICJweCI7CgoJCQkvLyBSZXZlcnQgdGhlIGNoYW5nZWQgdmFsdWVz CgkJCXN0eWxlLmxlZnQgPSBsZWZ0OwoJCQlpZiAoIHJzTGVmdCApIHsKCQkJCWVs ZW0ucnVudGltZVN0eWxlLmxlZnQgPSByc0xlZnQ7CgkJCX0KCQl9CgoJCXJldHVy biByZXQgPT09ICIiID8gImF1dG8iIDogcmV0OwoJfTsKfQoKY3VyQ1NTID0gZ2V0 Q29tcHV0ZWRTdHlsZSB8fCBjdXJyZW50U3R5bGU7CgpmdW5jdGlvbiBnZXRXaWR0 aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApIHsKCgkvLyBTdGFydCB3aXRo IG9mZnNldCBwcm9wZXJ0eQoJdmFyIHZhbCA9IG5hbWUgPT09ICJ3aWR0aCIgPyBl bGVtLm9mZnNldFdpZHRoIDogZWxlbS5vZmZzZXRIZWlnaHQsCgkJaSA9IG5hbWUg PT09ICJ3aWR0aCIgPyAxIDogMCwKCQlsZW4gPSA0OwoKCWlmICggdmFsID4gMCAp IHsKCQlpZiAoIGV4dHJhICE9PSAiYm9yZGVyIiApIHsKCQkJZm9yICggOyBpIDwg bGVuOyBpICs9IDIgKSB7CgkJCQlpZiAoICFleHRyYSApIHsKCQkJCQl2YWwgLT0g cGFyc2VGbG9hdCggalF1ZXJ5LmNzcyggZWxlbSwgInBhZGRpbmciICsgY3NzRXhw YW5kWyBpIF0gKSApIHx8IDA7CgkJCQl9CgkJCQlpZiAoIGV4dHJhID09PSAibWFy Z2luIiApIHsKCQkJCQl2YWwgKz0gcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyggZWxl bSwgZXh0cmEgKyBjc3NFeHBhbmRbIGkgXSApICkgfHwgMDsKCQkJCX0gZWxzZSB7 CgkJCQkJdmFsIC09IHBhcnNlRmxvYXQoIGpRdWVyeS5jc3MoIGVsZW0sICJib3Jk ZXIiICsgY3NzRXhwYW5kWyBpIF0gKyAiV2lkdGgiICkgKSB8fCAwOwoJCQkJfQoJ CQl9CgkJfQoKCQlyZXR1cm4gdmFsICsgInB4IjsKCX0KCgkvLyBGYWxsIGJhY2sg dG8gY29tcHV0ZWQgdGhlbiB1bmNvbXB1dGVkIGNzcyBpZiBuZWNlc3NhcnkKCXZh bCA9IGN1ckNTUyggZWxlbSwgbmFtZSApOwoJaWYgKCB2YWwgPCAwIHx8IHZhbCA9 PSBudWxsICkgewoJCXZhbCA9IGVsZW0uc3R5bGVbIG5hbWUgXTsKCX0KCgkvLyBD b21wdXRlZCB1bml0IGlzIG5vdCBwaXhlbHMuIFN0b3AgaGVyZSBhbmQgcmV0dXJu LgoJaWYgKCBybnVtbm9ucHgudGVzdCh2YWwpICkgewoJCXJldHVybiB2YWw7Cgl9 CgoJLy8gTm9ybWFsaXplICIiLCBhdXRvLCBhbmQgcHJlcGFyZSBmb3IgZXh0cmEK CXZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8IDA7CgoJLy8gQWRkIHBhZGRpbmcs IGJvcmRlciwgbWFyZ2luCglpZiAoIGV4dHJhICkgewoJCWZvciAoIDsgaSA8IGxl bjsgaSArPSAyICkgewoJCQl2YWwgKz0gcGFyc2VGbG9hdCggalF1ZXJ5LmNzcygg ZWxlbSwgInBhZGRpbmciICsgY3NzRXhwYW5kWyBpIF0gKSApIHx8IDA7CgkJCWlm ICggZXh0cmEgIT09ICJwYWRkaW5nIiApIHsKCQkJCXZhbCArPSBwYXJzZUZsb2F0 KCBqUXVlcnkuY3NzKCBlbGVtLCAiYm9yZGVyIiArIGNzc0V4cGFuZFsgaSBdICsg IldpZHRoIiApICkgfHwgMDsKCQkJfQoJCQlpZiAoIGV4dHJhID09PSAibWFyZ2lu IiApIHsKCQkJCXZhbCArPSBwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKCBlbGVtLCBl eHRyYSArIGNzc0V4cGFuZFsgaSBdKSApIHx8IDA7CgkJCX0KCQl9Cgl9CgoJcmV0 dXJuIHZhbCArICJweCI7Cn0KCmpRdWVyeS5lYWNoKFsgImhlaWdodCIsICJ3aWR0 aCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7CglqUXVlcnkuY3NzSG9va3NbIG5h bWUgXSA9IHsKCQlnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCwgZXh0cmEg KSB7CgkJCWlmICggY29tcHV0ZWQgKSB7CgkJCQlpZiAoIGVsZW0ub2Zmc2V0V2lk dGggIT09IDAgKSB7CgkJCQkJcmV0dXJuIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0s IG5hbWUsIGV4dHJhICk7CgkJCQl9IGVsc2UgewoJCQkJCXJldHVybiBqUXVlcnku c3dhcCggZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7CgkJCQkJCXJldHVybiBn ZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApOwoJCQkJCX0pOwoJ CQkJfQoJCQl9CgkJfSwKCgkJc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7 CgkJCXJldHVybiBybnVtLnRlc3QoIHZhbHVlICkgPwoJCQkJdmFsdWUgKyAicHgi IDoKCQkJCXZhbHVlOwoJCX0KCX07Cn0pOwoKaWYgKCAhalF1ZXJ5LnN1cHBvcnQu b3BhY2l0eSApIHsKCWpRdWVyeS5jc3NIb29rcy5vcGFjaXR5ID0gewoJCWdldDog ZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgewoJCQkvLyBJRSB1c2VzIGZpbHRl cnMgZm9yIG9wYWNpdHkKCQkJcmV0dXJuIHJvcGFjaXR5LnRlc3QoIChjb21wdXRl ZCAmJiBlbGVtLmN1cnJlbnRTdHlsZSA/IGVsZW0uY3VycmVudFN0eWxlLmZpbHRl ciA6IGVsZW0uc3R5bGUuZmlsdGVyKSB8fCAiIiApID8KCQkJCSggcGFyc2VGbG9h dCggUmVnRXhwLiQxICkgLyAxMDAgKSArICIiIDoKCQkJCWNvbXB1dGVkID8gIjEi IDogIiI7CgkJfSwKCgkJc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7CgkJ CXZhciBzdHlsZSA9IGVsZW0uc3R5bGUsCgkJCQljdXJyZW50U3R5bGUgPSBlbGVt LmN1cnJlbnRTdHlsZSwKCQkJCW9wYWNpdHkgPSBqUXVlcnkuaXNOdW1lcmljKCB2 YWx1ZSApID8gImFscGhhKG9wYWNpdHk9IiArIHZhbHVlICogMTAwICsgIikiIDog IiIsCgkJCQlmaWx0ZXIgPSBjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLmZp bHRlciB8fCBzdHlsZS5maWx0ZXIgfHwgIiI7CgoJCQkvLyBJRSBoYXMgdHJvdWJs ZSB3aXRoIG9wYWNpdHkgaWYgaXQgZG9lcyBub3QgaGF2ZSBsYXlvdXQKCQkJLy8g Rm9yY2UgaXQgYnkgc2V0dGluZyB0aGUgem9vbSBsZXZlbAoJCQlzdHlsZS56b29t ID0gMTsKCgkJCS8vIGlmIHNldHRpbmcgb3BhY2l0eSB0byAxLCBhbmQgbm8gb3Ro ZXIgZmlsdGVycyBleGlzdCAtIGF0dGVtcHQgdG8gcmVtb3ZlIGZpbHRlciBhdHRy aWJ1dGUgIzY2NTIKCQkJaWYgKCB2YWx1ZSA+PSAxICYmIGpRdWVyeS50cmltKCBm aWx0ZXIucmVwbGFjZSggcmFscGhhLCAiIiApICkgPT09ICIiICkgewoKCQkJCS8v IFNldHRpbmcgc3R5bGUuZmlsdGVyIHRvIG51bGwsICIiICYgIiAiIHN0aWxsIGxl YXZlICJmaWx0ZXI6IiBpbiB0aGUgY3NzVGV4dAoJCQkJLy8gaWYgImZpbHRlcjoi IGlzIHByZXNlbnQgYXQgYWxsLCBjbGVhclR5cGUgaXMgZGlzYWJsZWQsIHdlIHdh bnQgdG8gYXZvaWQgdGhpcwoJCQkJLy8gc3R5bGUucmVtb3ZlQXR0cmlidXRlIGlz IElFIE9ubHksIGJ1dCBzbyBhcHBhcmVudGx5IGlzIHRoaXMgY29kZSBwYXRoLi4u CgkJCQlzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoICJmaWx0ZXIiICk7CgoJCQkJLy8g aWYgdGhlcmUgdGhlcmUgaXMgbm8gZmlsdGVyIHN0eWxlIGFwcGxpZWQgaW4gYSBj c3MgcnVsZSwgd2UgYXJlIGRvbmUKCQkJCWlmICggY3VycmVudFN0eWxlICYmICFj dXJyZW50U3R5bGUuZmlsdGVyICkgewoJCQkJCXJldHVybjsKCQkJCX0KCQkJfQoK CQkJLy8gb3RoZXJ3aXNlLCBzZXQgbmV3IGZpbHRlciB2YWx1ZXMKCQkJc3R5bGUu ZmlsdGVyID0gcmFscGhhLnRlc3QoIGZpbHRlciApID8KCQkJCWZpbHRlci5yZXBs YWNlKCByYWxwaGEsIG9wYWNpdHkgKSA6CgkJCQlmaWx0ZXIgKyAiICIgKyBvcGFj aXR5OwoJCX0KCX07Cn0KCmpRdWVyeShmdW5jdGlvbigpIHsKCS8vIFRoaXMgaG9v ayBjYW5ub3QgYmUgYWRkZWQgdW50aWwgRE9NIHJlYWR5IGJlY2F1c2UgdGhlIHN1 cHBvcnQgdGVzdAoJLy8gZm9yIGl0IGlzIG5vdCBydW4gdW50aWwgYWZ0ZXIgRE9N IHJlYWR5CglpZiAoICFqUXVlcnkuc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0 ICkgewoJCWpRdWVyeS5jc3NIb29rcy5tYXJnaW5SaWdodCA9IHsKCQkJZ2V0OiBm dW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7CgkJCQkvLyBXZWJLaXQgQnVnIDEz MzQzIC0gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHdyb25nIHZhbHVlIGZvciBt YXJnaW4tcmlnaHQKCQkJCS8vIFdvcmsgYXJvdW5kIGJ5IHRlbXBvcmFyaWx5IHNl dHRpbmcgZWxlbWVudCBkaXNwbGF5IHRvIGlubGluZS1ibG9jawoJCQkJcmV0dXJu IGpRdWVyeS5zd2FwKCBlbGVtLCB7ICJkaXNwbGF5IjogImlubGluZS1ibG9jayIg fSwgZnVuY3Rpb24oKSB7CgkJCQkJaWYgKCBjb21wdXRlZCApIHsKCQkJCQkJcmV0 dXJuIGN1ckNTUyggZWxlbSwgIm1hcmdpbi1yaWdodCIgKTsKCQkJCQl9IGVsc2Ug ewoJCQkJCQlyZXR1cm4gZWxlbS5zdHlsZS5tYXJnaW5SaWdodDsKCQkJCQl9CgkJ CQl9KTsKCQkJfQoJCX07Cgl9Cn0pOwoKaWYgKCBqUXVlcnkuZXhwciAmJiBqUXVl cnkuZXhwci5maWx0ZXJzICkgewoJalF1ZXJ5LmV4cHIuZmlsdGVycy5oaWRkZW4g PSBmdW5jdGlvbiggZWxlbSApIHsKCQl2YXIgd2lkdGggPSBlbGVtLm9mZnNldFdp ZHRoLAoJCQloZWlnaHQgPSBlbGVtLm9mZnNldEhlaWdodDsKCgkJcmV0dXJuICgg d2lkdGggPT09IDAgJiYgaGVpZ2h0ID09PSAwICkgfHwgKCFqUXVlcnkuc3VwcG9y dC5yZWxpYWJsZUhpZGRlbk9mZnNldHMgJiYgKChlbGVtLnN0eWxlICYmIGVsZW0u c3R5bGUuZGlzcGxheSkgfHwgalF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICkp ID09PSAibm9uZSIpOwoJfTsKCglqUXVlcnkuZXhwci5maWx0ZXJzLnZpc2libGUg PSBmdW5jdGlvbiggZWxlbSApIHsKCQlyZXR1cm4gIWpRdWVyeS5leHByLmZpbHRl cnMuaGlkZGVuKCBlbGVtICk7Cgl9Owp9CgovLyBUaGVzZSBob29rcyBhcmUgdXNl ZCBieSBhbmltYXRlIHRvIGV4cGFuZCBwcm9wZXJ0aWVzCmpRdWVyeS5lYWNoKHsK CW1hcmdpbjogIiIsCglwYWRkaW5nOiAiIiwKCWJvcmRlcjogIldpZHRoIgp9LCBm dW5jdGlvbiggcHJlZml4LCBzdWZmaXggKSB7CgoJalF1ZXJ5LmNzc0hvb2tzWyBw cmVmaXggKyBzdWZmaXggXSA9IHsKCQlleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSAp IHsKCQkJdmFyIGksCgoJCQkJLy8gYXNzdW1lcyBhIHNpbmdsZSBudW1iZXIgaWYg bm90IGEgc3RyaW5nCgkJCQlwYXJ0cyA9IHR5cGVvZiB2YWx1ZSA9PT0gInN0cmlu ZyIgPyB2YWx1ZS5zcGxpdCgiICIpIDogWyB2YWx1ZSBdLAoJCQkJZXhwYW5kZWQg PSB7fTsKCgkJCWZvciAoIGkgPSAwOyBpIDwgNDsgaSsrICkgewoJCQkJZXhwYW5k ZWRbIHByZWZpeCArIGNzc0V4cGFuZFsgaSBdICsgc3VmZml4IF0gPQoJCQkJCXBh cnRzWyBpIF0gfHwgcGFydHNbIGkgLSAyIF0gfHwgcGFydHNbIDAgXTsKCQkJfQoK CQkJcmV0dXJuIGV4cGFuZGVkOwoJCX0KCX07Cn0pOwoKCgoKdmFyIHIyMCA9IC8l MjAvZywKCXJicmFja2V0ID0gL1xbXF0kLywKCXJDUkxGID0gL1xyP1xuL2csCgly aGFzaCA9IC8jLiokLywKCXJoZWFkZXJzID0gL14oLio/KTpbIFx0XSooW15cclxu XSopXHI/JC9tZywgLy8gSUUgbGVhdmVzIGFuIFxyIGNoYXJhY3RlciBhdCBFT0wK CXJpbnB1dCA9IC9eKD86Y29sb3J8ZGF0ZXxkYXRldGltZXxkYXRldGltZS1sb2Nh bHxlbWFpbHxoaWRkZW58bW9udGh8bnVtYmVyfHBhc3N3b3JkfHJhbmdlfHNlYXJj aHx0ZWx8dGV4dHx0aW1lfHVybHx3ZWVrKSQvaSwKCS8vICM3NjUzLCAjODEyNSwg IzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvbgoJcmxvY2FsUHJvdG9jb2wg PSAvXig/OmFib3V0fGFwcHxhcHBcLXN0b3JhZ2V8LitcLWV4dGVuc2lvbnxmaWxl fHJlc3x3aWRnZXQpOiQvLAoJcm5vQ29udGVudCA9IC9eKD86R0VUfEhFQUQpJC8s CglycHJvdG9jb2wgPSAvXlwvXC8vLAoJcnF1ZXJ5ID0gL1w/LywKCXJzY3JpcHQg PSAvPHNjcmlwdFxiW148XSooPzooPyE8XC9zY3JpcHQ+KTxbXjxdKikqPFwvc2Ny aXB0Pi9naSwKCXJzZWxlY3RUZXh0YXJlYSA9IC9eKD86c2VsZWN0fHRleHRhcmVh KS9pLAoJcnNwYWNlc0FqYXggPSAvXHMrLywKCXJ0cyA9IC8oWz8mXSlfPVteJl0q LywKCXJ1cmwgPSAvXihbXHdcK1wuXC1dKzopKD86XC9cLyhbXlwvPyM6XSopKD86 OihcZCspKT8pPy8sCgoJLy8gS2VlcCBhIGNvcHkgb2YgdGhlIG9sZCBsb2FkIG1l dGhvZAoJX2xvYWQgPSBqUXVlcnkuZm4ubG9hZCwKCgkvKiBQcmVmaWx0ZXJzCgkg KiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlw ZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKQoJICogMikgVGhl c2UgYXJlIGNhbGxlZDoKCSAqICAgIC0gQkVGT1JFIGFza2luZyBmb3IgYSB0cmFu c3BvcnQKCSAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRh IGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSkKCSAqIDMpIGtl eSBpcyB0aGUgZGF0YVR5cGUKCSAqIDQpIHRoZSBjYXRjaGFsbCBzeW1ib2wgIioi IGNhbiBiZSB1c2VkCgkgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRy YW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRvICIqIiBp ZiBuZWVkZWQKCSAqLwoJcHJlZmlsdGVycyA9IHt9LAoKCS8qIFRyYW5zcG9ydHMg YmluZGluZ3MKCSAqIDEpIGtleSBpcyB0aGUgZGF0YVR5cGUKCSAqIDIpIHRoZSBj YXRjaGFsbCBzeW1ib2wgIioiIGNhbiBiZSB1c2VkCgkgKiAzKSBzZWxlY3Rpb24g d2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBnbyB0 byAiKiIgaWYgbmVlZGVkCgkgKi8KCXRyYW5zcG9ydHMgPSB7fSwKCgkvLyBEb2N1 bWVudCBsb2NhdGlvbgoJYWpheExvY2F0aW9uLAoKCS8vIERvY3VtZW50IGxvY2F0 aW9uIHNlZ21lbnRzCglhamF4TG9jUGFydHMsCgoJLy8gQXZvaWQgY29tbWVudC1w cm9sb2cgY2hhciBzZXF1ZW5jZSAoIzEwMDk4KTsgbXVzdCBhcHBlYXNlIGxpbnQg YW5kIGV2YWRlIGNvbXByZXNzaW9uCglhbGxUeXBlcyA9IFsiKi8iXSArIFsiKiJd OwoKLy8gIzgxMzgsIElFIG1heSB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBhY2Nl c3NpbmcKLy8gYSBmaWVsZCBmcm9tIHdpbmRvdy5sb2NhdGlvbiBpZiBkb2N1bWVu dC5kb21haW4gaGFzIGJlZW4gc2V0CnRyeSB7CglhamF4TG9jYXRpb24gPSBsb2Nh dGlvbi5ocmVmOwp9IGNhdGNoKCBlICkgewoJLy8gVXNlIHRoZSBocmVmIGF0dHJp YnV0ZSBvZiBhbiBBIGVsZW1lbnQKCS8vIHNpbmNlIElFIHdpbGwgbW9kaWZ5IGl0 IGdpdmVuIGRvY3VtZW50LmxvY2F0aW9uCglhamF4TG9jYXRpb24gPSBkb2N1bWVu dC5jcmVhdGVFbGVtZW50KCAiYSIgKTsKCWFqYXhMb2NhdGlvbi5ocmVmID0gIiI7 CglhamF4TG9jYXRpb24gPSBhamF4TG9jYXRpb24uaHJlZjsKfQoKLy8gU2VnbWVu dCBsb2NhdGlvbiBpbnRvIHBhcnRzCmFqYXhMb2NQYXJ0cyA9IHJ1cmwuZXhlYygg YWpheExvY2F0aW9uLnRvTG93ZXJDYXNlKCkgKSB8fCBbXTsKCi8vIEJhc2UgImNv bnN0cnVjdG9yIiBmb3IgalF1ZXJ5LmFqYXhQcmVmaWx0ZXIgYW5kIGpRdWVyeS5h amF4VHJhbnNwb3J0CmZ1bmN0aW9uIGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0 cyggc3RydWN0dXJlICkgewoKCS8vIGRhdGFUeXBlRXhwcmVzc2lvbiBpcyBvcHRp b25hbCBhbmQgZGVmYXVsdHMgdG8gIioiCglyZXR1cm4gZnVuY3Rpb24oIGRhdGFU eXBlRXhwcmVzc2lvbiwgZnVuYyApIHsKCgkJaWYgKCB0eXBlb2YgZGF0YVR5cGVF eHByZXNzaW9uICE9PSAic3RyaW5nIiApIHsKCQkJZnVuYyA9IGRhdGFUeXBlRXhw cmVzc2lvbjsKCQkJZGF0YVR5cGVFeHByZXNzaW9uID0gIioiOwoJCX0KCgkJaWYg KCBqUXVlcnkuaXNGdW5jdGlvbiggZnVuYyApICkgewoJCQl2YXIgZGF0YVR5cGVz ID0gZGF0YVR5cGVFeHByZXNzaW9uLnRvTG93ZXJDYXNlKCkuc3BsaXQoIHJzcGFj ZXNBamF4ICksCgkJCQlpID0gMCwKCQkJCWxlbmd0aCA9IGRhdGFUeXBlcy5sZW5n dGgsCgkJCQlkYXRhVHlwZSwKCQkJCWxpc3QsCgkJCQlwbGFjZUJlZm9yZTsKCgkJ CS8vIEZvciBlYWNoIGRhdGFUeXBlIGluIHRoZSBkYXRhVHlwZUV4cHJlc3Npb24K CQkJZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7CgkJCQlkYXRhVHlwZSA9IGRh dGFUeXBlc1sgaSBdOwoJCQkJLy8gV2UgY29udHJvbCBpZiB3ZSdyZSBhc2tlZCB0 byBhZGQgYmVmb3JlCgkJCQkvLyBhbnkgZXhpc3RpbmcgZWxlbWVudAoJCQkJcGxh Y2VCZWZvcmUgPSAvXlwrLy50ZXN0KCBkYXRhVHlwZSApOwoJCQkJaWYgKCBwbGFj ZUJlZm9yZSApIHsKCQkJCQlkYXRhVHlwZSA9IGRhdGFUeXBlLnN1YnN0ciggMSAp IHx8ICIqIjsKCQkJCX0KCQkJCWxpc3QgPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0g PSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW107CgkJCQkvLyB0aGVuIHdlIGFk ZCB0byB0aGUgc3RydWN0dXJlIGFjY29yZGluZ2x5CgkJCQlsaXN0WyBwbGFjZUJl Zm9yZSA/ICJ1bnNoaWZ0IiA6ICJwdXNoIiBdKCBmdW5jICk7CgkJCX0KCQl9Cgl9 Owp9CgovLyBCYXNlIGluc3BlY3Rpb24gZnVuY3Rpb24gZm9yIHByZWZpbHRlcnMg YW5kIHRyYW5zcG9ydHMKZnVuY3Rpb24gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5z cG9ydHMoIHN0cnVjdHVyZSwgb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhI UiwKCQlkYXRhVHlwZSAvKiBpbnRlcm5hbCAqLywgaW5zcGVjdGVkIC8qIGludGVy bmFsICovICkgewoKCWRhdGFUeXBlID0gZGF0YVR5cGUgfHwgb3B0aW9ucy5kYXRh VHlwZXNbIDAgXTsKCWluc3BlY3RlZCA9IGluc3BlY3RlZCB8fCB7fTsKCglpbnNw ZWN0ZWRbIGRhdGFUeXBlIF0gPSB0cnVlOwoKCXZhciBsaXN0ID0gc3RydWN0dXJl WyBkYXRhVHlwZSBdLAoJCWkgPSAwLAoJCWxlbmd0aCA9IGxpc3QgPyBsaXN0Lmxl bmd0aCA6IDAsCgkJZXhlY3V0ZU9ubHkgPSAoIHN0cnVjdHVyZSA9PT0gcHJlZmls dGVycyApLAoJCXNlbGVjdGlvbjsKCglmb3IgKCA7IGkgPCBsZW5ndGggJiYgKCBl eGVjdXRlT25seSB8fCAhc2VsZWN0aW9uICk7IGkrKyApIHsKCQlzZWxlY3Rpb24g PSBsaXN0WyBpIF0oIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTsK CQkvLyBJZiB3ZSBnb3QgcmVkaXJlY3RlZCB0byBhbm90aGVyIGRhdGFUeXBlCgkJ Ly8gd2UgdHJ5IHRoZXJlIGlmIGV4ZWN1dGluZyBvbmx5IGFuZCBub3QgZG9uZSBh bHJlYWR5CgkJaWYgKCB0eXBlb2Ygc2VsZWN0aW9uID09PSAic3RyaW5nIiApIHsK CQkJaWYgKCAhZXhlY3V0ZU9ubHkgfHwgaW5zcGVjdGVkWyBzZWxlY3Rpb24gXSAp IHsKCQkJCXNlbGVjdGlvbiA9IHVuZGVmaW5lZDsKCQkJfSBlbHNlIHsKCQkJCW9w dGlvbnMuZGF0YVR5cGVzLnVuc2hpZnQoIHNlbGVjdGlvbiApOwoJCQkJc2VsZWN0 aW9uID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoCgkJCQkJCXN0cnVj dHVyZSwgb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiwgc2VsZWN0aW9u LCBpbnNwZWN0ZWQgKTsKCQkJfQoJCX0KCX0KCS8vIElmIHdlJ3JlIG9ubHkgZXhl Y3V0aW5nIG9yIG5vdGhpbmcgd2FzIHNlbGVjdGVkCgkvLyB3ZSB0cnkgdGhlIGNh dGNoYWxsIGRhdGFUeXBlIGlmIG5vdCBkb25lIGFscmVhZHkKCWlmICggKCBleGVj dXRlT25seSB8fCAhc2VsZWN0aW9uICkgJiYgIWluc3BlY3RlZFsgIioiIF0gKSB7 CgkJc2VsZWN0aW9uID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoCgkJ CQlzdHJ1Y3R1cmUsIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIsICIq IiwgaW5zcGVjdGVkICk7Cgl9CgkvLyB1bm5lY2Vzc2FyeSB3aGVuIG9ubHkgZXhl Y3V0aW5nIChwcmVmaWx0ZXJzKQoJLy8gYnV0IGl0J2xsIGJlIGlnbm9yZWQgYnkg dGhlIGNhbGxlciBpbiB0aGF0IGNhc2UKCXJldHVybiBzZWxlY3Rpb247Cn0KCi8v IEEgc3BlY2lhbCBleHRlbmQgZm9yIGFqYXggb3B0aW9ucwovLyB0aGF0IHRha2Vz ICJmbGF0IiBvcHRpb25zIChub3QgdG8gYmUgZGVlcCBleHRlbmRlZCkKLy8gRml4 ZXMgIzk4ODcKZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7Cgl2 YXIga2V5LCBkZWVwLAoJCWZsYXRPcHRpb25zID0galF1ZXJ5LmFqYXhTZXR0aW5n cy5mbGF0T3B0aW9ucyB8fCB7fTsKCWZvciAoIGtleSBpbiBzcmMgKSB7CgkJaWYg KCBzcmNbIGtleSBdICE9PSB1bmRlZmluZWQgKSB7CgkJCSggZmxhdE9wdGlvbnNb IGtleSBdID8gdGFyZ2V0IDogKCBkZWVwIHx8ICggZGVlcCA9IHt9ICkgKSApWyBr ZXkgXSA9IHNyY1sga2V5IF07CgkJfQoJfQoJaWYgKCBkZWVwICkgewoJCWpRdWVy eS5leHRlbmQoIHRydWUsIHRhcmdldCwgZGVlcCApOwoJfQp9CgpqUXVlcnkuZm4u ZXh0ZW5kKHsKCWxvYWQ6IGZ1bmN0aW9uKCB1cmwsIHBhcmFtcywgY2FsbGJhY2sg KSB7CgkJaWYgKCB0eXBlb2YgdXJsICE9PSAic3RyaW5nIiAmJiBfbG9hZCApIHsK CQkJcmV0dXJuIF9sb2FkLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKCgkJLy8g RG9uJ3QgZG8gYSByZXF1ZXN0IGlmIG5vIGVsZW1lbnRzIGFyZSBiZWluZyByZXF1 ZXN0ZWQKCQl9IGVsc2UgaWYgKCAhdGhpcy5sZW5ndGggKSB7CgkJCXJldHVybiB0 aGlzOwoJCX0KCgkJdmFyIG9mZiA9IHVybC5pbmRleE9mKCAiICIgKTsKCQlpZiAo IG9mZiA+PSAwICkgewoJCQl2YXIgc2VsZWN0b3IgPSB1cmwuc2xpY2UoIG9mZiwg dXJsLmxlbmd0aCApOwoJCQl1cmwgPSB1cmwuc2xpY2UoIDAsIG9mZiApOwoJCX0K CgkJLy8gRGVmYXVsdCB0byBhIEdFVCByZXF1ZXN0CgkJdmFyIHR5cGUgPSAiR0VU IjsKCgkJLy8gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkCgkJ aWYgKCBwYXJhbXMgKSB7CgkJCS8vIElmIGl0J3MgYSBmdW5jdGlvbgoJCQlpZiAo IGpRdWVyeS5pc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHsKCQkJCS8vIFdlIGFzc3Vt ZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNrCgkJCQljYWxsYmFjayA9IHBhcmFtczsK CQkJCXBhcmFtcyA9IHVuZGVmaW5lZDsKCgkJCS8vIE90aGVyd2lzZSwgYnVpbGQg YSBwYXJhbSBzdHJpbmcKCQkJfSBlbHNlIGlmICggdHlwZW9mIHBhcmFtcyA9PT0g Im9iamVjdCIgKSB7CgkJCQlwYXJhbXMgPSBqUXVlcnkucGFyYW0oIHBhcmFtcywg alF1ZXJ5LmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCApOwoJCQkJdHlwZSA9ICJQ T1NUIjsKCQkJfQoJCX0KCgkJdmFyIHNlbGYgPSB0aGlzOwoKCQkvLyBSZXF1ZXN0 IHRoZSByZW1vdGUgZG9jdW1lbnQKCQlqUXVlcnkuYWpheCh7CgkJCXVybDogdXJs LAoJCQl0eXBlOiB0eXBlLAoJCQlkYXRhVHlwZTogImh0bWwiLAoJCQlkYXRhOiBw YXJhbXMsCgkJCS8vIENvbXBsZXRlIGNhbGxiYWNrIChyZXNwb25zZVRleHQgaXMg dXNlZCBpbnRlcm5hbGx5KQoJCQljb21wbGV0ZTogZnVuY3Rpb24oIGpxWEhSLCBz dGF0dXMsIHJlc3BvbnNlVGV4dCApIHsKCQkJCS8vIFN0b3JlIHRoZSByZXNwb25z ZSBhcyBzcGVjaWZpZWQgYnkgdGhlIGpxWEhSIG9iamVjdAoJCQkJcmVzcG9uc2VU ZXh0ID0ganFYSFIucmVzcG9uc2VUZXh0OwoJCQkJLy8gSWYgc3VjY2Vzc2Z1bCwg aW5qZWN0IHRoZSBIVE1MIGludG8gYWxsIHRoZSBtYXRjaGVkIGVsZW1lbnRzCgkJ CQlpZiAoIGpxWEhSLmlzUmVzb2x2ZWQoKSApIHsKCQkJCQkvLyAjNDgyNTogR2V0 IHRoZSBhY3R1YWwgcmVzcG9uc2UgaW4gY2FzZQoJCQkJCS8vIGEgZGF0YUZpbHRl ciBpcyBwcmVzZW50IGluIGFqYXhTZXR0aW5ncwoJCQkJCWpxWEhSLmRvbmUoZnVu Y3Rpb24oIHIgKSB7CgkJCQkJCXJlc3BvbnNlVGV4dCA9IHI7CgkJCQkJfSk7CgkJ CQkJLy8gU2VlIGlmIGEgc2VsZWN0b3Igd2FzIHNwZWNpZmllZAoJCQkJCXNlbGYu aHRtbCggc2VsZWN0b3IgPwoJCQkJCQkvLyBDcmVhdGUgYSBkdW1teSBkaXYgdG8g aG9sZCB0aGUgcmVzdWx0cwoJCQkJCQlqUXVlcnkoIjxkaXY+IikKCQkJCQkJCS8v IGluamVjdCB0aGUgY29udGVudHMgb2YgdGhlIGRvY3VtZW50IGluLCByZW1vdmlu ZyB0aGUgc2NyaXB0cwoJCQkJCQkJLy8gdG8gYXZvaWQgYW55ICdQZXJtaXNzaW9u IERlbmllZCcgZXJyb3JzIGluIElFCgkJCQkJCQkuYXBwZW5kKHJlc3BvbnNlVGV4 dC5yZXBsYWNlKHJzY3JpcHQsICIiKSkKCgkJCQkJCQkvLyBMb2NhdGUgdGhlIHNw ZWNpZmllZCBlbGVtZW50cwoJCQkJCQkJLmZpbmQoc2VsZWN0b3IpIDoKCgkJCQkJ CS8vIElmIG5vdCwganVzdCBpbmplY3QgdGhlIGZ1bGwgcmVzdWx0CgkJCQkJCXJl c3BvbnNlVGV4dCApOwoJCQkJfQoKCQkJCWlmICggY2FsbGJhY2sgKSB7CgkJCQkJ c2VsZi5lYWNoKCBjYWxsYmFjaywgWyByZXNwb25zZVRleHQsIHN0YXR1cywganFY SFIgXSApOwoJCQkJfQoJCQl9CgkJfSk7CgoJCXJldHVybiB0aGlzOwoJfSwKCglz ZXJpYWxpemU6IGZ1bmN0aW9uKCkgewoJCXJldHVybiBqUXVlcnkucGFyYW0oIHRo aXMuc2VyaWFsaXplQXJyYXkoKSApOwoJfSwKCglzZXJpYWxpemVBcnJheTogZnVu Y3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7CgkJCXJldHVy biB0aGlzLmVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJheSggdGhpcy5lbGVtZW50 cyApIDogdGhpczsKCQl9KQoJCS5maWx0ZXIoZnVuY3Rpb24oKXsKCQkJcmV0dXJu IHRoaXMubmFtZSAmJiAhdGhpcy5kaXNhYmxlZCAmJgoJCQkJKCB0aGlzLmNoZWNr ZWQgfHwgcnNlbGVjdFRleHRhcmVhLnRlc3QoIHRoaXMubm9kZU5hbWUgKSB8fAoJ CQkJCXJpbnB1dC50ZXN0KCB0aGlzLnR5cGUgKSApOwoJCX0pCgkJLm1hcChmdW5j dGlvbiggaSwgZWxlbSApewoJCQl2YXIgdmFsID0galF1ZXJ5KCB0aGlzICkudmFs KCk7CgoJCQlyZXR1cm4gdmFsID09IG51bGwgPwoJCQkJbnVsbCA6CgkJCQlqUXVl cnkuaXNBcnJheSggdmFsICkgPwoJCQkJCWpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rp b24oIHZhbCwgaSApewoJCQkJCQlyZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZh bHVlOiB2YWwucmVwbGFjZSggckNSTEYsICJcclxuIiApIH07CgkJCQkJfSkgOgoJ CQkJCXsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxG LCAiXHJcbiIgKSB9OwoJCX0pLmdldCgpOwoJfQp9KTsKCi8vIEF0dGFjaCBhIGJ1 bmNoIG9mIGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgY29tbW9uIEFKQVggZXZlbnRz CmpRdWVyeS5lYWNoKCAiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBh amF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCAiICIgKSwgZnVu Y3Rpb24oIGksIG8gKXsKCWpRdWVyeS5mblsgbyBdID0gZnVuY3Rpb24oIGYgKXsK CQlyZXR1cm4gdGhpcy5vbiggbywgZiApOwoJfTsKfSk7CgpqUXVlcnkuZWFjaCgg WyAiZ2V0IiwgInBvc3QiIF0sIGZ1bmN0aW9uKCBpLCBtZXRob2QgKSB7CglqUXVl cnlbIG1ldGhvZCBdID0gZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2ssIHR5 cGUgKSB7CgkJLy8gc2hpZnQgYXJndW1lbnRzIGlmIGRhdGEgYXJndW1lbnQgd2Fz IG9taXR0ZWQKCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBkYXRhICkgKSB7CgkJ CXR5cGUgPSB0eXBlIHx8IGNhbGxiYWNrOwoJCQljYWxsYmFjayA9IGRhdGE7CgkJ CWRhdGEgPSB1bmRlZmluZWQ7CgkJfQoKCQlyZXR1cm4galF1ZXJ5LmFqYXgoewoJ CQl0eXBlOiBtZXRob2QsCgkJCXVybDogdXJsLAoJCQlkYXRhOiBkYXRhLAoJCQlz dWNjZXNzOiBjYWxsYmFjaywKCQkJZGF0YVR5cGU6IHR5cGUKCQl9KTsKCX07Cn0p OwoKalF1ZXJ5LmV4dGVuZCh7CgoJZ2V0U2NyaXB0OiBmdW5jdGlvbiggdXJsLCBj YWxsYmFjayApIHsKCQlyZXR1cm4galF1ZXJ5LmdldCggdXJsLCB1bmRlZmluZWQs IGNhbGxiYWNrLCAic2NyaXB0IiApOwoJfSwKCglnZXRKU09OOiBmdW5jdGlvbigg dXJsLCBkYXRhLCBjYWxsYmFjayApIHsKCQlyZXR1cm4galF1ZXJ5LmdldCggdXJs LCBkYXRhLCBjYWxsYmFjaywgImpzb24iICk7Cgl9LAoKCS8vIENyZWF0ZXMgYSBm dWxsIGZsZWRnZWQgc2V0dGluZ3Mgb2JqZWN0IGludG8gdGFyZ2V0CgkvLyB3aXRo IGJvdGggYWpheFNldHRpbmdzIGFuZCBzZXR0aW5ncyBmaWVsZHMuCgkvLyBJZiB0 YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRpbmdzLgoJYWph eFNldHVwOiBmdW5jdGlvbiggdGFyZ2V0LCBzZXR0aW5ncyApIHsKCQlpZiAoIHNl dHRpbmdzICkgewoJCQkvLyBCdWlsZGluZyBhIHNldHRpbmdzIG9iamVjdAoJCQlh amF4RXh0ZW5kKCB0YXJnZXQsIGpRdWVyeS5hamF4U2V0dGluZ3MgKTsKCQl9IGVs c2UgewoJCQkvLyBFeHRlbmRpbmcgYWpheFNldHRpbmdzCgkJCXNldHRpbmdzID0g dGFyZ2V0OwoJCQl0YXJnZXQgPSBqUXVlcnkuYWpheFNldHRpbmdzOwoJCX0KCQlh amF4RXh0ZW5kKCB0YXJnZXQsIHNldHRpbmdzICk7CgkJcmV0dXJuIHRhcmdldDsK CX0sCgoJYWpheFNldHRpbmdzOiB7CgkJdXJsOiBhamF4TG9jYXRpb24sCgkJaXNM b2NhbDogcmxvY2FsUHJvdG9jb2wudGVzdCggYWpheExvY1BhcnRzWyAxIF0gKSwK CQlnbG9iYWw6IHRydWUsCgkJdHlwZTogIkdFVCIsCgkJY29udGVudFR5cGU6ICJh cHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgi LAoJCXByb2Nlc3NEYXRhOiB0cnVlLAoJCWFzeW5jOiB0cnVlLAoJCS8qCgkJdGlt ZW91dDogMCwKCQlkYXRhOiBudWxsLAoJCWRhdGFUeXBlOiBudWxsLAoJCXVzZXJu YW1lOiBudWxsLAoJCXBhc3N3b3JkOiBudWxsLAoJCWNhY2hlOiBudWxsLAoJCXRy YWRpdGlvbmFsOiBmYWxzZSwKCQloZWFkZXJzOiB7fSwKCQkqLwoKCQlhY2NlcHRz OiB7CgkJCXhtbDogImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLAoJCQlodG1s OiAidGV4dC9odG1sIiwKCQkJdGV4dDogInRleHQvcGxhaW4iLAoJCQlqc29uOiAi YXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiwKCQkJIioiOiBhbGxU eXBlcwoJCX0sCgoJCWNvbnRlbnRzOiB7CgkJCXhtbDogL3htbC8sCgkJCWh0bWw6 IC9odG1sLywKCQkJanNvbjogL2pzb24vCgkJfSwKCgkJcmVzcG9uc2VGaWVsZHM6 IHsKCQkJeG1sOiAicmVzcG9uc2VYTUwiLAoJCQl0ZXh0OiAicmVzcG9uc2VUZXh0 IgoJCX0sCgoJCS8vIExpc3Qgb2YgZGF0YSBjb252ZXJ0ZXJzCgkJLy8gMSkga2V5 IGZvcm1hdCBpcyAic291cmNlX3R5cGUgZGVzdGluYXRpb25fdHlwZSIgKGEgc2lu Z2xlIHNwYWNlIGluLWJldHdlZW4pCgkJLy8gMikgdGhlIGNhdGNoYWxsIHN5bWJv bCAiKiIgY2FuIGJlIHVzZWQgZm9yIHNvdXJjZV90eXBlCgkJY29udmVydGVyczog ewoKCQkJLy8gQ29udmVydCBhbnl0aGluZyB0byB0ZXh0CgkJCSIqIHRleHQiOiB3 aW5kb3cuU3RyaW5nLAoKCQkJLy8gVGV4dCB0byBodG1sICh0cnVlID0gbm8gdHJh bnNmb3JtYXRpb24pCgkJCSJ0ZXh0IGh0bWwiOiB0cnVlLAoKCQkJLy8gRXZhbHVh dGUgdGV4dCBhcyBhIGpzb24gZXhwcmVzc2lvbgoJCQkidGV4dCBqc29uIjogalF1 ZXJ5LnBhcnNlSlNPTiwKCgkJCS8vIFBhcnNlIHRleHQgYXMgeG1sCgkJCSJ0ZXh0 IHhtbCI6IGpRdWVyeS5wYXJzZVhNTAoJCX0sCgoJCS8vIEZvciBvcHRpb25zIHRo YXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6CgkJLy8geW91IGNhbiBhZGQg eW91ciBvd24gY3VzdG9tIG9wdGlvbnMgaGVyZSBpZgoJCS8vIGFuZCB3aGVuIHlv dSBjcmVhdGUgb25lIHRoYXQgc2hvdWxkbid0IGJlCgkJLy8gZGVlcCBleHRlbmRl ZCAoc2VlIGFqYXhFeHRlbmQpCgkJZmxhdE9wdGlvbnM6IHsKCQkJY29udGV4dDog dHJ1ZSwKCQkJdXJsOiB0cnVlCgkJfQoJfSwKCglhamF4UHJlZmlsdGVyOiBhZGRU b1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMgKSwKCWFqYXhUcmFu c3BvcnQ6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cyAp LAoKCS8vIE1haW4gbWV0aG9kCglhamF4OiBmdW5jdGlvbiggdXJsLCBvcHRpb25z ICkgewoKCQkvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUtMS41 IHNpZ25hdHVyZQoJCWlmICggdHlwZW9mIHVybCA9PT0gIm9iamVjdCIgKSB7CgkJ CW9wdGlvbnMgPSB1cmw7CgkJCXVybCA9IHVuZGVmaW5lZDsKCQl9CgoJCS8vIEZv cmNlIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0CgkJb3B0aW9ucyA9IG9wdGlvbnMg fHwge307CgoJCXZhciAvLyBDcmVhdGUgdGhlIGZpbmFsIG9wdGlvbnMgb2JqZWN0 CgkJCXMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLAoJCQkvLyBD YWxsYmFja3MgY29udGV4dAoJCQljYWxsYmFja0NvbnRleHQgPSBzLmNvbnRleHQg fHwgcywKCQkJLy8gQ29udGV4dCBmb3IgZ2xvYmFsIGV2ZW50cwoJCQkvLyBJdCdz IHRoZSBjYWxsYmFja0NvbnRleHQgaWYgb25lIHdhcyBwcm92aWRlZCBpbiB0aGUg b3B0aW9ucwoJCQkvLyBhbmQgaWYgaXQncyBhIERPTSBub2RlIG9yIGEgalF1ZXJ5 IGNvbGxlY3Rpb24KCQkJZ2xvYmFsRXZlbnRDb250ZXh0ID0gY2FsbGJhY2tDb250 ZXh0ICE9PSBzICYmCgkJCQkoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8fCBj YWxsYmFja0NvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgKSA/CgkJCQkJCWpRdWVy eSggY2FsbGJhY2tDb250ZXh0ICkgOiBqUXVlcnkuZXZlbnQsCgkJCS8vIERlZmVy cmVkcwoJCQlkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLAoJCQljb21wbGV0 ZURlZmVycmVkID0galF1ZXJ5LkNhbGxiYWNrcyggIm9uY2UgbWVtb3J5IiApLAoJ CQkvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcwoJCQlzdGF0dXNDb2RlID0g cy5zdGF0dXNDb2RlIHx8IHt9LAoJCQkvLyBpZk1vZGlmaWVkIGtleQoJCQlpZk1v ZGlmaWVkS2V5LAoJCQkvLyBIZWFkZXJzICh0aGV5IGFyZSBzZW50IGFsbCBhdCBv bmNlKQoJCQlyZXF1ZXN0SGVhZGVycyA9IHt9LAoJCQlyZXF1ZXN0SGVhZGVyc05h bWVzID0ge30sCgkJCS8vIFJlc3BvbnNlIGhlYWRlcnMKCQkJcmVzcG9uc2VIZWFk ZXJzU3RyaW5nLAoJCQlyZXNwb25zZUhlYWRlcnMsCgkJCS8vIHRyYW5zcG9ydAoJ CQl0cmFuc3BvcnQsCgkJCS8vIHRpbWVvdXQgaGFuZGxlCgkJCXRpbWVvdXRUaW1l ciwKCQkJLy8gQ3Jvc3MtZG9tYWluIGRldGVjdGlvbiB2YXJzCgkJCXBhcnRzLAoJ CQkvLyBUaGUganFYSFIgc3RhdGUKCQkJc3RhdGUgPSAwLAoJCQkvLyBUbyBrbm93 IGlmIGdsb2JhbCBldmVudHMgYXJlIHRvIGJlIGRpc3BhdGNoZWQKCQkJZmlyZUds b2JhbHMsCgkJCS8vIExvb3AgdmFyaWFibGUKCQkJaSwKCQkJLy8gRmFrZSB4aHIK CQkJanFYSFIgPSB7CgoJCQkJcmVhZHlTdGF0ZTogMCwKCgkJCQkvLyBDYWNoZXMg dGhlIGhlYWRlcgoJCQkJc2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUs IHZhbHVlICkgewoJCQkJCWlmICggIXN0YXRlICkgewoJCQkJCQl2YXIgbG5hbWUg PSBuYW1lLnRvTG93ZXJDYXNlKCk7CgkJCQkJCW5hbWUgPSByZXF1ZXN0SGVhZGVy c05hbWVzWyBsbmFtZSBdID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbG5hbWUgXSB8 fCBuYW1lOwoJCQkJCQlyZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0gdmFsdWU7CgkJ CQkJfQoJCQkJCXJldHVybiB0aGlzOwoJCQkJfSwKCgkJCQkvLyBSYXcgc3RyaW5n CgkJCQlnZXRBbGxSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkgewoJCQkJCXJl dHVybiBzdGF0ZSA9PT0gMiA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7 CgkJCQl9LAoKCQkJCS8vIEJ1aWxkcyBoZWFkZXJzIGhhc2h0YWJsZSBpZiBuZWVk ZWQKCQkJCWdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkgewoJCQkJ CXZhciBtYXRjaDsKCQkJCQlpZiAoIHN0YXRlID09PSAyICkgewoJCQkJCQlpZiAo ICFyZXNwb25zZUhlYWRlcnMgKSB7CgkJCQkJCQlyZXNwb25zZUhlYWRlcnMgPSB7 fTsKCQkJCQkJCXdoaWxlKCAoIG1hdGNoID0gcmhlYWRlcnMuZXhlYyggcmVzcG9u c2VIZWFkZXJzU3RyaW5nICkgKSApIHsKCQkJCQkJCQlyZXNwb25zZUhlYWRlcnNb IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCkgXSA9IG1hdGNoWyAyIF07CgkJCQkJCQl9 CgkJCQkJCX0KCQkJCQkJbWF0Y2ggPSByZXNwb25zZUhlYWRlcnNbIGtleS50b0xv d2VyQ2FzZSgpIF07CgkJCQkJfQoJCQkJCXJldHVybiBtYXRjaCA9PT0gdW5kZWZp bmVkID8gbnVsbCA6IG1hdGNoOwoJCQkJfSwKCgkJCQkvLyBPdmVycmlkZXMgcmVz cG9uc2UgY29udGVudC10eXBlIGhlYWRlcgoJCQkJb3ZlcnJpZGVNaW1lVHlwZTog ZnVuY3Rpb24oIHR5cGUgKSB7CgkJCQkJaWYgKCAhc3RhdGUgKSB7CgkJCQkJCXMu bWltZVR5cGUgPSB0eXBlOwoJCQkJCX0KCQkJCQlyZXR1cm4gdGhpczsKCQkJCX0s CgoJCQkJLy8gQ2FuY2VsIHRoZSByZXF1ZXN0CgkJCQlhYm9ydDogZnVuY3Rpb24o IHN0YXR1c1RleHQgKSB7CgkJCQkJc3RhdHVzVGV4dCA9IHN0YXR1c1RleHQgfHwg ImFib3J0IjsKCQkJCQlpZiAoIHRyYW5zcG9ydCApIHsKCQkJCQkJdHJhbnNwb3J0 LmFib3J0KCBzdGF0dXNUZXh0ICk7CgkJCQkJfQoJCQkJCWRvbmUoIDAsIHN0YXR1 c1RleHQgKTsKCQkJCQlyZXR1cm4gdGhpczsKCQkJCX0KCQkJfTsKCgkJLy8gQ2Fs bGJhY2sgZm9yIHdoZW4gZXZlcnl0aGluZyBpcyBkb25lCgkJLy8gSXQgaXMgZGVm aW5lZCBoZXJlIGJlY2F1c2UganNsaW50IGNvbXBsYWlucyBpZiBpdCBpcyBkZWNs YXJlZAoJCS8vIGF0IHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uICh3aGljaCB3b3Vs ZCBiZSBtb3JlIGxvZ2ljYWwgYW5kIHJlYWRhYmxlKQoJCWZ1bmN0aW9uIGRvbmUo IHN0YXR1cywgbmF0aXZlU3RhdHVzVGV4dCwgcmVzcG9uc2VzLCBoZWFkZXJzICkg ewoKCQkJLy8gQ2FsbGVkIG9uY2UKCQkJaWYgKCBzdGF0ZSA9PT0gMiApIHsKCQkJ CXJldHVybjsKCQkJfQoKCQkJLy8gU3RhdGUgaXMgImRvbmUiIG5vdwoJCQlzdGF0 ZSA9IDI7CgoJCQkvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0cwoJCQlpZiAo IHRpbWVvdXRUaW1lciApIHsKCQkJCWNsZWFyVGltZW91dCggdGltZW91dFRpbWVy ICk7CgkJCX0KCgkJCS8vIERlcmVmZXJlbmNlIHRyYW5zcG9ydCBmb3IgZWFybHkg Z2FyYmFnZSBjb2xsZWN0aW9uCgkJCS8vIChubyBtYXR0ZXIgaG93IGxvbmcgdGhl IGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpCgkJCXRyYW5zcG9ydCA9IHVuZGVm aW5lZDsKCgkJCS8vIENhY2hlIHJlc3BvbnNlIGhlYWRlcnMKCQkJcmVzcG9uc2VI ZWFkZXJzU3RyaW5nID0gaGVhZGVycyB8fCAiIjsKCgkJCS8vIFNldCByZWFkeVN0 YXRlCgkJCWpxWEhSLnJlYWR5U3RhdGUgPSBzdGF0dXMgPiAwID8gNCA6IDA7CgoJ CQl2YXIgaXNTdWNjZXNzLAoJCQkJc3VjY2VzcywKCQkJCWVycm9yLAoJCQkJc3Rh dHVzVGV4dCA9IG5hdGl2ZVN0YXR1c1RleHQsCgkJCQlyZXNwb25zZSA9IHJlc3Bv bnNlcyA/IGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMg KSA6IHVuZGVmaW5lZCwKCQkJCWxhc3RNb2RpZmllZCwKCQkJCWV0YWc7CgoJCQkv LyBJZiBzdWNjZXNzZnVsLCBoYW5kbGUgdHlwZSBjaGFpbmluZwoJCQlpZiAoIHN0 YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwIHx8IHN0YXR1cyA9PT0gMzA0ICkg ewoKCQkJCS8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5v bmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuCgkJCQlpZiAo IHMuaWZNb2RpZmllZCApIHsKCgkJCQkJaWYgKCAoIGxhc3RNb2RpZmllZCA9IGpx WEhSLmdldFJlc3BvbnNlSGVhZGVyKCAiTGFzdC1Nb2RpZmllZCIgKSApICkgewoJ CQkJCQlqUXVlcnkubGFzdE1vZGlmaWVkWyBpZk1vZGlmaWVkS2V5IF0gPSBsYXN0 TW9kaWZpZWQ7CgkJCQkJfQoJCQkJCWlmICggKCBldGFnID0ganFYSFIuZ2V0UmVz cG9uc2VIZWFkZXIoICJFdGFnIiApICkgKSB7CgkJCQkJCWpRdWVyeS5ldGFnWyBp Zk1vZGlmaWVkS2V5IF0gPSBldGFnOwoJCQkJCX0KCQkJCX0KCgkJCQkvLyBJZiBu b3QgbW9kaWZpZWQKCQkJCWlmICggc3RhdHVzID09PSAzMDQgKSB7CgoJCQkJCXN0 YXR1c1RleHQgPSAibm90bW9kaWZpZWQiOwoJCQkJCWlzU3VjY2VzcyA9IHRydWU7 CgoJCQkJLy8gSWYgd2UgaGF2ZSBkYXRhCgkJCQl9IGVsc2UgewoKCQkJCQl0cnkg ewoJCQkJCQlzdWNjZXNzID0gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlICk7CgkJ CQkJCXN0YXR1c1RleHQgPSAic3VjY2VzcyI7CgkJCQkJCWlzU3VjY2VzcyA9IHRy dWU7CgkJCQkJfSBjYXRjaChlKSB7CgkJCQkJCS8vIFdlIGhhdmUgYSBwYXJzZXJl cnJvcgoJCQkJCQlzdGF0dXNUZXh0ID0gInBhcnNlcmVycm9yIjsKCQkJCQkJZXJy b3IgPSBlOwoJCQkJCX0KCQkJCX0KCQkJfSBlbHNlIHsKCQkJCS8vIFdlIGV4dHJh Y3QgZXJyb3IgZnJvbSBzdGF0dXNUZXh0CgkJCQkvLyB0aGVuIG5vcm1hbGl6ZSBz dGF0dXNUZXh0IGFuZCBzdGF0dXMgZm9yIG5vbi1hYm9ydHMKCQkJCWVycm9yID0g c3RhdHVzVGV4dDsKCQkJCWlmICggIXN0YXR1c1RleHQgfHwgc3RhdHVzICkgewoJ CQkJCXN0YXR1c1RleHQgPSAiZXJyb3IiOwoJCQkJCWlmICggc3RhdHVzIDwgMCAp IHsKCQkJCQkJc3RhdHVzID0gMDsKCQkJCQl9CgkJCQl9CgkJCX0KCgkJCS8vIFNl dCBkYXRhIGZvciB0aGUgZmFrZSB4aHIgb2JqZWN0CgkJCWpxWEhSLnN0YXR1cyA9 IHN0YXR1czsKCQkJanFYSFIuc3RhdHVzVGV4dCA9ICIiICsgKCBuYXRpdmVTdGF0 dXNUZXh0IHx8IHN0YXR1c1RleHQgKTsKCgkJCS8vIFN1Y2Nlc3MvRXJyb3IKCQkJ aWYgKCBpc1N1Y2Nlc3MgKSB7CgkJCQlkZWZlcnJlZC5yZXNvbHZlV2l0aCggY2Fs bGJhY2tDb250ZXh0LCBbIHN1Y2Nlc3MsIHN0YXR1c1RleHQsIGpxWEhSIF0gKTsK CQkJfSBlbHNlIHsKCQkJCWRlZmVycmVkLnJlamVjdFdpdGgoIGNhbGxiYWNrQ29u dGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCwgZXJyb3IgXSApOwoJCQl9CgoJCQkv LyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcwoJCQlqcVhIUi5zdGF0dXNDb2Rl KCBzdGF0dXNDb2RlICk7CgkJCXN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7CgoJCQlp ZiAoIGZpcmVHbG9iYWxzICkgewoJCQkJZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdn ZXIoICJhamF4IiArICggaXNTdWNjZXNzID8gIlN1Y2Nlc3MiIDogIkVycm9yIiAp LAoJCQkJCQlbIGpxWEhSLCBzLCBpc1N1Y2Nlc3MgPyBzdWNjZXNzIDogZXJyb3Ig XSApOwoJCQl9CgoJCQkvLyBDb21wbGV0ZQoJCQljb21wbGV0ZURlZmVycmVkLmZp cmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQgXSAp OwoKCQkJaWYgKCBmaXJlR2xvYmFscyApIHsKCQkJCWdsb2JhbEV2ZW50Q29udGV4 dC50cmlnZ2VyKCAiYWpheENvbXBsZXRlIiwgWyBqcVhIUiwgcyBdICk7CgkJCQkv LyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNvdW50ZXIKCQkJCWlmICggISggLS1q UXVlcnkuYWN0aXZlICkgKSB7CgkJCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIoICJh amF4U3RvcCIgKTsKCQkJCX0KCQkJfQoJCX0KCgkJLy8gQXR0YWNoIGRlZmVycmVk cwoJCWRlZmVycmVkLnByb21pc2UoIGpxWEhSICk7CgkJanFYSFIuc3VjY2VzcyA9 IGpxWEhSLmRvbmU7CgkJanFYSFIuZXJyb3IgPSBqcVhIUi5mYWlsOwoJCWpxWEhS LmNvbXBsZXRlID0gY29tcGxldGVEZWZlcnJlZC5hZGQ7CgoJCS8vIFN0YXR1cy1k ZXBlbmRlbnQgY2FsbGJhY2tzCgkJanFYSFIuc3RhdHVzQ29kZSA9IGZ1bmN0aW9u KCBtYXAgKSB7CgkJCWlmICggbWFwICkgewoJCQkJdmFyIHRtcDsKCQkJCWlmICgg c3RhdGUgPCAyICkgewoJCQkJCWZvciAoIHRtcCBpbiBtYXAgKSB7CgkJCQkJCXN0 YXR1c0NvZGVbIHRtcCBdID0gWyBzdGF0dXNDb2RlW3RtcF0sIG1hcFt0bXBdIF07 CgkJCQkJfQoJCQkJfSBlbHNlIHsKCQkJCQl0bXAgPSBtYXBbIGpxWEhSLnN0YXR1 cyBdOwoJCQkJCWpxWEhSLnRoZW4oIHRtcCwgdG1wICk7CgkJCQl9CgkJCX0KCQkJ cmV0dXJuIHRoaXM7CgkJfTsKCgkJLy8gUmVtb3ZlIGhhc2ggY2hhcmFjdGVyICgj NzUzMTogYW5kIHN0cmluZyBwcm9tb3Rpb24pCgkJLy8gQWRkIHByb3RvY29sIGlm IG5vdCBwcm92aWRlZCAoIzU4NjY6IElFNyBpc3N1ZSB3aXRoIHByb3RvY29sLWxl c3MgdXJscykKCQkvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBh dmFpbGFibGUKCQlzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgKSArICIiICkucmVw bGFjZSggcmhhc2gsICIiICkucmVwbGFjZSggcnByb3RvY29sLCBhamF4TG9jUGFy dHNbIDEgXSArICIvLyIgKTsKCgkJLy8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdAoJ CXMuZGF0YVR5cGVzID0galF1ZXJ5LnRyaW0oIHMuZGF0YVR5cGUgfHwgIioiICku dG9Mb3dlckNhc2UoKS5zcGxpdCggcnNwYWNlc0FqYXggKTsKCgkJLy8gRGV0ZXJt aW5lIGlmIGEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3JkZXIKCQlpZiAo IHMuY3Jvc3NEb21haW4gPT0gbnVsbCApIHsKCQkJcGFydHMgPSBydXJsLmV4ZWMo IHMudXJsLnRvTG93ZXJDYXNlKCkgKTsKCQkJcy5jcm9zc0RvbWFpbiA9ICEhKCBw YXJ0cyAmJgoJCQkJKCBwYXJ0c1sgMSBdICE9IGFqYXhMb2NQYXJ0c1sgMSBdIHx8 IHBhcnRzWyAyIF0gIT0gYWpheExvY1BhcnRzWyAyIF0gfHwKCQkJCQkoIHBhcnRz WyAzIF0gfHwgKCBwYXJ0c1sgMSBdID09PSAiaHR0cDoiID8gODAgOiA0NDMgKSAp ICE9CgkJCQkJCSggYWpheExvY1BhcnRzWyAzIF0gfHwgKCBhamF4TG9jUGFydHNb IDEgXSA9PT0gImh0dHA6IiA/IDgwIDogNDQzICkgKSApCgkJCSk7CgkJfQoKCQkv LyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmcKCQlpZiAoIHMu ZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09ICJzdHJp bmciICkgewoJCQlzLmRhdGEgPSBqUXVlcnkucGFyYW0oIHMuZGF0YSwgcy50cmFk aXRpb25hbCApOwoJCX0KCgkJLy8gQXBwbHkgcHJlZmlsdGVycwoJCWluc3BlY3RQ cmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzLCBzLCBvcHRpb25zLCBq cVhIUiApOwoKCQkvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhIHBy ZWZpbHRlciwgc3RvcCB0aGVyZQoJCWlmICggc3RhdGUgPT09IDIgKSB7CgkJCXJl dHVybiBmYWxzZTsKCQl9CgoJCS8vIFdlIGNhbiBmaXJlIGdsb2JhbCBldmVudHMg YXMgb2Ygbm93IGlmIGFza2VkIHRvCgkJZmlyZUdsb2JhbHMgPSBzLmdsb2JhbDsK CgkJLy8gVXBwZXJjYXNlIHRoZSB0eXBlCgkJcy50eXBlID0gcy50eXBlLnRvVXBw ZXJDYXNlKCk7CgoJCS8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50 CgkJcy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7CgoJ CS8vIFdhdGNoIGZvciBhIG5ldyBzZXQgb2YgcmVxdWVzdHMKCQlpZiAoIGZpcmVH bG9iYWxzICYmIGpRdWVyeS5hY3RpdmUrKyA9PT0gMCApIHsKCQkJalF1ZXJ5LmV2 ZW50LnRyaWdnZXIoICJhamF4U3RhcnQiICk7CgkJfQoKCQkvLyBNb3JlIG9wdGlv bnMgaGFuZGxpbmcgZm9yIHJlcXVlc3RzIHdpdGggbm8gY29udGVudAoJCWlmICgg IXMuaGFzQ29udGVudCApIHsKCgkJCS8vIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBh cHBlbmQgZGF0YSB0byB1cmwKCQkJaWYgKCBzLmRhdGEgKSB7CgkJCQlzLnVybCAr PSAoIHJxdWVyeS50ZXN0KCBzLnVybCApID8gIiYiIDogIj8iICkgKyBzLmRhdGE7 CgkJCQkvLyAjOTY4MjogcmVtb3ZlIGRhdGEgc28gdGhhdCBpdCdzIG5vdCB1c2Vk IGluIGFuIGV2ZW50dWFsIHJldHJ5CgkJCQlkZWxldGUgcy5kYXRhOwoJCQl9CgoJ CQkvLyBHZXQgaWZNb2RpZmllZEtleSBiZWZvcmUgYWRkaW5nIHRoZSBhbnRpLWNh Y2hlIHBhcmFtZXRlcgoJCQlpZk1vZGlmaWVkS2V5ID0gcy51cmw7CgoJCQkvLyBB ZGQgYW50aS1jYWNoZSBpbiB1cmwgaWYgbmVlZGVkCgkJCWlmICggcy5jYWNoZSA9 PT0gZmFsc2UgKSB7CgoJCQkJdmFyIHRzID0galF1ZXJ5Lm5vdygpLAoJCQkJCS8v IHRyeSByZXBsYWNpbmcgXz0gaWYgaXQgaXMgdGhlcmUKCQkJCQlyZXQgPSBzLnVy bC5yZXBsYWNlKCBydHMsICIkMV89IiArIHRzICk7CgoJCQkJLy8gaWYgbm90aGlu ZyB3YXMgcmVwbGFjZWQsIGFkZCB0aW1lc3RhbXAgdG8gdGhlIGVuZAoJCQkJcy51 cmwgPSByZXQgKyAoICggcmV0ID09PSBzLnVybCApID8gKCBycXVlcnkudGVzdCgg cy51cmwgKSA/ICImIiA6ICI/IiApICsgIl89IiArIHRzIDogIiIgKTsKCQkJfQoJ CX0KCgkJLy8gU2V0IHRoZSBjb3JyZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWlu ZyBzZW50CgkJaWYgKCBzLmRhdGEgJiYgcy5oYXNDb250ZW50ICYmIHMuY29udGVu dFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgKSB7CgkJCWpx WEhSLnNldFJlcXVlc3RIZWFkZXIoICJDb250ZW50LVR5cGUiLCBzLmNvbnRlbnRU eXBlICk7CgkJfQoKCQkvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9v ciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLgoJ CWlmICggcy5pZk1vZGlmaWVkICkgewoJCQlpZk1vZGlmaWVkS2V5ID0gaWZNb2Rp ZmllZEtleSB8fCBzLnVybDsKCQkJaWYgKCBqUXVlcnkubGFzdE1vZGlmaWVkWyBp Zk1vZGlmaWVkS2V5IF0gKSB7CgkJCQlqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAi SWYtTW9kaWZpZWQtU2luY2UiLCBqUXVlcnkubGFzdE1vZGlmaWVkWyBpZk1vZGlm aWVkS2V5IF0gKTsKCQkJfQoJCQlpZiAoIGpRdWVyeS5ldGFnWyBpZk1vZGlmaWVk S2V5IF0gKSB7CgkJCQlqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAiSWYtTm9uZS1N YXRjaCIsIGpRdWVyeS5ldGFnWyBpZk1vZGlmaWVkS2V5IF0gKTsKCQkJfQoJCX0K CgkJLy8gU2V0IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVw ZW5kaW5nIG9uIHRoZSBkYXRhVHlwZQoJCWpxWEhSLnNldFJlcXVlc3RIZWFkZXIo CgkJCSJBY2NlcHQiLAoJCQlzLmRhdGFUeXBlc1sgMCBdICYmIHMuYWNjZXB0c1sg cy5kYXRhVHlwZXNbMF0gXSA/CgkJCQlzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWzBd IF0gKyAoIHMuZGF0YVR5cGVzWyAwIF0gIT09ICIqIiA/ICIsICIgKyBhbGxUeXBl cyArICI7IHE9MC4wMSIgOiAiIiApIDoKCQkJCXMuYWNjZXB0c1sgIioiIF0KCQkp OwoKCQkvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb24KCQlmb3IgKCBpIGluIHMu aGVhZGVycyApIHsKCQkJanFYSFIuc2V0UmVxdWVzdEhlYWRlciggaSwgcy5oZWFk ZXJzWyBpIF0gKTsKCQl9CgoJCS8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0 eXBlcyBhbmQgZWFybHkgYWJvcnQKCQlpZiAoIHMuYmVmb3JlU2VuZCAmJiAoIHMu YmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09 IGZhbHNlIHx8IHN0YXRlID09PSAyICkgKSB7CgkJCQkvLyBBYm9ydCBpZiBub3Qg ZG9uZSBhbHJlYWR5CgkJCQlqcVhIUi5hYm9ydCgpOwoJCQkJcmV0dXJuIGZhbHNl OwoKCQl9CgoJCS8vIEluc3RhbGwgY2FsbGJhY2tzIG9uIGRlZmVycmVkcwoJCWZv ciAoIGkgaW4geyBzdWNjZXNzOiAxLCBlcnJvcjogMSwgY29tcGxldGU6IDEgfSAp IHsKCQkJanFYSFJbIGkgXSggc1sgaSBdICk7CgkJfQoKCQkvLyBHZXQgdHJhbnNw b3J0CgkJdHJhbnNwb3J0ID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMo IHRyYW5zcG9ydHMsIHMsIG9wdGlvbnMsIGpxWEhSICk7CgoJCS8vIElmIG5vIHRy YW5zcG9ydCwgd2UgYXV0by1hYm9ydAoJCWlmICggIXRyYW5zcG9ydCApIHsKCQkJ ZG9uZSggLTEsICJObyBUcmFuc3BvcnQiICk7CgkJfSBlbHNlIHsKCQkJanFYSFIu cmVhZHlTdGF0ZSA9IDE7CgkJCS8vIFNlbmQgZ2xvYmFsIGV2ZW50CgkJCWlmICgg ZmlyZUdsb2JhbHMgKSB7CgkJCQlnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlcigg ImFqYXhTZW5kIiwgWyBqcVhIUiwgcyBdICk7CgkJCX0KCQkJLy8gVGltZW91dAoJ CQlpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0ID4gMCApIHsKCQkJCXRpbWVvdXRU aW1lciA9IHNldFRpbWVvdXQoIGZ1bmN0aW9uKCl7CgkJCQkJanFYSFIuYWJvcnQo ICJ0aW1lb3V0IiApOwoJCQkJfSwgcy50aW1lb3V0ICk7CgkJCX0KCgkJCXRyeSB7 CgkJCQlzdGF0ZSA9IDE7CgkJCQl0cmFuc3BvcnQuc2VuZCggcmVxdWVzdEhlYWRl cnMsIGRvbmUgKTsKCQkJfSBjYXRjaCAoZSkgewoJCQkJLy8gUHJvcGFnYXRlIGV4 Y2VwdGlvbiBhcyBlcnJvciBpZiBub3QgZG9uZQoJCQkJaWYgKCBzdGF0ZSA8IDIg KSB7CgkJCQkJZG9uZSggLTEsIGUgKTsKCQkJCS8vIFNpbXBseSByZXRocm93IG90 aGVyd2lzZQoJCQkJfSBlbHNlIHsKCQkJCQl0aHJvdyBlOwoJCQkJfQoJCQl9CgkJ fQoKCQlyZXR1cm4ganFYSFI7Cgl9LAoKCS8vIFNlcmlhbGl6ZSBhbiBhcnJheSBv ZiBmb3JtIGVsZW1lbnRzIG9yIGEgc2V0IG9mCgkvLyBrZXkvdmFsdWVzIGludG8g YSBxdWVyeSBzdHJpbmcKCXBhcmFtOiBmdW5jdGlvbiggYSwgdHJhZGl0aW9uYWwg KSB7CgkJdmFyIHMgPSBbXSwKCQkJYWRkID0gZnVuY3Rpb24oIGtleSwgdmFsdWUg KSB7CgkJCQkvLyBJZiB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBpbnZva2UgaXQgYW5k IHJldHVybiBpdHMgdmFsdWUKCQkJCXZhbHVlID0galF1ZXJ5LmlzRnVuY3Rpb24o IHZhbHVlICkgPyB2YWx1ZSgpIDogdmFsdWU7CgkJCQlzWyBzLmxlbmd0aCBdID0g ZW5jb2RlVVJJQ29tcG9uZW50KCBrZXkgKSArICI9IiArIGVuY29kZVVSSUNvbXBv bmVudCggdmFsdWUgKTsKCQkJfTsKCgkJLy8gU2V0IHRyYWRpdGlvbmFsIHRvIHRy dWUgZm9yIGpRdWVyeSA8PSAxLjMuMiBiZWhhdmlvci4KCQlpZiAoIHRyYWRpdGlv bmFsID09PSB1bmRlZmluZWQgKSB7CgkJCXRyYWRpdGlvbmFsID0galF1ZXJ5LmFq YXhTZXR0aW5ncy50cmFkaXRpb25hbDsKCQl9CgoJCS8vIElmIGFuIGFycmF5IHdh cyBwYXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0g ZWxlbWVudHMuCgkJaWYgKCBqUXVlcnkuaXNBcnJheSggYSApIHx8ICggYS5qcXVl cnkgJiYgIWpRdWVyeS5pc1BsYWluT2JqZWN0KCBhICkgKSApIHsKCQkJLy8gU2Vy aWFsaXplIHRoZSBmb3JtIGVsZW1lbnRzCgkJCWpRdWVyeS5lYWNoKCBhLCBmdW5j dGlvbigpIHsKCQkJCWFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7CgkJCX0p OwoKCQl9IGVsc2UgewoJCQkvLyBJZiB0cmFkaXRpb25hbCwgZW5jb2RlIHRoZSAi b2xkIiB3YXkgKHRoZSB3YXkgMS4zLjIgb3Igb2xkZXIKCQkJLy8gZGlkIGl0KSwg b3RoZXJ3aXNlIGVuY29kZSBwYXJhbXMgcmVjdXJzaXZlbHkuCgkJCWZvciAoIHZh ciBwcmVmaXggaW4gYSApIHsKCQkJCWJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHBy ZWZpeCBdLCB0cmFkaXRpb25hbCwgYWRkICk7CgkJCX0KCQl9CgoJCS8vIFJldHVy biB0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRpb24KCQlyZXR1cm4gcy5qb2luKCAi JiIgKS5yZXBsYWNlKCByMjAsICIrIiApOwoJfQp9KTsKCmZ1bmN0aW9uIGJ1aWxk UGFyYW1zKCBwcmVmaXgsIG9iaiwgdHJhZGl0aW9uYWwsIGFkZCApIHsKCWlmICgg alF1ZXJ5LmlzQXJyYXkoIG9iaiApICkgewoJCS8vIFNlcmlhbGl6ZSBhcnJheSBp dGVtLgoJCWpRdWVyeS5lYWNoKCBvYmosIGZ1bmN0aW9uKCBpLCB2ICkgewoJCQlp ZiAoIHRyYWRpdGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkgewoJ CQkJLy8gVHJlYXQgZWFjaCBhcnJheSBpdGVtIGFzIGEgc2NhbGFyLgoJCQkJYWRk KCBwcmVmaXgsIHYgKTsKCgkJCX0gZWxzZSB7CgkJCQkvLyBJZiBhcnJheSBpdGVt IGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCksIGVuY29kZSBpdHMKCQkJ CS8vIG51bWVyaWMgaW5kZXggdG8gcmVzb2x2ZSBkZXNlcmlhbGl6YXRpb24gYW1i aWd1aXR5IGlzc3Vlcy4KCQkJCS8vIE5vdGUgdGhhdCByYWNrIChhcyBvZiAxLjAu MCkgY2FuJ3QgY3VycmVudGx5IGRlc2VyaWFsaXplCgkJCQkvLyBuZXN0ZWQgYXJy YXlzIHByb3Blcmx5LCBhbmQgYXR0ZW1wdGluZyB0byBkbyBzbyBtYXkgY2F1c2UK CQkJCS8vIGEgc2VydmVyIGVycm9yLiBQb3NzaWJsZSBmaXhlcyBhcmUgdG8gbW9k aWZ5IHJhY2sncwoJCQkJLy8gZGVzZXJpYWxpemF0aW9uIGFsZ29yaXRobSBvciB0 byBwcm92aWRlIGFuIG9wdGlvbiBvciBmbGFnCgkJCQkvLyB0byBmb3JjZSBhcnJh eSBzZXJpYWxpemF0aW9uIHRvIGJlIHNoYWxsb3cuCgkJCQlidWlsZFBhcmFtcygg cHJlZml4ICsgIlsiICsgKCB0eXBlb2YgdiA9PT0gIm9iamVjdCIgPyBpIDogIiIg KSArICJdIiwgdiwgdHJhZGl0aW9uYWwsIGFkZCApOwoJCQl9CgkJfSk7CgoJfSBl bHNlIGlmICggIXRyYWRpdGlvbmFsICYmIGpRdWVyeS50eXBlKCBvYmogKSA9PT0g Im9iamVjdCIgKSB7CgkJLy8gU2VyaWFsaXplIG9iamVjdCBpdGVtLgoJCWZvciAo IHZhciBuYW1lIGluIG9iaiApIHsKCQkJYnVpbGRQYXJhbXMoIHByZWZpeCArICJb IiArIG5hbWUgKyAiXSIsIG9ialsgbmFtZSBdLCB0cmFkaXRpb25hbCwgYWRkICk7 CgkJfQoKCX0gZWxzZSB7CgkJLy8gU2VyaWFsaXplIHNjYWxhciBpdGVtLgoJCWFk ZCggcHJlZml4LCBvYmogKTsKCX0KfQoKLy8gVGhpcyBpcyBzdGlsbCBvbiB0aGUg alF1ZXJ5IG9iamVjdC4uLiBmb3Igbm93Ci8vIFdhbnQgdG8gbW92ZSB0aGlzIHRv IGpRdWVyeS5hamF4IHNvbWUgZGF5CmpRdWVyeS5leHRlbmQoewoKCS8vIENvdW50 ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmllcwoJYWN0 aXZlOiAwLAoKCS8vIExhc3QtTW9kaWZpZWQgaGVhZGVyIGNhY2hlIGZvciBuZXh0 IHJlcXVlc3QKCWxhc3RNb2RpZmllZDoge30sCglldGFnOiB7fQoKfSk7CgovKiBI YW5kbGVzIHJlc3BvbnNlcyB0byBhbiBhamF4IHJlcXVlc3Q6CiAqIC0gc2V0cyBh bGwgcmVzcG9uc2VYWFggZmllbGRzIGFjY29yZGluZ2x5CiAqIC0gZmluZHMgdGhl IHJpZ2h0IGRhdGFUeXBlIChtZWRpYXRlcyBiZXR3ZWVuIGNvbnRlbnQtdHlwZSBh bmQgZXhwZWN0ZWQgZGF0YVR5cGUpCiAqIC0gcmV0dXJucyB0aGUgY29ycmVzcG9u ZGluZyByZXNwb25zZQogKi8KZnVuY3Rpb24gYWpheEhhbmRsZVJlc3BvbnNlcygg cywganFYSFIsIHJlc3BvbnNlcyApIHsKCgl2YXIgY29udGVudHMgPSBzLmNvbnRl bnRzLAoJCWRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzLAoJCXJlc3BvbnNlRmllbGRz ID0gcy5yZXNwb25zZUZpZWxkcywKCQljdCwKCQl0eXBlLAoJCWZpbmFsRGF0YVR5 cGUsCgkJZmlyc3REYXRhVHlwZTsKCgkvLyBGaWxsIHJlc3BvbnNlWFhYIGZpZWxk cwoJZm9yICggdHlwZSBpbiByZXNwb25zZUZpZWxkcyApIHsKCQlpZiAoIHR5cGUg aW4gcmVzcG9uc2VzICkgewoJCQlqcVhIUlsgcmVzcG9uc2VGaWVsZHNbdHlwZV0g XSA9IHJlc3BvbnNlc1sgdHlwZSBdOwoJCX0KCX0KCgkvLyBSZW1vdmUgYXV0byBk YXRhVHlwZSBhbmQgZ2V0IGNvbnRlbnQtdHlwZSBpbiB0aGUgcHJvY2VzcwoJd2hp bGUoIGRhdGFUeXBlc1sgMCBdID09PSAiKiIgKSB7CgkJZGF0YVR5cGVzLnNoaWZ0 KCk7CgkJaWYgKCBjdCA9PT0gdW5kZWZpbmVkICkgewoJCQljdCA9IHMubWltZVR5 cGUgfHwganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoICJjb250ZW50LXR5cGUiICk7 CgkJfQoJfQoKCS8vIENoZWNrIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGtub3du IGNvbnRlbnQtdHlwZQoJaWYgKCBjdCApIHsKCQlmb3IgKCB0eXBlIGluIGNvbnRl bnRzICkgewoJCQlpZiAoIGNvbnRlbnRzWyB0eXBlIF0gJiYgY29udGVudHNbIHR5 cGUgXS50ZXN0KCBjdCApICkgewoJCQkJZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUg KTsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJfQoKCS8vIENoZWNrIHRvIHNlZSBpZiB3 ZSBoYXZlIGEgcmVzcG9uc2UgZm9yIHRoZSBleHBlY3RlZCBkYXRhVHlwZQoJaWYg KCBkYXRhVHlwZXNbIDAgXSBpbiByZXNwb25zZXMgKSB7CgkJZmluYWxEYXRhVHlw ZSA9IGRhdGFUeXBlc1sgMCBdOwoJfSBlbHNlIHsKCQkvLyBUcnkgY29udmVydGli bGUgZGF0YVR5cGVzCgkJZm9yICggdHlwZSBpbiByZXNwb25zZXMgKSB7CgkJCWlm ICggIWRhdGFUeXBlc1sgMCBdIHx8IHMuY29udmVydGVyc1sgdHlwZSArICIgIiAr IGRhdGFUeXBlc1swXSBdICkgewoJCQkJZmluYWxEYXRhVHlwZSA9IHR5cGU7CgkJ CQlicmVhazsKCQkJfQoJCQlpZiAoICFmaXJzdERhdGFUeXBlICkgewoJCQkJZmly c3REYXRhVHlwZSA9IHR5cGU7CgkJCX0KCQl9CgkJLy8gT3IganVzdCB1c2UgZmly c3Qgb25lCgkJZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3RE YXRhVHlwZTsKCX0KCgkvLyBJZiB3ZSBmb3VuZCBhIGRhdGFUeXBlCgkvLyBXZSBh ZGQgdGhlIGRhdGFUeXBlIHRvIHRoZSBsaXN0IGlmIG5lZWRlZAoJLy8gYW5kIHJl dHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZQoJaWYgKCBmaW5hbERhdGFU eXBlICkgewoJCWlmICggZmluYWxEYXRhVHlwZSAhPT0gZGF0YVR5cGVzWyAwIF0g KSB7CgkJCWRhdGFUeXBlcy51bnNoaWZ0KCBmaW5hbERhdGFUeXBlICk7CgkJfQoJ CXJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTsKCX0KfQoKLy8gQ2hh aW4gY29udmVyc2lvbnMgZ2l2ZW4gdGhlIHJlcXVlc3QgYW5kIHRoZSBvcmlnaW5h bCByZXNwb25zZQpmdW5jdGlvbiBhamF4Q29udmVydCggcywgcmVzcG9uc2UgKSB7 CgoJLy8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWQKCWlmICggcy5k YXRhRmlsdGVyICkgewoJCXJlc3BvbnNlID0gcy5kYXRhRmlsdGVyKCByZXNwb25z ZSwgcy5kYXRhVHlwZSApOwoJfQoKCXZhciBkYXRhVHlwZXMgPSBzLmRhdGFUeXBl cywKCQljb252ZXJ0ZXJzID0ge30sCgkJaSwKCQlrZXksCgkJbGVuZ3RoID0gZGF0 YVR5cGVzLmxlbmd0aCwKCQl0bXAsCgkJLy8gQ3VycmVudCBhbmQgcHJldmlvdXMg ZGF0YVR5cGVzCgkJY3VycmVudCA9IGRhdGFUeXBlc1sgMCBdLAoJCXByZXYsCgkJ Ly8gQ29udmVyc2lvbiBleHByZXNzaW9uCgkJY29udmVyc2lvbiwKCQkvLyBDb252 ZXJzaW9uIGZ1bmN0aW9uCgkJY29udiwKCQkvLyBDb252ZXJzaW9uIGZ1bmN0aW9u cyAodHJhbnNpdGl2ZSBjb252ZXJzaW9uKQoJCWNvbnYxLAoJCWNvbnYyOwoKCS8v IEZvciBlYWNoIGRhdGFUeXBlIGluIHRoZSBjaGFpbgoJZm9yICggaSA9IDE7IGkg PCBsZW5ndGg7IGkrKyApIHsKCgkJLy8gQ3JlYXRlIGNvbnZlcnRlcnMgbWFwCgkJ Ly8gd2l0aCBsb3dlcmNhc2VkIGtleXMKCQlpZiAoIGkgPT09IDEgKSB7CgkJCWZv ciAoIGtleSBpbiBzLmNvbnZlcnRlcnMgKSB7CgkJCQlpZiAoIHR5cGVvZiBrZXkg PT09ICJzdHJpbmciICkgewoJCQkJCWNvbnZlcnRlcnNbIGtleS50b0xvd2VyQ2Fz ZSgpIF0gPSBzLmNvbnZlcnRlcnNbIGtleSBdOwoJCQkJfQoJCQl9CgkJfQoKCQkv LyBHZXQgdGhlIGRhdGFUeXBlcwoJCXByZXYgPSBjdXJyZW50OwoJCWN1cnJlbnQg PSBkYXRhVHlwZXNbIGkgXTsKCgkJLy8gSWYgY3VycmVudCBpcyBhdXRvIGRhdGFU eXBlLCB1cGRhdGUgaXQgdG8gcHJldgoJCWlmICggY3VycmVudCA9PT0gIioiICkg ewoJCQljdXJyZW50ID0gcHJldjsKCQkvLyBJZiBubyBhdXRvIGFuZCBkYXRhVHlw ZXMgYXJlIGFjdHVhbGx5IGRpZmZlcmVudAoJCX0gZWxzZSBpZiAoIHByZXYgIT09 ICIqIiAmJiBwcmV2ICE9PSBjdXJyZW50ICkgewoKCQkJLy8gR2V0IHRoZSBjb252 ZXJ0ZXIKCQkJY29udmVyc2lvbiA9IHByZXYgKyAiICIgKyBjdXJyZW50OwoJCQlj b252ID0gY29udmVydGVyc1sgY29udmVyc2lvbiBdIHx8IGNvbnZlcnRlcnNbICIq ICIgKyBjdXJyZW50IF07CgoJCQkvLyBJZiB0aGVyZSBpcyBubyBkaXJlY3QgY29u dmVydGVyLCBzZWFyY2ggdHJhbnNpdGl2ZWx5CgkJCWlmICggIWNvbnYgKSB7CgkJ CQljb252MiA9IHVuZGVmaW5lZDsKCQkJCWZvciAoIGNvbnYxIGluIGNvbnZlcnRl cnMgKSB7CgkJCQkJdG1wID0gY29udjEuc3BsaXQoICIgIiApOwoJCQkJCWlmICgg dG1wWyAwIF0gPT09IHByZXYgfHwgdG1wWyAwIF0gPT09ICIqIiApIHsKCQkJCQkJ Y29udjIgPSBjb252ZXJ0ZXJzWyB0bXBbMV0gKyAiICIgKyBjdXJyZW50IF07CgkJ CQkJCWlmICggY29udjIgKSB7CgkJCQkJCQljb252MSA9IGNvbnZlcnRlcnNbIGNv bnYxIF07CgkJCQkJCQlpZiAoIGNvbnYxID09PSB0cnVlICkgewoJCQkJCQkJCWNv bnYgPSBjb252MjsKCQkJCQkJCX0gZWxzZSBpZiAoIGNvbnYyID09PSB0cnVlICkg ewoJCQkJCQkJCWNvbnYgPSBjb252MTsKCQkJCQkJCX0KCQkJCQkJCWJyZWFrOwoJ CQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJCS8vIElmIHdlIGZvdW5kIG5vIGNv bnZlcnRlciwgZGlzcGF0Y2ggYW4gZXJyb3IKCQkJaWYgKCAhKCBjb252IHx8IGNv bnYyICkgKSB7CgkJCQlqUXVlcnkuZXJyb3IoICJObyBjb252ZXJzaW9uIGZyb20g IiArIGNvbnZlcnNpb24ucmVwbGFjZSgiICIsIiB0byAiKSApOwoJCQl9CgkJCS8v IElmIGZvdW5kIGNvbnZlcnRlciBpcyBub3QgYW4gZXF1aXZhbGVuY2UKCQkJaWYg KCBjb252ICE9PSB0cnVlICkgewoJCQkJLy8gQ29udmVydCB3aXRoIDEgb3IgMiBj b252ZXJ0ZXJzIGFjY29yZGluZ2x5CgkJCQlyZXNwb25zZSA9IGNvbnYgPyBjb252 KCByZXNwb25zZSApIDogY29udjIoIGNvbnYxKHJlc3BvbnNlKSApOwoJCQl9CgkJ fQoJfQoJcmV0dXJuIHJlc3BvbnNlOwp9CgoKCgp2YXIganNjID0galF1ZXJ5Lm5v dygpLAoJanNyZSA9IC8oXD0pXD8oJnwkKXxcP1w/L2k7CgovLyBEZWZhdWx0IGpz b25wIHNldHRpbmdzCmpRdWVyeS5hamF4U2V0dXAoewoJanNvbnA6ICJjYWxsYmFj ayIsCglqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4galF1ZXJ5 LmV4cGFuZG8gKyAiXyIgKyAoIGpzYysrICk7Cgl9Cn0pOwoKLy8gRGV0ZWN0LCBu b3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFja3MgZm9yIGpzb25w IHJlcXVlc3RzCmpRdWVyeS5hamF4UHJlZmlsdGVyKCAianNvbiBqc29ucCIsIGZ1 bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHsKCgl2YXIgaW5z cGVjdERhdGEgPSAoIHR5cGVvZiBzLmRhdGEgPT09ICJzdHJpbmciICkgJiYgL15h cHBsaWNhdGlvblwveFwtd3d3XC1mb3JtXC11cmxlbmNvZGVkLy50ZXN0KCBzLmNv bnRlbnRUeXBlICk7CgoJaWYgKCBzLmRhdGFUeXBlc1sgMCBdID09PSAianNvbnAi IHx8CgkJcy5qc29ucCAhPT0gZmFsc2UgJiYgKCBqc3JlLnRlc3QoIHMudXJsICkg fHwKCQkJCWluc3BlY3REYXRhICYmIGpzcmUudGVzdCggcy5kYXRhICkgKSApIHsK CgkJdmFyIHJlc3BvbnNlQ29udGFpbmVyLAoJCQlqc29ucENhbGxiYWNrID0gcy5q c29ucENhbGxiYWNrID0KCQkJCWpRdWVyeS5pc0Z1bmN0aW9uKCBzLmpzb25wQ2Fs bGJhY2sgKSA/IHMuanNvbnBDYWxsYmFjaygpIDogcy5qc29ucENhbGxiYWNrLAoJ CQlwcmV2aW91cyA9IHdpbmRvd1sganNvbnBDYWxsYmFjayBdLAoJCQl1cmwgPSBz LnVybCwKCQkJZGF0YSA9IHMuZGF0YSwKCQkJcmVwbGFjZSA9ICIkMSIgKyBqc29u cENhbGxiYWNrICsgIiQyIjsKCgkJaWYgKCBzLmpzb25wICE9PSBmYWxzZSApIHsK CQkJdXJsID0gdXJsLnJlcGxhY2UoIGpzcmUsIHJlcGxhY2UgKTsKCQkJaWYgKCBz LnVybCA9PT0gdXJsICkgewoJCQkJaWYgKCBpbnNwZWN0RGF0YSApIHsKCQkJCQlk YXRhID0gZGF0YS5yZXBsYWNlKCBqc3JlLCByZXBsYWNlICk7CgkJCQl9CgkJCQlp ZiAoIHMuZGF0YSA9PT0gZGF0YSApIHsKCQkJCQkvLyBBZGQgY2FsbGJhY2sgbWFu dWFsbHkKCQkJCQl1cmwgKz0gKC9cPy8udGVzdCggdXJsICkgPyAiJiIgOiAiPyIp ICsgcy5qc29ucCArICI9IiArIGpzb25wQ2FsbGJhY2s7CgkJCQl9CgkJCX0KCQl9 CgoJCXMudXJsID0gdXJsOwoJCXMuZGF0YSA9IGRhdGE7CgoJCS8vIEluc3RhbGwg Y2FsbGJhY2sKCQl3aW5kb3dbIGpzb25wQ2FsbGJhY2sgXSA9IGZ1bmN0aW9uKCBy ZXNwb25zZSApIHsKCQkJcmVzcG9uc2VDb250YWluZXIgPSBbIHJlc3BvbnNlIF07 CgkJfTsKCgkJLy8gQ2xlYW4tdXAgZnVuY3Rpb24KCQlqcVhIUi5hbHdheXMoZnVu Y3Rpb24oKSB7CgkJCS8vIFNldCBjYWxsYmFjayBiYWNrIHRvIHByZXZpb3VzIHZh bHVlCgkJCXdpbmRvd1sganNvbnBDYWxsYmFjayBdID0gcHJldmlvdXM7CgkJCS8v IENhbGwgaWYgaXQgd2FzIGEgZnVuY3Rpb24gYW5kIHdlIGhhdmUgYSByZXNwb25z ZQoJCQlpZiAoIHJlc3BvbnNlQ29udGFpbmVyICYmIGpRdWVyeS5pc0Z1bmN0aW9u KCBwcmV2aW91cyApICkgewoJCQkJd2luZG93WyBqc29ucENhbGxiYWNrIF0oIHJl c3BvbnNlQ29udGFpbmVyWyAwIF0gKTsKCQkJfQoJCX0pOwoKCQkvLyBVc2UgZGF0 YSBjb252ZXJ0ZXIgdG8gcmV0cmlldmUganNvbiBhZnRlciBzY3JpcHQgZXhlY3V0 aW9uCgkJcy5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdID0gZnVuY3Rpb24oKSB7 CgkJCWlmICggIXJlc3BvbnNlQ29udGFpbmVyICkgewoJCQkJalF1ZXJ5LmVycm9y KCBqc29ucENhbGxiYWNrICsgIiB3YXMgbm90IGNhbGxlZCIgKTsKCQkJfQoJCQly ZXR1cm4gcmVzcG9uc2VDb250YWluZXJbIDAgXTsKCQl9OwoKCQkvLyBmb3JjZSBq c29uIGRhdGFUeXBlCgkJcy5kYXRhVHlwZXNbIDAgXSA9ICJqc29uIjsKCgkJLy8g RGVsZWdhdGUgdG8gc2NyaXB0CgkJcmV0dXJuICJzY3JpcHQiOwoJfQp9KTsKCgoK Ci8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBlCmpRdWVyeS5hamF4U2V0dXAoewoJ YWNjZXB0czogewoJCXNjcmlwdDogInRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRp b24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRp b24veC1lY21hc2NyaXB0IgoJfSwKCWNvbnRlbnRzOiB7CgkJc2NyaXB0OiAvamF2 YXNjcmlwdHxlY21hc2NyaXB0LwoJfSwKCWNvbnZlcnRlcnM6IHsKCQkidGV4dCBz Y3JpcHQiOiBmdW5jdGlvbiggdGV4dCApIHsKCQkJalF1ZXJ5Lmdsb2JhbEV2YWwo IHRleHQgKTsKCQkJcmV0dXJuIHRleHQ7CgkJfQoJfQp9KTsKCi8vIEhhbmRsZSBj YWNoZSdzIHNwZWNpYWwgY2FzZSBhbmQgZ2xvYmFsCmpRdWVyeS5hamF4UHJlZmls dGVyKCAic2NyaXB0IiwgZnVuY3Rpb24oIHMgKSB7CglpZiAoIHMuY2FjaGUgPT09 IHVuZGVmaW5lZCApIHsKCQlzLmNhY2hlID0gZmFsc2U7Cgl9CglpZiAoIHMuY3Jv c3NEb21haW4gKSB7CgkJcy50eXBlID0gIkdFVCI7CgkJcy5nbG9iYWwgPSBmYWxz ZTsKCX0KfSk7CgovLyBCaW5kIHNjcmlwdCB0YWcgaGFjayB0cmFuc3BvcnQKalF1 ZXJ5LmFqYXhUcmFuc3BvcnQoICJzY3JpcHQiLCBmdW5jdGlvbihzKSB7CgoJLy8g VGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRvbWFpbiByZXF1 ZXN0cwoJaWYgKCBzLmNyb3NzRG9tYWluICkgewoKCQl2YXIgc2NyaXB0LAoJCQlo ZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn TmFtZSggImhlYWQiIClbMF0gfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwoK CQlyZXR1cm4gewoKCQkJc2VuZDogZnVuY3Rpb24oIF8sIGNhbGxiYWNrICkgewoK CQkJCXNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJzY3JpcHQiICk7 CgoJCQkJc2NyaXB0LmFzeW5jID0gImFzeW5jIjsKCgkJCQlpZiAoIHMuc2NyaXB0 Q2hhcnNldCApIHsKCQkJCQlzY3JpcHQuY2hhcnNldCA9IHMuc2NyaXB0Q2hhcnNl dDsKCQkJCX0KCgkJCQlzY3JpcHQuc3JjID0gcy51cmw7CgoJCQkJLy8gQXR0YWNo IGhhbmRsZXJzIGZvciBhbGwgYnJvd3NlcnMKCQkJCXNjcmlwdC5vbmxvYWQgPSBz Y3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oIF8sIGlzQWJvcnQg KSB7CgoJCQkJCWlmICggaXNBYm9ydCB8fCAhc2NyaXB0LnJlYWR5U3RhdGUgfHwg L2xvYWRlZHxjb21wbGV0ZS8udGVzdCggc2NyaXB0LnJlYWR5U3RhdGUgKSApIHsK CgkJCQkJCS8vIEhhbmRsZSBtZW1vcnkgbGVhayBpbiBJRQoJCQkJCQlzY3JpcHQu b25sb2FkID0gc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7CgoJCQkJ CQkvLyBSZW1vdmUgdGhlIHNjcmlwdAoJCQkJCQlpZiAoIGhlYWQgJiYgc2NyaXB0 LnBhcmVudE5vZGUgKSB7CgkJCQkJCQloZWFkLnJlbW92ZUNoaWxkKCBzY3JpcHQg KTsKCQkJCQkJfQoKCQkJCQkJLy8gRGVyZWZlcmVuY2UgdGhlIHNjcmlwdAoJCQkJ CQlzY3JpcHQgPSB1bmRlZmluZWQ7CgoJCQkJCQkvLyBDYWxsYmFjayBpZiBub3Qg YWJvcnQKCQkJCQkJaWYgKCAhaXNBYm9ydCApIHsKCQkJCQkJCWNhbGxiYWNrKCAy MDAsICJzdWNjZXNzIiApOwoJCQkJCQl9CgkJCQkJfQoJCQkJfTsKCQkJCS8vIFVz ZSBpbnNlcnRCZWZvcmUgaW5zdGVhZCBvZiBhcHBlbmRDaGlsZCAgdG8gY2lyY3Vt dmVudCBhbiBJRTYgYnVnLgoJCQkJLy8gVGhpcyBhcmlzZXMgd2hlbiBhIGJhc2Ug bm9kZSBpcyB1c2VkICgjMjcwOSBhbmQgIzQzNzgpLgoJCQkJaGVhZC5pbnNlcnRC ZWZvcmUoIHNjcmlwdCwgaGVhZC5maXJzdENoaWxkICk7CgkJCX0sCgoJCQlhYm9y dDogZnVuY3Rpb24oKSB7CgkJCQlpZiAoIHNjcmlwdCApIHsKCQkJCQlzY3JpcHQu b25sb2FkKCAwLCAxICk7CgkJCQl9CgkJCX0KCQl9OwoJfQp9KTsKCgoKCnZhciAv LyAjNTI4MDogSW50ZXJuZXQgRXhwbG9yZXIgd2lsbCBrZWVwIGNvbm5lY3Rpb25z IGFsaXZlIGlmIHdlIGRvbid0IGFib3J0IG9uIHVubG9hZAoJeGhyT25VbmxvYWRB Ym9ydCA9IHdpbmRvdy5BY3RpdmVYT2JqZWN0ID8gZnVuY3Rpb24oKSB7CgkJLy8g QWJvcnQgYWxsIHBlbmRpbmcgcmVxdWVzdHMKCQlmb3IgKCB2YXIga2V5IGluIHho ckNhbGxiYWNrcyApIHsKCQkJeGhyQ2FsbGJhY2tzWyBrZXkgXSggMCwgMSApOwoJ CX0KCX0gOiBmYWxzZSwKCXhocklkID0gMCwKCXhockNhbGxiYWNrczsKCi8vIEZ1 bmN0aW9ucyB0byBjcmVhdGUgeGhycwpmdW5jdGlvbiBjcmVhdGVTdGFuZGFyZFhI UigpIHsKCXRyeSB7CgkJcmV0dXJuIG5ldyB3aW5kb3cuWE1MSHR0cFJlcXVlc3Qo KTsKCX0gY2F0Y2goIGUgKSB7fQp9CgpmdW5jdGlvbiBjcmVhdGVBY3RpdmVYSFIo KSB7Cgl0cnkgewoJCXJldHVybiBuZXcgd2luZG93LkFjdGl2ZVhPYmplY3QoICJN aWNyb3NvZnQuWE1MSFRUUCIgKTsKCX0gY2F0Y2goIGUgKSB7fQp9CgovLyBDcmVh dGUgdGhlIHJlcXVlc3Qgb2JqZWN0Ci8vIChUaGlzIGlzIHN0aWxsIGF0dGFjaGVk IHRvIGFqYXhTZXR0aW5ncyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkKalF1 ZXJ5LmFqYXhTZXR0aW5ncy54aHIgPSB3aW5kb3cuQWN0aXZlWE9iamVjdCA/Cgkv KiBNaWNyb3NvZnQgZmFpbGVkIHRvIHByb3Blcmx5CgkgKiBpbXBsZW1lbnQgdGhl IFhNTEh0dHBSZXF1ZXN0IGluIElFNyAoY2FuJ3QgcmVxdWVzdCBsb2NhbCBmaWxl cyksCgkgKiBzbyB3ZSB1c2UgdGhlIEFjdGl2ZVhPYmplY3Qgd2hlbiBpdCBpcyBh dmFpbGFibGUKCSAqIEFkZGl0aW9uYWxseSBYTUxIdHRwUmVxdWVzdCBjYW4gYmUg ZGlzYWJsZWQgaW4gSUU3L0lFOCBzbwoJICogd2UgbmVlZCBhIGZhbGxiYWNrLgoJ ICovCglmdW5jdGlvbigpIHsKCQlyZXR1cm4gIXRoaXMuaXNMb2NhbCAmJiBjcmVh dGVTdGFuZGFyZFhIUigpIHx8IGNyZWF0ZUFjdGl2ZVhIUigpOwoJfSA6CgkvLyBG b3IgYWxsIG90aGVyIGJyb3dzZXJzLCB1c2UgdGhlIHN0YW5kYXJkIFhNTEh0dHBS ZXF1ZXN0IG9iamVjdAoJY3JlYXRlU3RhbmRhcmRYSFI7CgovLyBEZXRlcm1pbmUg c3VwcG9ydCBwcm9wZXJ0aWVzCihmdW5jdGlvbiggeGhyICkgewoJalF1ZXJ5LmV4 dGVuZCggalF1ZXJ5LnN1cHBvcnQsIHsKCQlhamF4OiAhIXhociwKCQljb3JzOiAh IXhociAmJiAoICJ3aXRoQ3JlZGVudGlhbHMiIGluIHhociApCgl9KTsKfSkoIGpR dWVyeS5hamF4U2V0dGluZ3MueGhyKCkgKTsKCi8vIENyZWF0ZSB0cmFuc3BvcnQg aWYgdGhlIGJyb3dzZXIgY2FuIHByb3ZpZGUgYW4geGhyCmlmICggalF1ZXJ5LnN1 cHBvcnQuYWpheCApIHsKCglqUXVlcnkuYWpheFRyYW5zcG9ydChmdW5jdGlvbigg cyApIHsKCQkvLyBDcm9zcyBkb21haW4gb25seSBhbGxvd2VkIGlmIHN1cHBvcnRl ZCB0aHJvdWdoIFhNTEh0dHBSZXF1ZXN0CgkJaWYgKCAhcy5jcm9zc0RvbWFpbiB8 fCBqUXVlcnkuc3VwcG9ydC5jb3JzICkgewoKCQkJdmFyIGNhbGxiYWNrOwoKCQkJ cmV0dXJuIHsKCQkJCXNlbmQ6IGZ1bmN0aW9uKCBoZWFkZXJzLCBjb21wbGV0ZSAp IHsKCgkJCQkJLy8gR2V0IGEgbmV3IHhocgoJCQkJCXZhciB4aHIgPSBzLnhocigp LAoJCQkJCQloYW5kbGUsCgkJCQkJCWk7CgoJCQkJCS8vIE9wZW4gdGhlIHNvY2tl dAoJCQkJCS8vIFBhc3NpbmcgbnVsbCB1c2VybmFtZSwgZ2VuZXJhdGVzIGEgbG9n aW4gcG9wdXAgb24gT3BlcmEgKCMyODY1KQoJCQkJCWlmICggcy51c2VybmFtZSAp IHsKCQkJCQkJeGhyLm9wZW4oIHMudHlwZSwgcy51cmwsIHMuYXN5bmMsIHMudXNl cm5hbWUsIHMucGFzc3dvcmQgKTsKCQkJCQl9IGVsc2UgewoJCQkJCQl4aHIub3Bl biggcy50eXBlLCBzLnVybCwgcy5hc3luYyApOwoJCQkJCX0KCgkJCQkJLy8gQXBw bHkgY3VzdG9tIGZpZWxkcyBpZiBwcm92aWRlZAoJCQkJCWlmICggcy54aHJGaWVs ZHMgKSB7CgkJCQkJCWZvciAoIGkgaW4gcy54aHJGaWVsZHMgKSB7CgkJCQkJCQl4 aHJbIGkgXSA9IHMueGhyRmllbGRzWyBpIF07CgkJCQkJCX0KCQkJCQl9CgoJCQkJ CS8vIE92ZXJyaWRlIG1pbWUgdHlwZSBpZiBuZWVkZWQKCQkJCQlpZiAoIHMubWlt ZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7CgkJCQkJCXhoci5vdmVy cmlkZU1pbWVUeXBlKCBzLm1pbWVUeXBlICk7CgkJCQkJfQoKCQkJCQkvLyBYLVJl cXVlc3RlZC1XaXRoIGhlYWRlcgoJCQkJCS8vIEZvciBjcm9zcy1kb21haW4gcmVx dWVzdHMsIHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmUK CQkJCQkvLyBha2luIHRvIGEgamlnc2F3IHB1enpsZSwgd2Ugc2ltcGx5IG5ldmVy IHNldCBpdCB0byBiZSBzdXJlLgoJCQkJCS8vIChpdCBjYW4gYWx3YXlzIGJlIHNl dCBvbiBhIHBlci1yZXF1ZXN0IGJhc2lzIG9yIGV2ZW4gdXNpbmcgYWpheFNldHVw KQoJCQkJCS8vIEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3QgY2hhbmdl IGhlYWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLgoJCQkJCWlmICggIXMuY3Jvc3NE b21haW4gJiYgIWhlYWRlcnNbIlgtUmVxdWVzdGVkLVdpdGgiXSApIHsKCQkJCQkJ aGVhZGVyc1sgIlgtUmVxdWVzdGVkLVdpdGgiIF0gPSAiWE1MSHR0cFJlcXVlc3Qi OwoJCQkJCX0KCgkJCQkJLy8gTmVlZCBhbiBleHRyYSB0cnkvY2F0Y2ggZm9yIGNy b3NzIGRvbWFpbiByZXF1ZXN0cyBpbiBGaXJlZm94IDMKCQkJCQl0cnkgewoJCQkJ CQlmb3IgKCBpIGluIGhlYWRlcnMgKSB7CgkJCQkJCQl4aHIuc2V0UmVxdWVzdEhl YWRlciggaSwgaGVhZGVyc1sgaSBdICk7CgkJCQkJCX0KCQkJCQl9IGNhdGNoKCBf ICkge30KCgkJCQkJLy8gRG8gc2VuZCB0aGUgcmVxdWVzdAoJCQkJCS8vIFRoaXMg bWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGljaCBpcyBhY3R1YWxseQoJCQkJCS8v IGhhbmRsZWQgaW4galF1ZXJ5LmFqYXggKHNvIG5vIHRyeS9jYXRjaCBoZXJlKQoJ CQkJCXhoci5zZW5kKCAoIHMuaGFzQ29udGVudCAmJiBzLmRhdGEgKSB8fCBudWxs ICk7CgoJCQkJCS8vIExpc3RlbmVyCgkJCQkJY2FsbGJhY2sgPSBmdW5jdGlvbigg XywgaXNBYm9ydCApIHsKCgkJCQkJCXZhciBzdGF0dXMsCgkJCQkJCQlzdGF0dXNU ZXh0LAoJCQkJCQkJcmVzcG9uc2VIZWFkZXJzLAoJCQkJCQkJcmVzcG9uc2VzLAoJ CQkJCQkJeG1sOwoKCQkJCQkJLy8gRmlyZWZveCB0aHJvd3MgZXhjZXB0aW9ucyB3 aGVuIGFjY2Vzc2luZyBwcm9wZXJ0aWVzCgkJCQkJCS8vIG9mIGFuIHhociB3aGVu IGEgbmV0d29yayBlcnJvciBvY2N1cmVkCgkJCQkJCS8vIGh0dHA6Ly9oZWxwZnVs Lmtub2JzLWRpYWxzLmNvbS9pbmRleC5waHAvQ29tcG9uZW50X3JldHVybmVkX2Zh aWx1cmVfY29kZTpfMHg4MDA0MDExMV8oTlNfRVJST1JfTk9UX0FWQUlMQUJMRSkK CQkJCQkJdHJ5IHsKCgkJCQkJCQkvLyBXYXMgbmV2ZXIgY2FsbGVkIGFuZCBpcyBh Ym9ydGVkIG9yIGNvbXBsZXRlCgkJCQkJCQlpZiAoIGNhbGxiYWNrICYmICggaXNB Ym9ydCB8fCB4aHIucmVhZHlTdGF0ZSA9PT0gNCApICkgewoKCQkJCQkJCQkvLyBP bmx5IGNhbGxlZCBvbmNlCgkJCQkJCQkJY2FsbGJhY2sgPSB1bmRlZmluZWQ7CgoJ CQkJCQkJCS8vIERvIG5vdCBrZWVwIGFzIGFjdGl2ZSBhbnltb3JlCgkJCQkJCQkJ aWYgKCBoYW5kbGUgKSB7CgkJCQkJCQkJCXhoci5vbnJlYWR5c3RhdGVjaGFuZ2Ug PSBqUXVlcnkubm9vcDsKCQkJCQkJCQkJaWYgKCB4aHJPblVubG9hZEFib3J0ICkg ewoJCQkJCQkJCQkJZGVsZXRlIHhockNhbGxiYWNrc1sgaGFuZGxlIF07CgkJCQkJ CQkJCX0KCQkJCQkJCQl9CgoJCQkJCQkJCS8vIElmIGl0J3MgYW4gYWJvcnQKCQkJ CQkJCQlpZiAoIGlzQWJvcnQgKSB7CgkJCQkJCQkJCS8vIEFib3J0IGl0IG1hbnVh bGx5IGlmIG5lZWRlZAoJCQkJCQkJCQlpZiAoIHhoci5yZWFkeVN0YXRlICE9PSA0 ICkgewoJCQkJCQkJCQkJeGhyLmFib3J0KCk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9 IGVsc2UgewoJCQkJCQkJCQlzdGF0dXMgPSB4aHIuc3RhdHVzOwoJCQkJCQkJCQly ZXNwb25zZUhlYWRlcnMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7CgkJ CQkJCQkJCXJlc3BvbnNlcyA9IHt9OwoJCQkJCQkJCQl4bWwgPSB4aHIucmVzcG9u c2VYTUw7CgoJCQkJCQkJCQkvLyBDb25zdHJ1Y3QgcmVzcG9uc2UgbGlzdAoJCQkJ CQkJCQlpZiAoIHhtbCAmJiB4bWwuZG9jdW1lbnRFbGVtZW50IC8qICM0OTU4ICov ICkgewoJCQkJCQkJCQkJcmVzcG9uc2VzLnhtbCA9IHhtbDsKCQkJCQkJCQkJfQoK CQkJCQkJCQkJLy8gV2hlbiByZXF1ZXN0aW5nIGJpbmFyeSBkYXRhLCBJRTYtOSB3 aWxsIHRocm93IGFuIGV4Y2VwdGlvbgoJCQkJCQkJCQkvLyBvbiBhbnkgYXR0ZW1w dCB0byBhY2Nlc3MgcmVzcG9uc2VUZXh0ICgjMTE0MjYpCgkJCQkJCQkJCXRyeSB7 CgkJCQkJCQkJCQlyZXNwb25zZXMudGV4dCA9IHhoci5yZXNwb25zZVRleHQ7CgkJ CQkJCQkJCX0gY2F0Y2goIF8gKSB7CgkJCQkJCQkJCX0KCgkJCQkJCQkJCS8vIEZp cmVmb3ggdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGFjY2Vzc2luZwoJCQkJCQkJ CQkvLyBzdGF0dXNUZXh0IGZvciBmYXVsdHkgY3Jvc3MtZG9tYWluIHJlcXVlc3Rz CgkJCQkJCQkJCXRyeSB7CgkJCQkJCQkJCQlzdGF0dXNUZXh0ID0geGhyLnN0YXR1 c1RleHQ7CgkJCQkJCQkJCX0gY2F0Y2goIGUgKSB7CgkJCQkJCQkJCQkvLyBXZSBu b3JtYWxpemUgd2l0aCBXZWJraXQgZ2l2aW5nIGFuIGVtcHR5IHN0YXR1c1RleHQK CQkJCQkJCQkJCXN0YXR1c1RleHQgPSAiIjsKCQkJCQkJCQkJfQoKCQkJCQkJCQkJ Ly8gRmlsdGVyIHN0YXR1cyBmb3Igbm9uIHN0YW5kYXJkIGJlaGF2aW9ycwoKCQkJ CQkJCQkJLy8gSWYgdGhlIHJlcXVlc3QgaXMgbG9jYWwgYW5kIHdlIGhhdmUgZGF0 YTogYXNzdW1lIGEgc3VjY2VzcwoJCQkJCQkJCQkvLyAoc3VjY2VzcyB3aXRoIG5v IGRhdGEgd29uJ3QgZ2V0IG5vdGlmaWVkLCB0aGF0J3MgdGhlIGJlc3Qgd2UKCQkJ CQkJCQkJLy8gY2FuIGRvIGdpdmVuIGN1cnJlbnQgaW1wbGVtZW50YXRpb25zKQoJ CQkJCQkJCQlpZiAoICFzdGF0dXMgJiYgcy5pc0xvY2FsICYmICFzLmNyb3NzRG9t YWluICkgewoJCQkJCQkJCQkJc3RhdHVzID0gcmVzcG9uc2VzLnRleHQgPyAyMDAg OiA0MDQ7CgkJCQkJCQkJCS8vIElFIC0gIzE0NTA6IHNvbWV0aW1lcyByZXR1cm5z IDEyMjMgd2hlbiBpdCBzaG91bGQgYmUgMjA0CgkJCQkJCQkJCX0gZWxzZSBpZiAo IHN0YXR1cyA9PT0gMTIyMyApIHsKCQkJCQkJCQkJCXN0YXR1cyA9IDIwNDsKCQkJ CQkJCQkJfQoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJfSBjYXRjaCggZmlyZWZv eEFjY2Vzc0V4Y2VwdGlvbiApIHsKCQkJCQkJCWlmICggIWlzQWJvcnQgKSB7CgkJ CQkJCQkJY29tcGxldGUoIC0xLCBmaXJlZm94QWNjZXNzRXhjZXB0aW9uICk7CgkJ CQkJCQl9CgkJCQkJCX0KCgkJCQkJCS8vIENhbGwgY29tcGxldGUgaWYgbmVlZGVk CgkJCQkJCWlmICggcmVzcG9uc2VzICkgewoJCQkJCQkJY29tcGxldGUoIHN0YXR1 cywgc3RhdHVzVGV4dCwgcmVzcG9uc2VzLCByZXNwb25zZUhlYWRlcnMgKTsKCQkJ CQkJfQoJCQkJCX07CgoJCQkJCS8vIGlmIHdlJ3JlIGluIHN5bmMgbW9kZSBvciBp dCdzIGluIGNhY2hlCgkJCQkJLy8gYW5kIGhhcyBiZWVuIHJldHJpZXZlZCBkaXJl Y3RseSAoSUU2ICYgSUU3KQoJCQkJCS8vIHdlIG5lZWQgdG8gbWFudWFsbHkgZmly ZSB0aGUgY2FsbGJhY2sKCQkJCQlpZiAoICFzLmFzeW5jIHx8IHhoci5yZWFkeVN0 YXRlID09PSA0ICkgewoJCQkJCQljYWxsYmFjaygpOwoJCQkJCX0gZWxzZSB7CgkJ CQkJCWhhbmRsZSA9ICsreGhySWQ7CgkJCQkJCWlmICggeGhyT25VbmxvYWRBYm9y dCApIHsKCQkJCQkJCS8vIENyZWF0ZSB0aGUgYWN0aXZlIHhocnMgY2FsbGJhY2tz IGxpc3QgaWYgbmVlZGVkCgkJCQkJCQkvLyBhbmQgYXR0YWNoIHRoZSB1bmxvYWQg aGFuZGxlcgoJCQkJCQkJaWYgKCAheGhyQ2FsbGJhY2tzICkgewoJCQkJCQkJCXho ckNhbGxiYWNrcyA9IHt9OwoJCQkJCQkJCWpRdWVyeSggd2luZG93ICkudW5sb2Fk KCB4aHJPblVubG9hZEFib3J0ICk7CgkJCQkJCQl9CgkJCQkJCQkvLyBBZGQgdG8g bGlzdCBvZiBhY3RpdmUgeGhycyBjYWxsYmFja3MKCQkJCQkJCXhockNhbGxiYWNr c1sgaGFuZGxlIF0gPSBjYWxsYmFjazsKCQkJCQkJfQoJCQkJCQl4aHIub25yZWFk eXN0YXRlY2hhbmdlID0gY2FsbGJhY2s7CgkJCQkJfQoJCQkJfSwKCgkJCQlhYm9y dDogZnVuY3Rpb24oKSB7CgkJCQkJaWYgKCBjYWxsYmFjayApIHsKCQkJCQkJY2Fs bGJhY2soMCwxKTsKCQkJCQl9CgkJCQl9CgkJCX07CgkJfQoJfSk7Cn0KCgoKCnZh ciBlbGVtZGlzcGxheSA9IHt9LAoJaWZyYW1lLCBpZnJhbWVEb2MsCglyZnh0eXBl cyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLywKCXJmeG51bSA9IC9eKFsrXC1d PSk/KFtcZCsuXC1dKykoW2EteiVdKikkL2ksCgl0aW1lcklkLAoJZnhBdHRycyA9 IFsKCQkvLyBoZWlnaHQgYW5pbWF0aW9ucwoJCVsgImhlaWdodCIsICJtYXJnaW5U b3AiLCAibWFyZ2luQm90dG9tIiwgInBhZGRpbmdUb3AiLCAicGFkZGluZ0JvdHRv bSIgXSwKCQkvLyB3aWR0aCBhbmltYXRpb25zCgkJWyAid2lkdGgiLCAibWFyZ2lu TGVmdCIsICJtYXJnaW5SaWdodCIsICJwYWRkaW5nTGVmdCIsICJwYWRkaW5nUmln aHQiIF0sCgkJLy8gb3BhY2l0eSBhbmltYXRpb25zCgkJWyAib3BhY2l0eSIgXQoJ XSwKCWZ4Tm93OwoKalF1ZXJ5LmZuLmV4dGVuZCh7CglzaG93OiBmdW5jdGlvbigg c3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7CgkJdmFyIGVsZW0sIGRpc3BsYXk7 CgoJCWlmICggc3BlZWQgfHwgc3BlZWQgPT09IDAgKSB7CgkJCXJldHVybiB0aGlz LmFuaW1hdGUoIGdlbkZ4KCJzaG93IiwgMyksIHNwZWVkLCBlYXNpbmcsIGNhbGxi YWNrICk7CgoJCX0gZWxzZSB7CgkJCWZvciAoIHZhciBpID0gMCwgaiA9IHRoaXMu bGVuZ3RoOyBpIDwgajsgaSsrICkgewoJCQkJZWxlbSA9IHRoaXNbIGkgXTsKCgkJ CQlpZiAoIGVsZW0uc3R5bGUgKSB7CgkJCQkJZGlzcGxheSA9IGVsZW0uc3R5bGUu ZGlzcGxheTsKCgkJCQkJLy8gUmVzZXQgdGhlIGlubGluZSBkaXNwbGF5IG9mIHRo aXMgZWxlbWVudCB0byBsZWFybiBpZiBpdCBpcwoJCQkJCS8vIGJlaW5nIGhpZGRl biBieSBjYXNjYWRlZCBydWxlcyBvciBub3QKCQkJCQlpZiAoICFqUXVlcnkuX2Rh dGEoZWxlbSwgIm9sZGRpc3BsYXkiKSAmJiBkaXNwbGF5ID09PSAibm9uZSIgKSB7 CgkJCQkJCWRpc3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXkgPSAiIjsKCQkJCQl9 CgoJCQkJCS8vIFNldCBlbGVtZW50cyB3aGljaCBoYXZlIGJlZW4gb3ZlcnJpZGRl biB3aXRoIGRpc3BsYXk6IG5vbmUKCQkJCQkvLyBpbiBhIHN0eWxlc2hlZXQgdG8g d2hhdGV2ZXIgdGhlIGRlZmF1bHQgYnJvd3NlciBzdHlsZSBpcwoJCQkJCS8vIGZv ciBzdWNoIGFuIGVsZW1lbnQKCQkJCQlpZiAoIChkaXNwbGF5ID09PSAiIiAmJiBq UXVlcnkuY3NzKGVsZW0sICJkaXNwbGF5IikgPT09ICJub25lIikgfHwKCQkJCQkJ IWpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxl bWVudCwgZWxlbSApICkgewoJCQkJCQlqUXVlcnkuX2RhdGEoIGVsZW0sICJvbGRk aXNwbGF5IiwgZGVmYXVsdERpc3BsYXkoZWxlbS5ub2RlTmFtZSkgKTsKCQkJCQl9 CgkJCQl9CgkJCX0KCgkJCS8vIFNldCB0aGUgZGlzcGxheSBvZiBtb3N0IG9mIHRo ZSBlbGVtZW50cyBpbiBhIHNlY29uZCBsb29wCgkJCS8vIHRvIGF2b2lkIHRoZSBj b25zdGFudCByZWZsb3cKCQkJZm9yICggaSA9IDA7IGkgPCBqOyBpKysgKSB7CgkJ CQllbGVtID0gdGhpc1sgaSBdOwoKCQkJCWlmICggZWxlbS5zdHlsZSApIHsKCQkJ CQlkaXNwbGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5OwoKCQkJCQlpZiAoIGRpc3Bs YXkgPT09ICIiIHx8IGRpc3BsYXkgPT09ICJub25lIiApIHsKCQkJCQkJZWxlbS5z dHlsZS5kaXNwbGF5ID0galF1ZXJ5Ll9kYXRhKCBlbGVtLCAib2xkZGlzcGxheSIg KSB8fCAiIjsKCQkJCQl9CgkJCQl9CgkJCX0KCgkJCXJldHVybiB0aGlzOwoJCX0K CX0sCgoJaGlkZTogZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkg ewoJCWlmICggc3BlZWQgfHwgc3BlZWQgPT09IDAgKSB7CgkJCXJldHVybiB0aGlz LmFuaW1hdGUoIGdlbkZ4KCJoaWRlIiwgMyksIHNwZWVkLCBlYXNpbmcsIGNhbGxi YWNrKTsKCgkJfSBlbHNlIHsKCQkJdmFyIGVsZW0sIGRpc3BsYXksCgkJCQlpID0g MCwKCQkJCWogPSB0aGlzLmxlbmd0aDsKCgkJCWZvciAoIDsgaSA8IGo7IGkrKyAp IHsKCQkJCWVsZW0gPSB0aGlzW2ldOwoJCQkJaWYgKCBlbGVtLnN0eWxlICkgewoJ CQkJCWRpc3BsYXkgPSBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKTsKCgkJ CQkJaWYgKCBkaXNwbGF5ICE9PSAibm9uZSIgJiYgIWpRdWVyeS5fZGF0YSggZWxl bSwgIm9sZGRpc3BsYXkiICkgKSB7CgkJCQkJCWpRdWVyeS5fZGF0YSggZWxlbSwg Im9sZGRpc3BsYXkiLCBkaXNwbGF5ICk7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQkv LyBTZXQgdGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxv b3AKCQkJLy8gdG8gYXZvaWQgdGhlIGNvbnN0YW50IHJlZmxvdwoJCQlmb3IgKCBp ID0gMDsgaSA8IGo7IGkrKyApIHsKCQkJCWlmICggdGhpc1tpXS5zdHlsZSApIHsK CQkJCQl0aGlzW2ldLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CgkJCQl9CgkJCX0K CgkJCXJldHVybiB0aGlzOwoJCX0KCX0sCgoJLy8gU2F2ZSB0aGUgb2xkIHRvZ2ds ZSBmdW5jdGlvbgoJX3RvZ2dsZTogalF1ZXJ5LmZuLnRvZ2dsZSwKCgl0b2dnbGU6 IGZ1bmN0aW9uKCBmbiwgZm4yLCBjYWxsYmFjayApIHsKCQl2YXIgYm9vbCA9IHR5 cGVvZiBmbiA9PT0gImJvb2xlYW4iOwoKCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9u KGZuKSAmJiBqUXVlcnkuaXNGdW5jdGlvbihmbjIpICkgewoJCQl0aGlzLl90b2dn bGUuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwoKCQl9IGVsc2UgaWYgKCBmbiA9 PSBudWxsIHx8IGJvb2wgKSB7CgkJCXRoaXMuZWFjaChmdW5jdGlvbigpIHsKCQkJ CXZhciBzdGF0ZSA9IGJvb2wgPyBmbiA6IGpRdWVyeSh0aGlzKS5pcygiOmhpZGRl biIpOwoJCQkJalF1ZXJ5KHRoaXMpWyBzdGF0ZSA/ICJzaG93IiA6ICJoaWRlIiBd KCk7CgkJCX0pOwoKCQl9IGVsc2UgewoJCQl0aGlzLmFuaW1hdGUoZ2VuRngoInRv Z2dsZSIsIDMpLCBmbiwgZm4yLCBjYWxsYmFjayk7CgkJfQoKCQlyZXR1cm4gdGhp czsKCX0sCgoJZmFkZVRvOiBmdW5jdGlvbiggc3BlZWQsIHRvLCBlYXNpbmcsIGNh bGxiYWNrICkgewoJCXJldHVybiB0aGlzLmZpbHRlcigiOmhpZGRlbiIpLmNzcygi b3BhY2l0eSIsIDApLnNob3coKS5lbmQoKQoJCQkJCS5hbmltYXRlKHtvcGFjaXR5 OiB0b30sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrKTsKCX0sCgoJYW5pbWF0ZTog ZnVuY3Rpb24oIHByb3AsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgewoJCXZh ciBvcHRhbGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNr ICk7CgoJCWlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3AgKSApIHsKCQkJ cmV0dXJuIHRoaXMuZWFjaCggb3B0YWxsLmNvbXBsZXRlLCBbIGZhbHNlIF0gKTsK CQl9CgoJCS8vIERvIG5vdCBjaGFuZ2UgcmVmZXJlbmNlZCBwcm9wZXJ0aWVzIGFz IHBlci1wcm9wZXJ0eSBlYXNpbmcgd2lsbCBiZSBsb3N0CgkJcHJvcCA9IGpRdWVy eS5leHRlbmQoIHt9LCBwcm9wICk7CgoJCWZ1bmN0aW9uIGRvQW5pbWF0aW9uKCkg ewoJCQkvLyBYWFggJ3RoaXMnIGRvZXMgbm90IGFsd2F5cyBoYXZlIGEgbm9kZU5h bWUgd2hlbiBydW5uaW5nIHRoZQoJCQkvLyB0ZXN0IHN1aXRlCgoJCQlpZiAoIG9w dGFsbC5xdWV1ZSA9PT0gZmFsc2UgKSB7CgkJCQlqUXVlcnkuX21hcmsoIHRoaXMg KTsKCQkJfQoKCQkJdmFyIG9wdCA9IGpRdWVyeS5leHRlbmQoIHt9LCBvcHRhbGwg KSwKCQkJCWlzRWxlbWVudCA9IHRoaXMubm9kZVR5cGUgPT09IDEsCgkJCQloaWRk ZW4gPSBpc0VsZW1lbnQgJiYgalF1ZXJ5KHRoaXMpLmlzKCI6aGlkZGVuIiksCgkJ CQluYW1lLCB2YWwsIHAsIGUsIGhvb2tzLCByZXBsYWNlLAoJCQkJcGFydHMsIHN0 YXJ0LCBlbmQsIHVuaXQsCgkJCQltZXRob2Q7CgoJCQkvLyB3aWxsIHN0b3JlIHBl ciBwcm9wZXJ0eSBlYXNpbmcgYW5kIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZW4g YW4gYW5pbWF0aW9uIGlzIGNvbXBsZXRlCgkJCW9wdC5hbmltYXRlZFByb3BlcnRp ZXMgPSB7fTsKCgkJCS8vIGZpcnN0IHBhc3Mgb3ZlciBwcm9wZXJ0eXMgdG8gZXhw YW5kIC8gbm9ybWFsaXplCgkJCWZvciAoIHAgaW4gcHJvcCApIHsKCQkJCW5hbWUg PSBqUXVlcnkuY2FtZWxDYXNlKCBwICk7CgkJCQlpZiAoIHAgIT09IG5hbWUgKSB7 CgkJCQkJcHJvcFsgbmFtZSBdID0gcHJvcFsgcCBdOwoJCQkJCWRlbGV0ZSBwcm9w WyBwIF07CgkJCQl9CgoJCQkJaWYgKCAoIGhvb2tzID0galF1ZXJ5LmNzc0hvb2tz WyBuYW1lIF0gKSAmJiAiZXhwYW5kIiBpbiBob29rcyApIHsKCQkJCQlyZXBsYWNl ID0gaG9va3MuZXhwYW5kKCBwcm9wWyBuYW1lIF0gKTsKCQkJCQlkZWxldGUgcHJv cFsgbmFtZSBdOwoKCQkJCQkvLyBub3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29u dCBvdmVyd3JpdGUga2V5cyBhbHJlYWR5IHByZXNlbnQuCgkJCQkJLy8gYWxzbyAt IHJldXNpbmcgJ3AnIGZyb20gYWJvdmUgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3Jy ZWN0ICJuYW1lIgoJCQkJCWZvciAoIHAgaW4gcmVwbGFjZSApIHsKCQkJCQkJaWYg KCAhICggcCBpbiBwcm9wICkgKSB7CgkJCQkJCQlwcm9wWyBwIF0gPSByZXBsYWNl WyBwIF07CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCgkJCWZvciAoIG5hbWUg aW4gcHJvcCApIHsKCQkJCXZhbCA9IHByb3BbIG5hbWUgXTsKCQkJCS8vIGVhc2lu ZyByZXNvbHV0aW9uOiBwZXIgcHJvcGVydHkgPiBvcHQuc3BlY2lhbEVhc2luZyA+ IG9wdC5lYXNpbmcgPiAnc3dpbmcnIChkZWZhdWx0KQoJCQkJaWYgKCBqUXVlcnku aXNBcnJheSggdmFsICkgKSB7CgkJCQkJb3B0LmFuaW1hdGVkUHJvcGVydGllc1sg bmFtZSBdID0gdmFsWyAxIF07CgkJCQkJdmFsID0gcHJvcFsgbmFtZSBdID0gdmFs WyAwIF07CgkJCQl9IGVsc2UgewoJCQkJCW9wdC5hbmltYXRlZFByb3BlcnRpZXNb IG5hbWUgXSA9IG9wdC5zcGVjaWFsRWFzaW5nICYmIG9wdC5zcGVjaWFsRWFzaW5n WyBuYW1lIF0gfHwgb3B0LmVhc2luZyB8fCAnc3dpbmcnOwoJCQkJfQoKCQkJCWlm ICggdmFsID09PSAiaGlkZSIgJiYgaGlkZGVuIHx8IHZhbCA9PT0gInNob3ciICYm ICFoaWRkZW4gKSB7CgkJCQkJcmV0dXJuIG9wdC5jb21wbGV0ZS5jYWxsKCB0aGlz ICk7CgkJCQl9CgoJCQkJaWYgKCBpc0VsZW1lbnQgJiYgKCBuYW1lID09PSAiaGVp Z2h0IiB8fCBuYW1lID09PSAid2lkdGgiICkgKSB7CgkJCQkJLy8gTWFrZSBzdXJl IHRoYXQgbm90aGluZyBzbmVha3Mgb3V0CgkJCQkJLy8gUmVjb3JkIGFsbCAzIG92 ZXJmbG93IGF0dHJpYnV0ZXMgYmVjYXVzZSBJRSBkb2VzIG5vdAoJCQkJCS8vIGNo YW5nZSB0aGUgb3ZlcmZsb3cgYXR0cmlidXRlIHdoZW4gb3ZlcmZsb3dYIGFuZAoJ CQkJCS8vIG92ZXJmbG93WSBhcmUgc2V0IHRvIHRoZSBzYW1lIHZhbHVlCgkJCQkJ b3B0Lm92ZXJmbG93ID0gWyB0aGlzLnN0eWxlLm92ZXJmbG93LCB0aGlzLnN0eWxl Lm92ZXJmbG93WCwgdGhpcy5zdHlsZS5vdmVyZmxvd1kgXTsKCgkJCQkJLy8gU2V0 IGRpc3BsYXkgcHJvcGVydHkgdG8gaW5saW5lLWJsb2NrIGZvciBoZWlnaHQvd2lk dGgKCQkJCQkvLyBhbmltYXRpb25zIG9uIGlubGluZSBlbGVtZW50cyB0aGF0IGFy ZSBoYXZpbmcgd2lkdGgvaGVpZ2h0IGFuaW1hdGVkCgkJCQkJaWYgKCBqUXVlcnku Y3NzKCB0aGlzLCAiZGlzcGxheSIgKSA9PT0gImlubGluZSIgJiYKCQkJCQkJCWpR dWVyeS5jc3MoIHRoaXMsICJmbG9hdCIgKSA9PT0gIm5vbmUiICkgewoKCQkJCQkJ Ly8gaW5saW5lLWxldmVsIGVsZW1lbnRzIGFjY2VwdCBpbmxpbmUtYmxvY2s7CgkJ CQkJCS8vIGJsb2NrLWxldmVsIGVsZW1lbnRzIG5lZWQgdG8gYmUgaW5saW5lIHdp dGggbGF5b3V0CgkJCQkJCWlmICggIWpRdWVyeS5zdXBwb3J0LmlubGluZUJsb2Nr TmVlZHNMYXlvdXQgfHwgZGVmYXVsdERpc3BsYXkoIHRoaXMubm9kZU5hbWUgKSA9 PT0gImlubGluZSIgKSB7CgkJCQkJCQl0aGlzLnN0eWxlLmRpc3BsYXkgPSAiaW5s aW5lLWJsb2NrIjsKCgkJCQkJCX0gZWxzZSB7CgkJCQkJCQl0aGlzLnN0eWxlLnpv b20gPSAxOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQlpZiAoIG9wdC5v dmVyZmxvdyAhPSBudWxsICkgewoJCQkJdGhpcy5zdHlsZS5vdmVyZmxvdyA9ICJo aWRkZW4iOwoJCQl9CgoJCQlmb3IgKCBwIGluIHByb3AgKSB7CgkJCQllID0gbmV3 IGpRdWVyeS5meCggdGhpcywgb3B0LCBwICk7CgkJCQl2YWwgPSBwcm9wWyBwIF07 CgoJCQkJaWYgKCByZnh0eXBlcy50ZXN0KCB2YWwgKSApIHsKCgkJCQkJLy8gVHJh Y2tzIHdoZXRoZXIgdG8gc2hvdyBvciBoaWRlIGJhc2VkIG9uIHByaXZhdGUKCQkJ CQkvLyBkYXRhIGF0dGFjaGVkIHRvIHRoZSBlbGVtZW50CgkJCQkJbWV0aG9kID0g alF1ZXJ5Ll9kYXRhKCB0aGlzLCAidG9nZ2xlIiArIHAgKSB8fCAoIHZhbCA9PT0g InRvZ2dsZSIgPyBoaWRkZW4gPyAic2hvdyIgOiAiaGlkZSIgOiAwICk7CgkJCQkJ aWYgKCBtZXRob2QgKSB7CgkJCQkJCWpRdWVyeS5fZGF0YSggdGhpcywgInRvZ2ds ZSIgKyBwLCBtZXRob2QgPT09ICJzaG93IiA/ICJoaWRlIiA6ICJzaG93IiApOwoJ CQkJCQllWyBtZXRob2QgXSgpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCWVbIHZhbCBd KCk7CgkJCQkJfQoKCQkJCX0gZWxzZSB7CgkJCQkJcGFydHMgPSByZnhudW0uZXhl YyggdmFsICk7CgkJCQkJc3RhcnQgPSBlLmN1cigpOwoKCQkJCQlpZiAoIHBhcnRz ICkgewoJCQkJCQllbmQgPSBwYXJzZUZsb2F0KCBwYXJ0c1syXSApOwoJCQkJCQl1 bml0ID0gcGFydHNbM10gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwIF0gPyAiIiA6 ICJweCIgKTsKCgkJCQkJCS8vIFdlIG5lZWQgdG8gY29tcHV0ZSBzdGFydGluZyB2 YWx1ZQoJCQkJCQlpZiAoIHVuaXQgIT09ICJweCIgKSB7CgkJCQkJCQlqUXVlcnku c3R5bGUoIHRoaXMsIHAsIChlbmQgfHwgMSkgKyB1bml0KTsKCQkJCQkJCXN0YXJ0 ID0gKCAoZW5kIHx8IDEpIC8gZS5jdXIoKSApICogc3RhcnQ7CgkJCQkJCQlqUXVl cnkuc3R5bGUoIHRoaXMsIHAsIHN0YXJ0ICsgdW5pdCk7CgkJCQkJCX0KCgkJCQkJ CS8vIElmIGEgKz0vLT0gdG9rZW4gd2FzIHByb3ZpZGVkLCB3ZSdyZSBkb2luZyBh IHJlbGF0aXZlIGFuaW1hdGlvbgoJCQkJCQlpZiAoIHBhcnRzWzFdICkgewoJCQkJ CQkJZW5kID0gKCAocGFydHNbIDEgXSA9PT0gIi09IiA/IC0xIDogMSkgKiBlbmQg KSArIHN0YXJ0OwoJCQkJCQl9CgoJCQkJCQllLmN1c3RvbSggc3RhcnQsIGVuZCwg dW5pdCApOwoKCQkJCQl9IGVsc2UgewoJCQkJCQllLmN1c3RvbSggc3RhcnQsIHZh bCwgIiIgKTsKCQkJCQl9CgkJCQl9CgkJCX0KCgkJCS8vIEZvciBKUyBzdHJpY3Qg Y29tcGxpYW5jZQoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCXJldHVybiBvcHRhbGwu cXVldWUgPT09IGZhbHNlID8KCQkJdGhpcy5lYWNoKCBkb0FuaW1hdGlvbiApIDoK CQkJdGhpcy5xdWV1ZSggb3B0YWxsLnF1ZXVlLCBkb0FuaW1hdGlvbiApOwoJfSwK CglzdG9wOiBmdW5jdGlvbiggdHlwZSwgY2xlYXJRdWV1ZSwgZ290b0VuZCApIHsK CQlpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKCQkJZ290b0VuZCA9 IGNsZWFyUXVldWU7CgkJCWNsZWFyUXVldWUgPSB0eXBlOwoJCQl0eXBlID0gdW5k ZWZpbmVkOwoJCX0KCQlpZiAoIGNsZWFyUXVldWUgJiYgdHlwZSAhPT0gZmFsc2Ug KSB7CgkJCXRoaXMucXVldWUoIHR5cGUgfHwgImZ4IiwgW10gKTsKCQl9CgoJCXJl dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCXZhciBpbmRleCwKCQkJCWhh ZFRpbWVycyA9IGZhbHNlLAoJCQkJdGltZXJzID0galF1ZXJ5LnRpbWVycywKCQkJ CWRhdGEgPSBqUXVlcnkuX2RhdGEoIHRoaXMgKTsKCgkJCS8vIGNsZWFyIG1hcmtl ciBjb3VudGVycyBpZiB3ZSBrbm93IHRoZXkgd29uJ3QgYmUKCQkJaWYgKCAhZ290 b0VuZCApIHsKCQkJCWpRdWVyeS5fdW5tYXJrKCB0cnVlLCB0aGlzICk7CgkJCX0K CgkJCWZ1bmN0aW9uIHN0b3BRdWV1ZSggZWxlbSwgZGF0YSwgaW5kZXggKSB7CgkJ CQl2YXIgaG9va3MgPSBkYXRhWyBpbmRleCBdOwoJCQkJalF1ZXJ5LnJlbW92ZURh dGEoIGVsZW0sIGluZGV4LCB0cnVlICk7CgkJCQlob29rcy5zdG9wKCBnb3RvRW5k ICk7CgkJCX0KCgkJCWlmICggdHlwZSA9PSBudWxsICkgewoJCQkJZm9yICggaW5k ZXggaW4gZGF0YSApIHsKCQkJCQlpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsg aW5kZXggXS5zdG9wICYmIGluZGV4LmluZGV4T2YoIi5ydW4iKSA9PT0gaW5kZXgu bGVuZ3RoIC0gNCApIHsKCQkJCQkJc3RvcFF1ZXVlKCB0aGlzLCBkYXRhLCBpbmRl eCApOwoJCQkJCX0KCQkJCX0KCQkJfSBlbHNlIGlmICggZGF0YVsgaW5kZXggPSB0 eXBlICsgIi5ydW4iIF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICl7CgkJCQlzdG9w UXVldWUoIHRoaXMsIGRhdGEsIGluZGV4ICk7CgkJCX0KCgkJCWZvciAoIGluZGV4 ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7CgkJCQlpZiAoIHRpbWVyc1sg aW5kZXggXS5lbGVtID09PSB0aGlzICYmICh0eXBlID09IG51bGwgfHwgdGltZXJz WyBpbmRleCBdLnF1ZXVlID09PSB0eXBlKSApIHsKCQkJCQlpZiAoIGdvdG9FbmQg KSB7CgoJCQkJCQkvLyBmb3JjZSB0aGUgbmV4dCBzdGVwIHRvIGJlIHRoZSBsYXN0 CgkJCQkJCXRpbWVyc1sgaW5kZXggXSggdHJ1ZSApOwoJCQkJCX0gZWxzZSB7CgkJ CQkJCXRpbWVyc1sgaW5kZXggXS5zYXZlU3RhdGUoKTsKCQkJCQl9CgkJCQkJaGFk VGltZXJzID0gdHJ1ZTsKCQkJCQl0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApOwoJ CQkJfQoJCQl9CgoJCQkvLyBzdGFydCB0aGUgbmV4dCBpbiB0aGUgcXVldWUgaWYg dGhlIGxhc3Qgc3RlcCB3YXNuJ3QgZm9yY2VkCgkJCS8vIHRpbWVycyBjdXJyZW50 bHkgd2lsbCBjYWxsIHRoZWlyIGNvbXBsZXRlIGNhbGxiYWNrcywgd2hpY2ggd2ls bCBkZXF1ZXVlCgkJCS8vIGJ1dCBvbmx5IGlmIHRoZXkgd2VyZSBnb3RvRW5kCgkJ CWlmICggISggZ290b0VuZCAmJiBoYWRUaW1lcnMgKSApIHsKCQkJCWpRdWVyeS5k ZXF1ZXVlKCB0aGlzLCB0eXBlICk7CgkJCX0KCQl9KTsKCX0KCn0pOwoKLy8gQW5p bWF0aW9ucyBjcmVhdGVkIHN5bmNocm9ub3VzbHkgd2lsbCBydW4gc3luY2hyb25v dXNseQpmdW5jdGlvbiBjcmVhdGVGeE5vdygpIHsKCXNldFRpbWVvdXQoIGNsZWFy RnhOb3csIDAgKTsKCXJldHVybiAoIGZ4Tm93ID0galF1ZXJ5Lm5vdygpICk7Cn0K CmZ1bmN0aW9uIGNsZWFyRnhOb3coKSB7CglmeE5vdyA9IHVuZGVmaW5lZDsKfQoK Ly8gR2VuZXJhdGUgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBzdGFuZGFyZCBhbmlt YXRpb24KZnVuY3Rpb24gZ2VuRngoIHR5cGUsIG51bSApIHsKCXZhciBvYmogPSB7 fTsKCglqUXVlcnkuZWFjaCggZnhBdHRycy5jb25jYXQuYXBwbHkoW10sIGZ4QXR0 cnMuc2xpY2UoIDAsIG51bSApKSwgZnVuY3Rpb24oKSB7CgkJb2JqWyB0aGlzIF0g PSB0eXBlOwoJfSk7CgoJcmV0dXJuIG9iajsKfQoKLy8gR2VuZXJhdGUgc2hvcnRj dXRzIGZvciBjdXN0b20gYW5pbWF0aW9ucwpqUXVlcnkuZWFjaCh7CglzbGlkZURv d246IGdlbkZ4KCAic2hvdyIsIDEgKSwKCXNsaWRlVXA6IGdlbkZ4KCAiaGlkZSIs IDEgKSwKCXNsaWRlVG9nZ2xlOiBnZW5GeCggInRvZ2dsZSIsIDEgKSwKCWZhZGVJ bjogeyBvcGFjaXR5OiAic2hvdyIgfSwKCWZhZGVPdXQ6IHsgb3BhY2l0eTogImhp ZGUiIH0sCglmYWRlVG9nZ2xlOiB7IG9wYWNpdHk6ICJ0b2dnbGUiIH0KfSwgZnVu Y3Rpb24oIG5hbWUsIHByb3BzICkgewoJalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5j dGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7CgkJcmV0dXJuIHRoaXMu YW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7Cgl9Owp9 KTsKCmpRdWVyeS5leHRlbmQoewoJc3BlZWQ6IGZ1bmN0aW9uKCBzcGVlZCwgZWFz aW5nLCBmbiApIHsKCQl2YXIgb3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVkID09 PSAib2JqZWN0IiA/IGpRdWVyeS5leHRlbmQoIHt9LCBzcGVlZCApIDogewoJCQlj b21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fAoJCQkJalF1ZXJ5LmlzRnVu Y3Rpb24oIHNwZWVkICkgJiYgc3BlZWQsCgkJCWR1cmF0aW9uOiBzcGVlZCwKCQkJ ZWFzaW5nOiBmbiAmJiBlYXNpbmcgfHwgZWFzaW5nICYmICFqUXVlcnkuaXNGdW5j dGlvbiggZWFzaW5nICkgJiYgZWFzaW5nCgkJfTsKCgkJb3B0LmR1cmF0aW9uID0g alF1ZXJ5LmZ4Lm9mZiA/IDAgOiB0eXBlb2Ygb3B0LmR1cmF0aW9uID09PSAibnVt YmVyIiA/IG9wdC5kdXJhdGlvbiA6CgkJCW9wdC5kdXJhdGlvbiBpbiBqUXVlcnku Znguc3BlZWRzID8galF1ZXJ5LmZ4LnNwZWVkc1sgb3B0LmR1cmF0aW9uIF0gOiBq UXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0OwoKCQkvLyBub3JtYWxpemUgb3B0LnF1 ZXVlIC0gdHJ1ZS91bmRlZmluZWQvbnVsbCAtPiAiZngiCgkJaWYgKCBvcHQucXVl dWUgPT0gbnVsbCB8fCBvcHQucXVldWUgPT09IHRydWUgKSB7CgkJCW9wdC5xdWV1 ZSA9ICJmeCI7CgkJfQoKCQkvLyBRdWV1ZWluZwoJCW9wdC5vbGQgPSBvcHQuY29t cGxldGU7CgoJCW9wdC5jb21wbGV0ZSA9IGZ1bmN0aW9uKCBub1VubWFyayApIHsK CQkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0Lm9sZCApICkgewoJCQkJb3B0 Lm9sZC5jYWxsKCB0aGlzICk7CgkJCX0KCgkJCWlmICggb3B0LnF1ZXVlICkgewoJ CQkJalF1ZXJ5LmRlcXVldWUoIHRoaXMsIG9wdC5xdWV1ZSApOwoJCQl9IGVsc2Ug aWYgKCBub1VubWFyayAhPT0gZmFsc2UgKSB7CgkJCQlqUXVlcnkuX3VubWFyaygg dGhpcyApOwoJCQl9CgkJfTsKCgkJcmV0dXJuIG9wdDsKCX0sCgoJZWFzaW5nOiB7 CgkJbGluZWFyOiBmdW5jdGlvbiggcCApIHsKCQkJcmV0dXJuIHA7CgkJfSwKCQlz d2luZzogZnVuY3Rpb24oIHAgKSB7CgkJCXJldHVybiAoIC1NYXRoLmNvcyggcCpN YXRoLlBJICkgLyAyICkgKyAwLjU7CgkJfQoJfSwKCgl0aW1lcnM6IFtdLAoKCWZ4 OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgcHJvcCApIHsKCQl0aGlzLm9wdGlv bnMgPSBvcHRpb25zOwoJCXRoaXMuZWxlbSA9IGVsZW07CgkJdGhpcy5wcm9wID0g cHJvcDsKCgkJb3B0aW9ucy5vcmlnID0gb3B0aW9ucy5vcmlnIHx8IHt9OwoJfQoK fSk7CgpqUXVlcnkuZngucHJvdG90eXBlID0gewoJLy8gU2ltcGxlIGZ1bmN0aW9u IGZvciBzZXR0aW5nIGEgc3R5bGUgdmFsdWUKCXVwZGF0ZTogZnVuY3Rpb24oKSB7 CgkJaWYgKCB0aGlzLm9wdGlvbnMuc3RlcCApIHsKCQkJdGhpcy5vcHRpb25zLnN0 ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApOwoJCX0KCgkJKCBq UXVlcnkuZnguc3RlcFsgdGhpcy5wcm9wIF0gfHwgalF1ZXJ5LmZ4LnN0ZXAuX2Rl ZmF1bHQgKSggdGhpcyApOwoJfSwKCgkvLyBHZXQgdGhlIGN1cnJlbnQgc2l6ZQoJ Y3VyOiBmdW5jdGlvbigpIHsKCQlpZiAoIHRoaXMuZWxlbVsgdGhpcy5wcm9wIF0g IT0gbnVsbCAmJiAoIXRoaXMuZWxlbS5zdHlsZSB8fCB0aGlzLmVsZW0uc3R5bGVb IHRoaXMucHJvcCBdID09IG51bGwpICkgewoJCQlyZXR1cm4gdGhpcy5lbGVtWyB0 aGlzLnByb3AgXTsKCQl9CgoJCXZhciBwYXJzZWQsCgkJCXIgPSBqUXVlcnkuY3Nz KCB0aGlzLmVsZW0sIHRoaXMucHJvcCApOwoJCS8vIEVtcHR5IHN0cmluZ3MsIG51 bGwsIHVuZGVmaW5lZCBhbmQgImF1dG8iIGFyZSBjb252ZXJ0ZWQgdG8gMCwKCQkv LyBjb21wbGV4IHZhbHVlcyBzdWNoIGFzICJyb3RhdGUoMXJhZCkiIGFyZSByZXR1 cm5lZCBhcyBpcywKCQkvLyBzaW1wbGUgdmFsdWVzIHN1Y2ggYXMgIjEwcHgiIGFy ZSBwYXJzZWQgdG8gRmxvYXQuCgkJcmV0dXJuIGlzTmFOKCBwYXJzZWQgPSBwYXJz ZUZsb2F0KCByICkgKSA/ICFyIHx8IHIgPT09ICJhdXRvIiA/IDAgOiByIDogcGFy c2VkOwoJfSwKCgkvLyBTdGFydCBhbiBhbmltYXRpb24gZnJvbSBvbmUgbnVtYmVy IHRvIGFub3RoZXIKCWN1c3RvbTogZnVuY3Rpb24oIGZyb20sIHRvLCB1bml0ICkg ewoJCXZhciBzZWxmID0gdGhpcywKCQkJZnggPSBqUXVlcnkuZng7CgoJCXRoaXMu c3RhcnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKTsKCQl0aGlzLmVuZCA9 IHRvOwoJCXRoaXMubm93ID0gdGhpcy5zdGFydCA9IGZyb207CgkJdGhpcy5wb3Mg PSB0aGlzLnN0YXRlID0gMDsKCQl0aGlzLnVuaXQgPSB1bml0IHx8IHRoaXMudW5p dCB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHRoaXMucHJvcCBdID8gIiIgOiAicHgi ICk7CgoJCWZ1bmN0aW9uIHQoIGdvdG9FbmQgKSB7CgkJCXJldHVybiBzZWxmLnN0 ZXAoIGdvdG9FbmQgKTsKCQl9CgoJCXQucXVldWUgPSB0aGlzLm9wdGlvbnMucXVl dWU7CgkJdC5lbGVtID0gdGhpcy5lbGVtOwoJCXQuc2F2ZVN0YXRlID0gZnVuY3Rp b24oKSB7CgkJCWlmICggalF1ZXJ5Ll9kYXRhKCBzZWxmLmVsZW0sICJmeHNob3ci ICsgc2VsZi5wcm9wICkgPT09IHVuZGVmaW5lZCApIHsKCQkJCWlmICggc2VsZi5v cHRpb25zLmhpZGUgKSB7CgkJCQkJalF1ZXJ5Ll9kYXRhKCBzZWxmLmVsZW0sICJm eHNob3ciICsgc2VsZi5wcm9wLCBzZWxmLnN0YXJ0ICk7CgkJCQl9IGVsc2UgaWYg KCBzZWxmLm9wdGlvbnMuc2hvdyApIHsKCQkJCQlqUXVlcnkuX2RhdGEoIHNlbGYu ZWxlbSwgImZ4c2hvdyIgKyBzZWxmLnByb3AsIHNlbGYuZW5kICk7CgkJCQl9CgkJ CX0KCQl9OwoKCQlpZiAoIHQoKSAmJiBqUXVlcnkudGltZXJzLnB1c2godCkgJiYg IXRpbWVySWQgKSB7CgkJCXRpbWVySWQgPSBzZXRJbnRlcnZhbCggZngudGljaywg ZnguaW50ZXJ2YWwgKTsKCQl9Cgl9LAoKCS8vIFNpbXBsZSAnc2hvdycgZnVuY3Rp b24KCXNob3c6IGZ1bmN0aW9uKCkgewoJCXZhciBkYXRhU2hvdyA9IGpRdWVyeS5f ZGF0YSggdGhpcy5lbGVtLCAiZnhzaG93IiArIHRoaXMucHJvcCApOwoKCQkvLyBS ZW1lbWJlciB3aGVyZSB3ZSBzdGFydGVkLCBzbyB0aGF0IHdlIGNhbiBnbyBiYWNr IHRvIGl0IGxhdGVyCgkJdGhpcy5vcHRpb25zLm9yaWdbIHRoaXMucHJvcCBdID0g ZGF0YVNob3cgfHwgalF1ZXJ5LnN0eWxlKCB0aGlzLmVsZW0sIHRoaXMucHJvcCAp OwoJCXRoaXMub3B0aW9ucy5zaG93ID0gdHJ1ZTsKCgkJLy8gQmVnaW4gdGhlIGFu aW1hdGlvbgoJCS8vIE1ha2Ugc3VyZSB0aGF0IHdlIHN0YXJ0IGF0IGEgc21hbGwg d2lkdGgvaGVpZ2h0IHRvIGF2b2lkIGFueSBmbGFzaCBvZiBjb250ZW50CgkJaWYg KCBkYXRhU2hvdyAhPT0gdW5kZWZpbmVkICkgewoJCQkvLyBUaGlzIHNob3cgaXMg cGlja2luZyB1cCB3aGVyZSBhIHByZXZpb3VzIGhpZGUgb3Igc2hvdyBsZWZ0IG9m ZgoJCQl0aGlzLmN1c3RvbSggdGhpcy5jdXIoKSwgZGF0YVNob3cgKTsKCQl9IGVs c2UgewoJCQl0aGlzLmN1c3RvbSggdGhpcy5wcm9wID09PSAid2lkdGgiIHx8IHRo aXMucHJvcCA9PT0gImhlaWdodCIgPyAxIDogMCwgdGhpcy5jdXIoKSApOwoJCX0K CgkJLy8gU3RhcnQgYnkgc2hvd2luZyB0aGUgZWxlbWVudAoJCWpRdWVyeSggdGhp cy5lbGVtICkuc2hvdygpOwoJfSwKCgkvLyBTaW1wbGUgJ2hpZGUnIGZ1bmN0aW9u CgloaWRlOiBmdW5jdGlvbigpIHsKCQkvLyBSZW1lbWJlciB3aGVyZSB3ZSBzdGFy dGVkLCBzbyB0aGF0IHdlIGNhbiBnbyBiYWNrIHRvIGl0IGxhdGVyCgkJdGhpcy5v cHRpb25zLm9yaWdbIHRoaXMucHJvcCBdID0galF1ZXJ5Ll9kYXRhKCB0aGlzLmVs ZW0sICJmeHNob3ciICsgdGhpcy5wcm9wICkgfHwgalF1ZXJ5LnN0eWxlKCB0aGlz LmVsZW0sIHRoaXMucHJvcCApOwoJCXRoaXMub3B0aW9ucy5oaWRlID0gdHJ1ZTsK CgkJLy8gQmVnaW4gdGhlIGFuaW1hdGlvbgoJCXRoaXMuY3VzdG9tKCB0aGlzLmN1 cigpLCAwICk7Cgl9LAoKCS8vIEVhY2ggc3RlcCBvZiBhbiBhbmltYXRpb24KCXN0 ZXA6IGZ1bmN0aW9uKCBnb3RvRW5kICkgewoJCXZhciBwLCBuLCBjb21wbGV0ZSwK CQkJdCA9IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksCgkJCWRvbmUgPSB0cnVlLAoJ CQllbGVtID0gdGhpcy5lbGVtLAoJCQlvcHRpb25zID0gdGhpcy5vcHRpb25zOwoK CQlpZiAoIGdvdG9FbmQgfHwgdCA+PSBvcHRpb25zLmR1cmF0aW9uICsgdGhpcy5z dGFydFRpbWUgKSB7CgkJCXRoaXMubm93ID0gdGhpcy5lbmQ7CgkJCXRoaXMucG9z ID0gdGhpcy5zdGF0ZSA9IDE7CgkJCXRoaXMudXBkYXRlKCk7CgoJCQlvcHRpb25z LmFuaW1hdGVkUHJvcGVydGllc1sgdGhpcy5wcm9wIF0gPSB0cnVlOwoKCQkJZm9y ICggcCBpbiBvcHRpb25zLmFuaW1hdGVkUHJvcGVydGllcyApIHsKCQkJCWlmICgg b3B0aW9ucy5hbmltYXRlZFByb3BlcnRpZXNbIHAgXSAhPT0gdHJ1ZSApIHsKCQkJ CQlkb25lID0gZmFsc2U7CgkJCQl9CgkJCX0KCgkJCWlmICggZG9uZSApIHsKCQkJ CS8vIFJlc2V0IHRoZSBvdmVyZmxvdwoJCQkJaWYgKCBvcHRpb25zLm92ZXJmbG93 ICE9IG51bGwgJiYgIWpRdWVyeS5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3MgKSB7 CgoJCQkJCWpRdWVyeS5lYWNoKCBbICIiLCAiWCIsICJZIiBdLCBmdW5jdGlvbigg aW5kZXgsIHZhbHVlICkgewoJCQkJCQllbGVtLnN0eWxlWyAib3ZlcmZsb3ciICsg dmFsdWUgXSA9IG9wdGlvbnMub3ZlcmZsb3dbIGluZGV4IF07CgkJCQkJfSk7CgkJ CQl9CgoJCQkJLy8gSGlkZSB0aGUgZWxlbWVudCBpZiB0aGUgImhpZGUiIG9wZXJh dGlvbiB3YXMgZG9uZQoJCQkJaWYgKCBvcHRpb25zLmhpZGUgKSB7CgkJCQkJalF1 ZXJ5KCBlbGVtICkuaGlkZSgpOwoJCQkJfQoKCQkJCS8vIFJlc2V0IHRoZSBwcm9w ZXJ0aWVzLCBpZiB0aGUgaXRlbSBoYXMgYmVlbiBoaWRkZW4gb3Igc2hvd24KCQkJ CWlmICggb3B0aW9ucy5oaWRlIHx8IG9wdGlvbnMuc2hvdyApIHsKCQkJCQlmb3Ig KCBwIGluIG9wdGlvbnMuYW5pbWF0ZWRQcm9wZXJ0aWVzICkgewoJCQkJCQlqUXVl cnkuc3R5bGUoIGVsZW0sIHAsIG9wdGlvbnMub3JpZ1sgcCBdICk7CgkJCQkJCWpR dWVyeS5yZW1vdmVEYXRhKCBlbGVtLCAiZnhzaG93IiArIHAsIHRydWUgKTsKCQkJ CQkJLy8gVG9nZ2xlIGRhdGEgaXMgbm8gbG9uZ2VyIG5lZWRlZAoJCQkJCQlqUXVl cnkucmVtb3ZlRGF0YSggZWxlbSwgInRvZ2dsZSIgKyBwLCB0cnVlICk7CgkJCQkJ fQoJCQkJfQoKCQkJCS8vIEV4ZWN1dGUgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uCgkJ CQkvLyBpbiB0aGUgZXZlbnQgdGhhdCB0aGUgY29tcGxldGUgZnVuY3Rpb24gdGhy b3dzIGFuIGV4Y2VwdGlvbgoJCQkJLy8gd2UgbXVzdCBlbnN1cmUgaXQgd29uJ3Qg YmUgY2FsbGVkIHR3aWNlLiAjNTY4NAoKCQkJCWNvbXBsZXRlID0gb3B0aW9ucy5j b21wbGV0ZTsKCQkJCWlmICggY29tcGxldGUgKSB7CgoJCQkJCW9wdGlvbnMuY29t cGxldGUgPSBmYWxzZTsKCQkJCQljb21wbGV0ZS5jYWxsKCBlbGVtICk7CgkJCQl9 CgkJCX0KCgkJCXJldHVybiBmYWxzZTsKCgkJfSBlbHNlIHsKCQkJLy8gY2xhc3Np Y2FsIGVhc2luZyBjYW5ub3QgYmUgdXNlZCB3aXRoIGFuIEluZmluaXR5IGR1cmF0 aW9uCgkJCWlmICggb3B0aW9ucy5kdXJhdGlvbiA9PSBJbmZpbml0eSApIHsKCQkJ CXRoaXMubm93ID0gdDsKCQkJfSBlbHNlIHsKCQkJCW4gPSB0IC0gdGhpcy5zdGFy dFRpbWU7CgkJCQl0aGlzLnN0YXRlID0gbiAvIG9wdGlvbnMuZHVyYXRpb247CgoJ CQkJLy8gUGVyZm9ybSB0aGUgZWFzaW5nIGZ1bmN0aW9uLCBkZWZhdWx0cyB0byBz d2luZwoJCQkJdGhpcy5wb3MgPSBqUXVlcnkuZWFzaW5nWyBvcHRpb25zLmFuaW1h dGVkUHJvcGVydGllc1t0aGlzLnByb3BdIF0oIHRoaXMuc3RhdGUsIG4sIDAsIDEs IG9wdGlvbnMuZHVyYXRpb24gKTsKCQkJCXRoaXMubm93ID0gdGhpcy5zdGFydCAr ICggKHRoaXMuZW5kIC0gdGhpcy5zdGFydCkgKiB0aGlzLnBvcyApOwoJCQl9CgkJ CS8vIFBlcmZvcm0gdGhlIG5leHQgc3RlcCBvZiB0aGUgYW5pbWF0aW9uCgkJCXRo aXMudXBkYXRlKCk7CgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0KfTsKCmpRdWVyeS5l eHRlbmQoIGpRdWVyeS5meCwgewoJdGljazogZnVuY3Rpb24oKSB7CgkJdmFyIHRp bWVyLAoJCQl0aW1lcnMgPSBqUXVlcnkudGltZXJzLAoJCQlpID0gMDsKCgkJZm9y ICggOyBpIDwgdGltZXJzLmxlbmd0aDsgaSsrICkgewoJCQl0aW1lciA9IHRpbWVy c1sgaSBdOwoJCQkvLyBDaGVja3MgdGhlIHRpbWVyIGhhcyBub3QgYWxyZWFkeSBi ZWVuIHJlbW92ZWQKCQkJaWYgKCAhdGltZXIoKSAmJiB0aW1lcnNbIGkgXSA9PT0g dGltZXIgKSB7CgkJCQl0aW1lcnMuc3BsaWNlKCBpLS0sIDEgKTsKCQkJfQoJCX0K CgkJaWYgKCAhdGltZXJzLmxlbmd0aCApIHsKCQkJalF1ZXJ5LmZ4LnN0b3AoKTsK CQl9Cgl9LAoKCWludGVydmFsOiAxMywKCglzdG9wOiBmdW5jdGlvbigpIHsKCQlj bGVhckludGVydmFsKCB0aW1lcklkICk7CgkJdGltZXJJZCA9IG51bGw7Cgl9LAoK CXNwZWVkczogewoJCXNsb3c6IDYwMCwKCQlmYXN0OiAyMDAsCgkJLy8gRGVmYXVs dCBzcGVlZAoJCV9kZWZhdWx0OiA0MDAKCX0sCgoJc3RlcDogewoJCW9wYWNpdHk6 IGZ1bmN0aW9uKCBmeCApIHsKCQkJalF1ZXJ5LnN0eWxlKCBmeC5lbGVtLCAib3Bh Y2l0eSIsIGZ4Lm5vdyApOwoJCX0sCgoJCV9kZWZhdWx0OiBmdW5jdGlvbiggZngg KSB7CgkJCWlmICggZnguZWxlbS5zdHlsZSAmJiBmeC5lbGVtLnN0eWxlWyBmeC5w cm9wIF0gIT0gbnVsbCApIHsKCQkJCWZ4LmVsZW0uc3R5bGVbIGZ4LnByb3AgXSA9 IGZ4Lm5vdyArIGZ4LnVuaXQ7CgkJCX0gZWxzZSB7CgkJCQlmeC5lbGVtWyBmeC5w cm9wIF0gPSBmeC5ub3c7CgkJCX0KCQl9Cgl9Cn0pOwoKLy8gRW5zdXJlIHByb3Bz IHRoYXQgY2FuJ3QgYmUgbmVnYXRpdmUgZG9uJ3QgZ28gdGhlcmUgb24gdW5kZXJz aG9vdCBlYXNpbmcKalF1ZXJ5LmVhY2goIGZ4QXR0cnMuY29uY2F0LmFwcGx5KCBb XSwgZnhBdHRycyApLCBmdW5jdGlvbiggaSwgcHJvcCApIHsKCS8vIGV4Y2x1ZGUg bWFyZ2luVG9wLCBtYXJnaW5MZWZ0LCBtYXJnaW5Cb3R0b20gYW5kIG1hcmdpblJp Z2h0IGZyb20gdGhpcyBsaXN0CglpZiAoIHByb3AuaW5kZXhPZiggIm1hcmdpbiIg KSApIHsKCQlqUXVlcnkuZnguc3RlcFsgcHJvcCBdID0gZnVuY3Rpb24oIGZ4ICkg ewoJCQlqUXVlcnkuc3R5bGUoIGZ4LmVsZW0sIHByb3AsIE1hdGgubWF4KDAsIGZ4 Lm5vdykgKyBmeC51bml0ICk7CgkJfTsKCX0KfSk7CgppZiAoIGpRdWVyeS5leHBy ICYmIGpRdWVyeS5leHByLmZpbHRlcnMgKSB7CglqUXVlcnkuZXhwci5maWx0ZXJz LmFuaW1hdGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7CgkJcmV0dXJuIGpRdWVyeS5n cmVwKGpRdWVyeS50aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHsKCQkJcmV0dXJuIGVs ZW0gPT09IGZuLmVsZW07CgkJfSkubGVuZ3RoOwoJfTsKfQoKLy8gVHJ5IHRvIHJl c3RvcmUgdGhlIGRlZmF1bHQgZGlzcGxheSB2YWx1ZSBvZiBhbiBlbGVtZW50CmZ1 bmN0aW9uIGRlZmF1bHREaXNwbGF5KCBub2RlTmFtZSApIHsKCglpZiAoICFlbGVt ZGlzcGxheVsgbm9kZU5hbWUgXSApIHsKCgkJdmFyIGJvZHkgPSBkb2N1bWVudC5i b2R5LAoJCQllbGVtID0galF1ZXJ5KCAiPCIgKyBub2RlTmFtZSArICI+IiApLmFw cGVuZFRvKCBib2R5ICksCgkJCWRpc3BsYXkgPSBlbGVtLmNzcyggImRpc3BsYXki ICk7CgkJZWxlbS5yZW1vdmUoKTsKCgkJLy8gSWYgdGhlIHNpbXBsZSB3YXkgZmFp bHMsCgkJLy8gZ2V0IGVsZW1lbnQncyByZWFsIGRlZmF1bHQgZGlzcGxheSBieSBh dHRhY2hpbmcgaXQgdG8gYSB0ZW1wIGlmcmFtZQoJCWlmICggZGlzcGxheSA9PT0g Im5vbmUiIHx8IGRpc3BsYXkgPT09ICIiICkgewoJCQkvLyBObyBpZnJhbWUgdG8g dXNlIHlldCwgc28gY3JlYXRlIGl0CgkJCWlmICggIWlmcmFtZSApIHsKCQkJCWlm cmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJpZnJhbWUiICk7CgkJCQlp ZnJhbWUuZnJhbWVCb3JkZXIgPSBpZnJhbWUud2lkdGggPSBpZnJhbWUuaGVpZ2h0 ID0gMDsKCQkJfQoKCQkJYm9keS5hcHBlbmRDaGlsZCggaWZyYW1lICk7CgoJCQkv LyBDcmVhdGUgYSBjYWNoZWFibGUgY29weSBvZiB0aGUgaWZyYW1lIGRvY3VtZW50 IG9uIGZpcnN0IGNhbGwuCgkJCS8vIElFIGFuZCBPcGVyYSB3aWxsIGFsbG93IHVz IHRvIHJldXNlIHRoZSBpZnJhbWVEb2Mgd2l0aG91dCByZS13cml0aW5nIHRoZSBm YWtlIEhUTUwKCQkJLy8gZG9jdW1lbnQgdG8gaXQ7IFdlYktpdCAmIEZpcmVmb3gg d29uJ3QgYWxsb3cgcmV1c2luZyB0aGUgaWZyYW1lIGRvY3VtZW50LgoJCQlpZiAo ICFpZnJhbWVEb2MgfHwgIWlmcmFtZS5jcmVhdGVFbGVtZW50ICkgewoJCQkJaWZy YW1lRG9jID0gKCBpZnJhbWUuY29udGVudFdpbmRvdyB8fCBpZnJhbWUuY29udGVu dERvY3VtZW50ICkuZG9jdW1lbnQ7CgkJCQlpZnJhbWVEb2Mud3JpdGUoICggalF1 ZXJ5LnN1cHBvcnQuYm94TW9kZWwgPyAiPCFkb2N0eXBlIGh0bWw+IiA6ICIiICkg KyAiPGh0bWw+PGJvZHk+IiApOwoJCQkJaWZyYW1lRG9jLmNsb3NlKCk7CgkJCX0K CgkJCWVsZW0gPSBpZnJhbWVEb2MuY3JlYXRlRWxlbWVudCggbm9kZU5hbWUgKTsK CgkJCWlmcmFtZURvYy5ib2R5LmFwcGVuZENoaWxkKCBlbGVtICk7CgoJCQlkaXNw bGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgImRpc3BsYXkiICk7CgkJCWJvZHkucmVt b3ZlQ2hpbGQoIGlmcmFtZSApOwoJCX0KCgkJLy8gU3RvcmUgdGhlIGNvcnJlY3Qg ZGVmYXVsdCBkaXNwbGF5CgkJZWxlbWRpc3BsYXlbIG5vZGVOYW1lIF0gPSBkaXNw bGF5OwoJfQoKCXJldHVybiBlbGVtZGlzcGxheVsgbm9kZU5hbWUgXTsKfQoKCgoK dmFyIGdldE9mZnNldCwKCXJ0YWJsZSA9IC9edCg/OmFibGV8ZHxoKSQvaSwKCXJy b290ID0gL14oPzpib2R5fGh0bWwpJC9pOwoKaWYgKCAiZ2V0Qm91bmRpbmdDbGll bnRSZWN0IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgKSB7CglnZXRPZmZz ZXQgPSBmdW5jdGlvbiggZWxlbSwgZG9jLCBkb2NFbGVtLCBib3ggKSB7CgkJdHJ5 IHsKCQkJYm94ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKCQl9IGNh dGNoKGUpIHt9CgoJCS8vIE1ha2Ugc3VyZSB3ZSdyZSBub3QgZGVhbGluZyB3aXRo IGEgZGlzY29ubmVjdGVkIERPTSBub2RlCgkJaWYgKCAhYm94IHx8ICFqUXVlcnku Y29udGFpbnMoIGRvY0VsZW0sIGVsZW0gKSApIHsKCQkJcmV0dXJuIGJveCA/IHsg dG9wOiBib3gudG9wLCBsZWZ0OiBib3gubGVmdCB9IDogeyB0b3A6IDAsIGxlZnQ6 IDAgfTsKCQl9CgoJCXZhciBib2R5ID0gZG9jLmJvZHksCgkJCXdpbiA9IGdldFdp bmRvdyggZG9jICksCgkJCWNsaWVudFRvcCAgPSBkb2NFbGVtLmNsaWVudFRvcCAg fHwgYm9keS5jbGllbnRUb3AgIHx8IDAsCgkJCWNsaWVudExlZnQgPSBkb2NFbGVt LmNsaWVudExlZnQgfHwgYm9keS5jbGllbnRMZWZ0IHx8IDAsCgkJCXNjcm9sbFRv cCAgPSB3aW4ucGFnZVlPZmZzZXQgfHwgalF1ZXJ5LnN1cHBvcnQuYm94TW9kZWwg JiYgZG9jRWxlbS5zY3JvbGxUb3AgIHx8IGJvZHkuc2Nyb2xsVG9wLAoJCQlzY3Jv bGxMZWZ0ID0gd2luLnBhZ2VYT2Zmc2V0IHx8IGpRdWVyeS5zdXBwb3J0LmJveE1v ZGVsICYmIGRvY0VsZW0uc2Nyb2xsTGVmdCB8fCBib2R5LnNjcm9sbExlZnQsCgkJ CXRvcCAgPSBib3gudG9wICArIHNjcm9sbFRvcCAgLSBjbGllbnRUb3AsCgkJCWxl ZnQgPSBib3gubGVmdCArIHNjcm9sbExlZnQgLSBjbGllbnRMZWZ0OwoKCQlyZXR1 cm4geyB0b3A6IHRvcCwgbGVmdDogbGVmdCB9OwoJfTsKCn0gZWxzZSB7CglnZXRP ZmZzZXQgPSBmdW5jdGlvbiggZWxlbSwgZG9jLCBkb2NFbGVtICkgewoJCXZhciBj b21wdXRlZFN0eWxlLAoJCQlvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVu dCwKCQkJcHJldk9mZnNldFBhcmVudCA9IGVsZW0sCgkJCWJvZHkgPSBkb2MuYm9k eSwKCQkJZGVmYXVsdFZpZXcgPSBkb2MuZGVmYXVsdFZpZXcsCgkJCXByZXZDb21w dXRlZFN0eWxlID0gZGVmYXVsdFZpZXcgPyBkZWZhdWx0Vmlldy5nZXRDb21wdXRl ZFN0eWxlKCBlbGVtLCBudWxsICkgOiBlbGVtLmN1cnJlbnRTdHlsZSwKCQkJdG9w ID0gZWxlbS5vZmZzZXRUb3AsCgkJCWxlZnQgPSBlbGVtLm9mZnNldExlZnQ7CgoJ CXdoaWxlICggKGVsZW0gPSBlbGVtLnBhcmVudE5vZGUpICYmIGVsZW0gIT09IGJv ZHkgJiYgZWxlbSAhPT0gZG9jRWxlbSApIHsKCQkJaWYgKCBqUXVlcnkuc3VwcG9y dC5maXhlZFBvc2l0aW9uICYmIHByZXZDb21wdXRlZFN0eWxlLnBvc2l0aW9uID09 PSAiZml4ZWQiICkgewoJCQkJYnJlYWs7CgkJCX0KCgkJCWNvbXB1dGVkU3R5bGUg PSBkZWZhdWx0VmlldyA/IGRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxl bSwgbnVsbCkgOiBlbGVtLmN1cnJlbnRTdHlsZTsKCQkJdG9wICAtPSBlbGVtLnNj cm9sbFRvcDsKCQkJbGVmdCAtPSBlbGVtLnNjcm9sbExlZnQ7CgoJCQlpZiAoIGVs ZW0gPT09IG9mZnNldFBhcmVudCApIHsKCQkJCXRvcCAgKz0gZWxlbS5vZmZzZXRU b3A7CgkJCQlsZWZ0ICs9IGVsZW0ub2Zmc2V0TGVmdDsKCgkJCQlpZiAoIGpRdWVy eS5zdXBwb3J0LmRvZXNOb3RBZGRCb3JkZXIgJiYgIShqUXVlcnkuc3VwcG9ydC5k b2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxscyAmJiBydGFibGUudGVzdChlbGVt Lm5vZGVOYW1lKSkgKSB7CgkJCQkJdG9wICArPSBwYXJzZUZsb2F0KCBjb21wdXRl ZFN0eWxlLmJvcmRlclRvcFdpZHRoICApIHx8IDA7CgkJCQkJbGVmdCArPSBwYXJz ZUZsb2F0KCBjb21wdXRlZFN0eWxlLmJvcmRlckxlZnRXaWR0aCApIHx8IDA7CgkJ CQl9CgoJCQkJcHJldk9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudDsKCQkJCW9m ZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50OwoJCQl9CgoJCQlpZiAoIGpR dWVyeS5zdXBwb3J0LnN1YnRyYWN0c0JvcmRlckZvck92ZXJmbG93Tm90VmlzaWJs ZSAmJiBjb21wdXRlZFN0eWxlLm92ZXJmbG93ICE9PSAidmlzaWJsZSIgKSB7CgkJ CQl0b3AgICs9IHBhcnNlRmxvYXQoIGNvbXB1dGVkU3R5bGUuYm9yZGVyVG9wV2lk dGggICkgfHwgMDsKCQkJCWxlZnQgKz0gcGFyc2VGbG9hdCggY29tcHV0ZWRTdHls ZS5ib3JkZXJMZWZ0V2lkdGggKSB8fCAwOwoJCQl9CgoJCQlwcmV2Q29tcHV0ZWRT dHlsZSA9IGNvbXB1dGVkU3R5bGU7CgkJfQoKCQlpZiAoIHByZXZDb21wdXRlZFN0 eWxlLnBvc2l0aW9uID09PSAicmVsYXRpdmUiIHx8IHByZXZDb21wdXRlZFN0eWxl LnBvc2l0aW9uID09PSAic3RhdGljIiApIHsKCQkJdG9wICArPSBib2R5Lm9mZnNl dFRvcDsKCQkJbGVmdCArPSBib2R5Lm9mZnNldExlZnQ7CgkJfQoKCQlpZiAoIGpR dWVyeS5zdXBwb3J0LmZpeGVkUG9zaXRpb24gJiYgcHJldkNvbXB1dGVkU3R5bGUu cG9zaXRpb24gPT09ICJmaXhlZCIgKSB7CgkJCXRvcCAgKz0gTWF0aC5tYXgoIGRv Y0VsZW0uc2Nyb2xsVG9wLCBib2R5LnNjcm9sbFRvcCApOwoJCQlsZWZ0ICs9IE1h dGgubWF4KCBkb2NFbGVtLnNjcm9sbExlZnQsIGJvZHkuc2Nyb2xsTGVmdCApOwoJ CX0KCgkJcmV0dXJuIHsgdG9wOiB0b3AsIGxlZnQ6IGxlZnQgfTsKCX07Cn0KCmpR dWVyeS5mbi5vZmZzZXQgPSBmdW5jdGlvbiggb3B0aW9ucyApIHsKCWlmICggYXJn dW1lbnRzLmxlbmd0aCApIHsKCQlyZXR1cm4gb3B0aW9ucyA9PT0gdW5kZWZpbmVk ID8KCQkJdGhpcyA6CgkJCXRoaXMuZWFjaChmdW5jdGlvbiggaSApIHsKCQkJCWpR dWVyeS5vZmZzZXQuc2V0T2Zmc2V0KCB0aGlzLCBvcHRpb25zLCBpICk7CgkJCX0p OwoJfQoKCXZhciBlbGVtID0gdGhpc1swXSwKCQlkb2MgPSBlbGVtICYmIGVsZW0u b3duZXJEb2N1bWVudDsKCglpZiAoICFkb2MgKSB7CgkJcmV0dXJuIG51bGw7Cgl9 CgoJaWYgKCBlbGVtID09PSBkb2MuYm9keSApIHsKCQlyZXR1cm4galF1ZXJ5Lm9m ZnNldC5ib2R5T2Zmc2V0KCBlbGVtICk7Cgl9CgoJcmV0dXJuIGdldE9mZnNldCgg ZWxlbSwgZG9jLCBkb2MuZG9jdW1lbnRFbGVtZW50ICk7Cn07CgpqUXVlcnkub2Zm c2V0ID0gewoKCWJvZHlPZmZzZXQ6IGZ1bmN0aW9uKCBib2R5ICkgewoJCXZhciB0 b3AgPSBib2R5Lm9mZnNldFRvcCwKCQkJbGVmdCA9IGJvZHkub2Zmc2V0TGVmdDsK CgkJaWYgKCBqUXVlcnkuc3VwcG9ydC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9k eU9mZnNldCApIHsKCQkJdG9wICArPSBwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKGJv ZHksICJtYXJnaW5Ub3AiKSApIHx8IDA7CgkJCWxlZnQgKz0gcGFyc2VGbG9hdCgg alF1ZXJ5LmNzcyhib2R5LCAibWFyZ2luTGVmdCIpICkgfHwgMDsKCQl9CgoJCXJl dHVybiB7IHRvcDogdG9wLCBsZWZ0OiBsZWZ0IH07Cgl9LAoKCXNldE9mZnNldDog ZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGkgKSB7CgkJdmFyIHBvc2l0aW9uID0g alF1ZXJ5LmNzcyggZWxlbSwgInBvc2l0aW9uIiApOwoKCQkvLyBzZXQgcG9zaXRp b24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRp YyBlbGVtCgkJaWYgKCBwb3NpdGlvbiA9PT0gInN0YXRpYyIgKSB7CgkJCWVsZW0u c3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOwoJCX0KCgkJdmFyIGN1ckVsZW0g PSBqUXVlcnkoIGVsZW0gKSwKCQkJY3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQo KSwKCQkJY3VyQ1NTVG9wID0galF1ZXJ5LmNzcyggZWxlbSwgInRvcCIgKSwKCQkJ Y3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sICJsZWZ0IiApLAoJCQljYWxj dWxhdGVQb3NpdGlvbiA9ICggcG9zaXRpb24gPT09ICJhYnNvbHV0ZSIgfHwgcG9z aXRpb24gPT09ICJmaXhlZCIgKSAmJiBqUXVlcnkuaW5BcnJheSgiYXV0byIsIFtj dXJDU1NUb3AsIGN1ckNTU0xlZnRdKSA+IC0xLAoJCQlwcm9wcyA9IHt9LCBjdXJQ b3NpdGlvbiA9IHt9LCBjdXJUb3AsIGN1ckxlZnQ7CgoJCS8vIG5lZWQgdG8gYmUg YWJsZSB0byBjYWxjdWxhdGUgcG9zaXRpb24gaWYgZWl0aGVyIHRvcCBvciBsZWZ0 IGlzIGF1dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhl ZAoJCWlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7CgkJCWN1clBvc2l0aW9uID0g Y3VyRWxlbS5wb3NpdGlvbigpOwoJCQljdXJUb3AgPSBjdXJQb3NpdGlvbi50b3A7 CgkJCWN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0OwoJCX0gZWxzZSB7CgkJCWN1 clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7CgkJCWN1ckxlZnQg PSBwYXJzZUZsb2F0KCBjdXJDU1NMZWZ0ICkgfHwgMDsKCQl9CgoJCWlmICggalF1 ZXJ5LmlzRnVuY3Rpb24oIG9wdGlvbnMgKSApIHsKCQkJb3B0aW9ucyA9IG9wdGlv bnMuY2FsbCggZWxlbSwgaSwgY3VyT2Zmc2V0ICk7CgkJfQoKCQlpZiAoIG9wdGlv bnMudG9wICE9IG51bGwgKSB7CgkJCXByb3BzLnRvcCA9ICggb3B0aW9ucy50b3Ag LSBjdXJPZmZzZXQudG9wICkgKyBjdXJUb3A7CgkJfQoJCWlmICggb3B0aW9ucy5s ZWZ0ICE9IG51bGwgKSB7CgkJCXByb3BzLmxlZnQgPSAoIG9wdGlvbnMubGVmdCAt IGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0OwoJCX0KCgkJaWYgKCAidXNpbmci IGluIG9wdGlvbnMgKSB7CgkJCW9wdGlvbnMudXNpbmcuY2FsbCggZWxlbSwgcHJv cHMgKTsKCQl9IGVsc2UgewoJCQljdXJFbGVtLmNzcyggcHJvcHMgKTsKCQl9Cgl9 Cn07CgoKalF1ZXJ5LmZuLmV4dGVuZCh7CgoJcG9zaXRpb246IGZ1bmN0aW9uKCkg ewoJCWlmICggIXRoaXNbMF0gKSB7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJdmFy IGVsZW0gPSB0aGlzWzBdLAoKCQkvLyBHZXQgKnJlYWwqIG9mZnNldFBhcmVudAoJ CW9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50KCksCgoJCS8vIEdldCBj b3JyZWN0IG9mZnNldHMKCQlvZmZzZXQgICAgICAgPSB0aGlzLm9mZnNldCgpLAoJ CXBhcmVudE9mZnNldCA9IHJyb290LnRlc3Qob2Zmc2V0UGFyZW50WzBdLm5vZGVO YW1lKSA/IHsgdG9wOiAwLCBsZWZ0OiAwIH0gOiBvZmZzZXRQYXJlbnQub2Zmc2V0 KCk7CgoJCS8vIFN1YnRyYWN0IGVsZW1lbnQgbWFyZ2lucwoJCS8vIG5vdGU6IHdo ZW4gYW4gZWxlbWVudCBoYXMgbWFyZ2luOiBhdXRvIHRoZSBvZmZzZXRMZWZ0IGFu ZCBtYXJnaW5MZWZ0CgkJLy8gYXJlIHRoZSBzYW1lIGluIFNhZmFyaSBjYXVzaW5n IG9mZnNldC5sZWZ0IHRvIGluY29ycmVjdGx5IGJlIDAKCQlvZmZzZXQudG9wICAt PSBwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKGVsZW0sICJtYXJnaW5Ub3AiKSApIHx8 IDA7CgkJb2Zmc2V0LmxlZnQgLT0gcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyhlbGVt LCAibWFyZ2luTGVmdCIpICkgfHwgMDsKCgkJLy8gQWRkIG9mZnNldFBhcmVudCBi b3JkZXJzCgkJcGFyZW50T2Zmc2V0LnRvcCAgKz0gcGFyc2VGbG9hdCggalF1ZXJ5 LmNzcyhvZmZzZXRQYXJlbnRbMF0sICJib3JkZXJUb3BXaWR0aCIpICkgfHwgMDsK CQlwYXJlbnRPZmZzZXQubGVmdCArPSBwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKG9m ZnNldFBhcmVudFswXSwgImJvcmRlckxlZnRXaWR0aCIpICkgfHwgMDsKCgkJLy8g U3VidHJhY3QgdGhlIHR3byBvZmZzZXRzCgkJcmV0dXJuIHsKCQkJdG9wOiAgb2Zm c2V0LnRvcCAgLSBwYXJlbnRPZmZzZXQudG9wLAoJCQlsZWZ0OiBvZmZzZXQubGVm dCAtIHBhcmVudE9mZnNldC5sZWZ0CgkJfTsKCX0sCgoJb2Zmc2V0UGFyZW50OiBm dW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKSB7CgkJCXZh ciBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudCB8fCBkb2N1bWVudC5i b2R5OwoJCQl3aGlsZSAoIG9mZnNldFBhcmVudCAmJiAoIXJyb290LnRlc3Qob2Zm c2V0UGFyZW50Lm5vZGVOYW1lKSAmJiBqUXVlcnkuY3NzKG9mZnNldFBhcmVudCwg InBvc2l0aW9uIikgPT09ICJzdGF0aWMiKSApIHsKCQkJCW9mZnNldFBhcmVudCA9 IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7CgkJCX0KCQkJcmV0dXJuIG9mZnNl dFBhcmVudDsKCQl9KTsKCX0KfSk7CgoKLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5k IHNjcm9sbFRvcCBtZXRob2RzCmpRdWVyeS5lYWNoKCB7c2Nyb2xsTGVmdDogInBh Z2VYT2Zmc2V0Iiwgc2Nyb2xsVG9wOiAicGFnZVlPZmZzZXQifSwgZnVuY3Rpb24o IG1ldGhvZCwgcHJvcCApIHsKCXZhciB0b3AgPSAvWS8udGVzdCggcHJvcCApOwoK CWpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdmFsICkgewoJCXJldHVy biBqUXVlcnkuYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbWV0aG9kLCB2 YWwgKSB7CgkJCXZhciB3aW4gPSBnZXRXaW5kb3coIGVsZW0gKTsKCgkJCWlmICgg dmFsID09PSB1bmRlZmluZWQgKSB7CgkJCQlyZXR1cm4gd2luID8gKHByb3AgaW4g d2luKSA/IHdpblsgcHJvcCBdIDoKCQkJCQlqUXVlcnkuc3VwcG9ydC5ib3hNb2Rl bCAmJiB3aW4uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyBtZXRob2QgXSB8fAoJ CQkJCQl3aW4uZG9jdW1lbnQuYm9keVsgbWV0aG9kIF0gOgoJCQkJCWVsZW1bIG1l dGhvZCBdOwoJCQl9CgoJCQlpZiAoIHdpbiApIHsKCQkJCXdpbi5zY3JvbGxUbygK CQkJCQkhdG9wID8gdmFsIDogalF1ZXJ5KCB3aW4gKS5zY3JvbGxMZWZ0KCksCgkJ CQkJIHRvcCA/IHZhbCA6IGpRdWVyeSggd2luICkuc2Nyb2xsVG9wKCkKCQkJCSk7 CgoJCQl9IGVsc2UgewoJCQkJZWxlbVsgbWV0aG9kIF0gPSB2YWw7CgkJCX0KCQl9 LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCwgbnVsbCApOwoJfTsKfSk7 CgpmdW5jdGlvbiBnZXRXaW5kb3coIGVsZW0gKSB7CglyZXR1cm4galF1ZXJ5Lmlz V2luZG93KCBlbGVtICkgPwoJCWVsZW0gOgoJCWVsZW0ubm9kZVR5cGUgPT09IDkg PwoJCQllbGVtLmRlZmF1bHRWaWV3IHx8IGVsZW0ucGFyZW50V2luZG93IDoKCQkJ ZmFsc2U7Cn0KCgoKCi8vIENyZWF0ZSB3aWR0aCwgaGVpZ2h0LCBpbm5lckhlaWdo dCwgaW5uZXJXaWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9k cwpqUXVlcnkuZWFjaCggeyBIZWlnaHQ6ICJoZWlnaHQiLCBXaWR0aDogIndpZHRo IiB9LCBmdW5jdGlvbiggbmFtZSwgdHlwZSApIHsKCXZhciBjbGllbnRQcm9wID0g ImNsaWVudCIgKyBuYW1lLAoJCXNjcm9sbFByb3AgPSAic2Nyb2xsIiArIG5hbWUs CgkJb2Zmc2V0UHJvcCA9ICJvZmZzZXQiICsgbmFtZTsKCgkvLyBpbm5lckhlaWdo dCBhbmQgaW5uZXJXaWR0aAoJalF1ZXJ5LmZuWyAiaW5uZXIiICsgbmFtZSBdID0g ZnVuY3Rpb24oKSB7CgkJdmFyIGVsZW0gPSB0aGlzWzBdOwoJCXJldHVybiBlbGVt ID8KCQkJZWxlbS5zdHlsZSA/CgkJCXBhcnNlRmxvYXQoIGpRdWVyeS5jc3MoIGVs ZW0sIHR5cGUsICJwYWRkaW5nIiApICkgOgoJCQl0aGlzWyB0eXBlIF0oKSA6CgkJ CW51bGw7Cgl9OwoKCS8vIG91dGVySGVpZ2h0IGFuZCBvdXRlcldpZHRoCglqUXVl cnkuZm5bICJvdXRlciIgKyBuYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luICkgewoJ CXZhciBlbGVtID0gdGhpc1swXTsKCQlyZXR1cm4gZWxlbSA/CgkJCWVsZW0uc3R5 bGUgPwoJCQlwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCBtYXJn aW4gPyAibWFyZ2luIiA6ICJib3JkZXIiICkgKSA6CgkJCXRoaXNbIHR5cGUgXSgp IDoKCQkJbnVsbDsKCX07CgoJalF1ZXJ5LmZuWyB0eXBlIF0gPSBmdW5jdGlvbigg dmFsdWUgKSB7CgkJcmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGZ1bmN0aW9u KCBlbGVtLCB0eXBlLCB2YWx1ZSApIHsKCQkJdmFyIGRvYywgZG9jRWxlbVByb3As IG9yaWcsIHJldDsKCgkJCWlmICggalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7 CgkJCQkvLyAzcmQgY29uZGl0aW9uIGFsbG93cyBOb2tpYSBzdXBwb3J0LCBhcyBp dCBzdXBwb3J0cyB0aGUgZG9jRWxlbSBwcm9wIGJ1dCBub3QgQ1NTMUNvbXBhdAoJ CQkJZG9jID0gZWxlbS5kb2N1bWVudDsKCQkJCWRvY0VsZW1Qcm9wID0gZG9jLmRv Y3VtZW50RWxlbWVudFsgY2xpZW50UHJvcCBdOwoJCQkJcmV0dXJuIGpRdWVyeS5z dXBwb3J0LmJveE1vZGVsICYmIGRvY0VsZW1Qcm9wIHx8CgkJCQkJZG9jLmJvZHkg JiYgZG9jLmJvZHlbIGNsaWVudFByb3AgXSB8fCBkb2NFbGVtUHJvcDsKCQkJfQoK CQkJLy8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodAoJCQlpZiAoIGVsZW0u bm9kZVR5cGUgPT09IDkgKSB7CgkJCQkvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hl aWdodF0gb3Igb2Zmc2V0W1dpZHRoL0hlaWdodF0sIHdoaWNoZXZlciBpcyBncmVh dGVyCgkJCQlkb2MgPSBlbGVtLmRvY3VtZW50RWxlbWVudDsKCgkJCQkvLyB3aGVu IGEgd2luZG93ID4gZG9jdW1lbnQsIElFNiByZXBvcnRzIGEgb2Zmc2V0W1dpZHRo L0hlaWdodF0gPiBjbGllbnRbV2lkdGgvSGVpZ2h0XQoJCQkJLy8gc28gd2UgY2Fu J3QgdXNlIG1heCwgYXMgaXQnbGwgY2hvb3NlIHRoZSBpbmNvcnJlY3Qgb2Zmc2V0 W1dpZHRoL0hlaWdodF0KCQkJCS8vIGluc3RlYWQgd2UgdXNlIHRoZSBjb3JyZWN0 IGNsaWVudFtXaWR0aC9IZWlnaHRdCgkJCQkvLyBzdXBwb3J0OklFNgoJCQkJaWYg KCBkb2NbIGNsaWVudFByb3AgXSA+PSBkb2NbIHNjcm9sbFByb3AgXSApIHsKCQkJ CQlyZXR1cm4gZG9jWyBjbGllbnRQcm9wIF07CgkJCQl9CgoJCQkJcmV0dXJuIE1h dGgubWF4KAoJCQkJCWVsZW0uYm9keVsgc2Nyb2xsUHJvcCBdLCBkb2NbIHNjcm9s bFByb3AgXSwKCQkJCQllbGVtLmJvZHlbIG9mZnNldFByb3AgXSwgZG9jWyBvZmZz ZXRQcm9wIF0KCQkJCSk7CgkJCX0KCgkJCS8vIEdldCB3aWR0aCBvciBoZWlnaHQg b24gdGhlIGVsZW1lbnQKCQkJaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgewoJ CQkJb3JpZyA9IGpRdWVyeS5jc3MoIGVsZW0sIHR5cGUgKTsKCQkJCXJldCA9IHBh cnNlRmxvYXQoIG9yaWcgKTsKCQkJCXJldHVybiBqUXVlcnkuaXNOdW1lcmljKCBy ZXQgKSA/IHJldCA6IG9yaWc7CgkJCX0KCgkJCS8vIFNldCB0aGUgd2lkdGggb3Ig aGVpZ2h0IG9uIHRoZSBlbGVtZW50CgkJCWpRdWVyeSggZWxlbSApLmNzcyggdHlw ZSwgdmFsdWUgKTsKCQl9LCB0eXBlLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCwg bnVsbCApOwoJfTsKfSk7CgoKCgovLyBFeHBvc2UgalF1ZXJ5IHRvIHRoZSBnbG9i YWwgb2JqZWN0CndpbmRvdy5qUXVlcnkgPSB3aW5kb3cuJCA9IGpRdWVyeTsKCi8v IEV4cG9zZSBqUXVlcnkgYXMgYW4gQU1EIG1vZHVsZSwgYnV0IG9ubHkgZm9yIEFN RCBsb2FkZXJzIHRoYXQKLy8gdW5kZXJzdGFuZCB0aGUgaXNzdWVzIHdpdGggbG9h ZGluZyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBqUXVlcnkKLy8gaW4gYSBwYWdlIHRo YXQgYWxsIG1pZ2h0IGNhbGwgZGVmaW5lKCkuIFRoZSBsb2FkZXIgd2lsbCBpbmRp Y2F0ZQovLyB0aGV5IGhhdmUgc3BlY2lhbCBhbGxvd2FuY2VzIGZvciBtdWx0aXBs ZSBqUXVlcnkgdmVyc2lvbnMgYnkKLy8gc3BlY2lmeWluZyBkZWZpbmUuYW1kLmpR dWVyeSA9IHRydWUuIFJlZ2lzdGVyIGFzIGEgbmFtZWQgbW9kdWxlLAovLyBzaW5j ZSBqUXVlcnkgY2FuIGJlIGNvbmNhdGVuYXRlZCB3aXRoIG90aGVyIGZpbGVzIHRo YXQgbWF5IHVzZSBkZWZpbmUsCi8vIGJ1dCBub3QgdXNlIGEgcHJvcGVyIGNvbmNh dGVuYXRpb24gc2NyaXB0IHRoYXQgdW5kZXJzdGFuZHMgYW5vbnltb3VzCi8vIEFN RCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0 IHdheSB0byByZWdpc3Rlci4KLy8gTG93ZXJjYXNlIGpxdWVyeSBpcyB1c2VkIGJl Y2F1c2UgQU1EIG1vZHVsZSBuYW1lcyBhcmUgZGVyaXZlZCBmcm9tCi8vIGZpbGUg bmFtZXMsIGFuZCBqUXVlcnkgaXMgbm9ybWFsbHkgZGVsaXZlcmVkIGluIGEgbG93 ZXJjYXNlIGZpbGUgbmFtZS4KLy8gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUg Z2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50cyB0byBjYWxsCi8v IG5vQ29uZmxpY3QgdG8gaGlkZSB0aGlzIHZlcnNpb24gb2YgalF1ZXJ5LCBpdCB3 aWxsIHdvcmsuCmlmICggdHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBk ZWZpbmUuYW1kICYmIGRlZmluZS5hbWQualF1ZXJ5ICkgewoJZGVmaW5lKCAianF1 ZXJ5IiwgW10sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGpRdWVyeTsgfSApOwp9CgoK Cn0pKCB3aW5kb3cgKTs= ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=jquery.cookie.js Content-Type: application/x-javascript; name=jquery.cookie.js Content-Location: http://ege.edu.ru/common/js/jquery.cookie.js Content-Transfer-Encoding: Base64 LyoqCiAqIENvb2tpZSBwbHVnaW4KICoKICogQ29weXJpZ2h0IChjKSAyMDA2IEts YXVzIEhhcnRsIChzdGlsYnVlcm8uZGUpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIg dGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzOgogKiBodHRwOi8vd3d3Lm9wZW5zb3Vy Y2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocAogKiBodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwKICoKICovCgovKioKICogQ3JlYXRlIGEg Y29va2llIHdpdGggdGhlIGdpdmVuIG5hbWUgYW5kIHZhbHVlIGFuZCBvdGhlciBv cHRpb25hbCBwYXJhbWV0ZXJzLgogKgogKiBAZXhhbXBsZSAkLmNvb2tpZSgndGhl X2Nvb2tpZScsICd0aGVfdmFsdWUnKTsKICogQGRlc2MgU2V0IHRoZSB2YWx1ZSBv ZiBhIGNvb2tpZS4KICogQGV4YW1wbGUgJC5jb29raWUoJ3RoZV9jb29raWUnLCAn dGhlX3ZhbHVlJywgeyBleHBpcmVzOiA3LCBwYXRoOiAnLycsIGRvbWFpbjogJ2px dWVyeS5jb20nLCBzZWN1cmU6IHRydWUgfSk7CiAqIEBkZXNjIENyZWF0ZSBhIGNv b2tpZSB3aXRoIGFsbCBhdmFpbGFibGUgb3B0aW9ucy4KICogQGV4YW1wbGUgJC5j b29raWUoJ3RoZV9jb29raWUnLCAndGhlX3ZhbHVlJyk7CiAqIEBkZXNjIENyZWF0 ZSBhIHNlc3Npb24gY29va2llLgogKiBAZXhhbXBsZSAkLmNvb2tpZSgndGhlX2Nv b2tpZScsIG51bGwpOwogKiBAZGVzYyBEZWxldGUgYSBjb29raWUgYnkgcGFzc2lu ZyBudWxsIGFzIHZhbHVlLiBLZWVwIGluIG1pbmQgdGhhdCB5b3UgaGF2ZSB0byB1 c2UgdGhlIHNhbWUgcGF0aCBhbmQgZG9tYWluCiAqICAgICAgIHVzZWQgd2hlbiB0 aGUgY29va2llIHdhcyBzZXQuCiAqCiAqIEBwYXJhbSBTdHJpbmcgbmFtZSBUaGUg bmFtZSBvZiB0aGUgY29va2llLgogKiBAcGFyYW0gU3RyaW5nIHZhbHVlIFRoZSB2 YWx1ZSBvZiB0aGUgY29va2llLgogKiBAcGFyYW0gT2JqZWN0IG9wdGlvbnMgQW4g b2JqZWN0IGxpdGVyYWwgY29udGFpbmluZyBrZXkvdmFsdWUgcGFpcnMgdG8gcHJv dmlkZSBvcHRpb25hbCBjb29raWUgYXR0cmlidXRlcy4KICogQG9wdGlvbiBOdW1i ZXJ8RGF0ZSBleHBpcmVzIEVpdGhlciBhbiBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhl IGV4cGlyYXRpb24gZGF0ZSBmcm9tIG5vdyBvbiBpbiBkYXlzIG9yIGEgRGF0ZSBv YmplY3QuCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBhIG5lZ2F0 aXZlIHZhbHVlIGlzIHNwZWNpZmllZCAoZS5nLiBhIGRhdGUgaW4gdGhlIHBhc3Qp LCB0aGUgY29va2llIHdpbGwgYmUgZGVsZXRlZC4KICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElmIHNldCB0byBudWxsIG9yIG9taXR0ZWQsIHRoZSBjb29r aWUgd2lsbCBiZSBhIHNlc3Npb24gY29va2llIGFuZCB3aWxsIG5vdCBiZSByZXRh aW5lZAogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgdGhl IGJyb3dzZXIgZXhpdHMuCiAqIEBvcHRpb24gU3RyaW5nIHBhdGggVGhlIHZhbHVl IG9mIHRoZSBwYXRoIGF0cmlidXRlIG9mIHRoZSBjb29raWUgKGRlZmF1bHQ6IHBh dGggb2YgcGFnZSB0aGF0IGNyZWF0ZWQgdGhlIGNvb2tpZSkuCiAqIEBvcHRpb24g U3RyaW5nIGRvbWFpbiBUaGUgdmFsdWUgb2YgdGhlIGRvbWFpbiBhdHRyaWJ1dGUg b2YgdGhlIGNvb2tpZSAoZGVmYXVsdDogZG9tYWluIG9mIHBhZ2UgdGhhdCBjcmVh dGVkIHRoZSBjb29raWUpLgogKiBAb3B0aW9uIEJvb2xlYW4gc2VjdXJlIElmIHRy dWUsIHRoZSBzZWN1cmUgYXR0cmlidXRlIG9mIHRoZSBjb29raWUgd2lsbCBiZSBz ZXQgYW5kIHRoZSBjb29raWUgdHJhbnNtaXNzaW9uIHdpbGwKICogICAgICAgICAg ICAgICAgICAgICAgICByZXF1aXJlIGEgc2VjdXJlIHByb3RvY29sIChsaWtlIEhU VFBTKS4KICogQHR5cGUgdW5kZWZpbmVkCiAqCiAqIEBuYW1lICQuY29va2llCiAq IEBjYXQgUGx1Z2lucy9Db29raWUKICogQGF1dGhvciBLbGF1cyBIYXJ0bC9rbGF1 cy5oYXJ0bEBzdGlsYnVlcm8uZGUKICovCgovKioKICogR2V0IHRoZSB2YWx1ZSBv ZiBhIGNvb2tpZSB3aXRoIHRoZSBnaXZlbiBuYW1lLgogKgogKiBAZXhhbXBsZSAk LmNvb2tpZSgndGhlX2Nvb2tpZScpOwogKiBAZGVzYyBHZXQgdGhlIHZhbHVlIG9m IGEgY29va2llLgogKgogKiBAcGFyYW0gU3RyaW5nIG5hbWUgVGhlIG5hbWUgb2Yg dGhlIGNvb2tpZS4KICogQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIGNvb2tpZS4K ICogQHR5cGUgU3RyaW5nCiAqCiAqIEBuYW1lICQuY29va2llCiAqIEBjYXQgUGx1 Z2lucy9Db29raWUKICogQGF1dGhvciBLbGF1cyBIYXJ0bC9rbGF1cy5oYXJ0bEBz dGlsYnVlcm8uZGUKICovCmpRdWVyeS5jb29raWUgPSBmdW5jdGlvbihuYW1lLCB2 YWx1ZSwgb3B0aW9ucykgewogICAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAndW5kZWZp bmVkJykgeyAvLyBuYW1lIGFuZCB2YWx1ZSBnaXZlbiwgc2V0IGNvb2tpZQogICAg ICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgIGlmICh2YWx1ZSA9 PT0gbnVsbCkgewogICAgICAgICAgICB2YWx1ZSA9ICcnOwogICAgICAgICAgICBv cHRpb25zID0gJC5leHRlbmQoe30sIG9wdGlvbnMpOyAvLyBjbG9uZSBvYmplY3Qg c2luY2UgaXQncyB1bmV4cGVjdGVkIGJlaGF2aW9yIGlmIHRoZSBleHBpcmVkIHBy b3BlcnR5IHdlcmUgY2hhbmdlZAogICAgICAgICAgICBvcHRpb25zLmV4cGlyZXMg PSAtMTsKICAgICAgICB9CiAgICAgICAgdmFyIGV4cGlyZXMgPSAnJzsKICAgICAg ICBpZiAob3B0aW9ucy5leHBpcmVzICYmICh0eXBlb2Ygb3B0aW9ucy5leHBpcmVz ID09ICdudW1iZXInIHx8IG9wdGlvbnMuZXhwaXJlcy50b1VUQ1N0cmluZykpIHsK ICAgICAgICAgICAgdmFyIGRhdGU7CiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0 aW9ucy5leHBpcmVzID09ICdudW1iZXInKSB7CiAgICAgICAgICAgICAgICBkYXRl ID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgICAgIGRhdGUuc2V0VGltZShkYXRl LmdldFRpbWUoKSArIChvcHRpb25zLmV4cGlyZXMgKiAyNCAqIDYwICogNjAgKiAx MDAwKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkYXRl ID0gb3B0aW9ucy5leHBpcmVzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGV4 cGlyZXMgPSAnOyBleHBpcmVzPScgKyBkYXRlLnRvVVRDU3RyaW5nKCk7IC8vIHVz ZSBleHBpcmVzIGF0dHJpYnV0ZSwgbWF4LWFnZSBpcyBub3Qgc3VwcG9ydGVkIGJ5 IElFCiAgICAgICAgfQogICAgICAgIC8vIE5PVEUgTmVlZGVkIHRvIHBhcmVudGhl c2l6ZSBvcHRpb25zLnBhdGggYW5kIG9wdGlvbnMuZG9tYWluCiAgICAgICAgLy8g aW4gdGhlIGZvbGxvd2luZyBleHByZXNzaW9ucywgb3RoZXJ3aXNlIHRoZXkgZXZh bHVhdGUgdG8gdW5kZWZpbmVkCiAgICAgICAgLy8gaW4gdGhlIHBhY2tlZCB2ZXJz aW9uIGZvciBzb21lIHJlYXNvbi4uLgogICAgICAgIHZhciBwYXRoID0gb3B0aW9u cy5wYXRoID8gJzsgcGF0aD0nICsgKG9wdGlvbnMucGF0aCkgOiAnJzsKICAgICAg ICB2YXIgZG9tYWluID0gb3B0aW9ucy5kb21haW4gPyAnOyBkb21haW49JyArIChv cHRpb25zLmRvbWFpbikgOiAnJzsKICAgICAgICB2YXIgc2VjdXJlID0gb3B0aW9u cy5zZWN1cmUgPyAnOyBzZWN1cmUnIDogJyc7CiAgICAgICAgZG9jdW1lbnQuY29v a2llID0gW25hbWUsICc9JywgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSwgZXhw aXJlcywgcGF0aCwgZG9tYWluLCBzZWN1cmVdLmpvaW4oJycpOwogICAgfSBlbHNl IHsgLy8gb25seSBuYW1lIGdpdmVuLCBnZXQgY29va2llCiAgICAgICAgdmFyIGNv b2tpZVZhbHVlID0gbnVsbDsKICAgICAgICBpZiAoZG9jdW1lbnQuY29va2llICYm IGRvY3VtZW50LmNvb2tpZSAhPSAnJykgewogICAgICAgICAgICB2YXIgY29va2ll cyA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpOwogICAgICAgICAgICBmb3Ig KHZhciBpID0gMDsgaSA8IGNvb2tpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAg ICAgICAgIHZhciBjb29raWUgPSBqUXVlcnkudHJpbShjb29raWVzW2ldKTsKICAg ICAgICAgICAgICAgIC8vIERvZXMgdGhpcyBjb29raWUgc3RyaW5nIGJlZ2luIHdp dGggdGhlIG5hbWUgd2Ugd2FudD8KICAgICAgICAgICAgICAgIGlmIChjb29raWUu c3Vic3RyaW5nKDAsIG5hbWUubGVuZ3RoICsgMSkgPT0gKG5hbWUgKyAnPScpKSB7 CiAgICAgICAgICAgICAgICAgICAgY29va2llVmFsdWUgPSBkZWNvZGVVUklDb21w b25lbnQoY29va2llLnN1YnN0cmluZyhuYW1lLmxlbmd0aCArIDEpKTsKICAgICAg ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gY29va2llVmFsdWU7CiAgICB9 Cn07 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=ege_new.js Content-Type: application/x-javascript; name=ege_new.js Content-Location: http://ege.edu.ru/common/js/ege_new.js Content-Transfer-Encoding: Base64 aWYod2luZG93ICE9IHdpbmRvdy5wYXJlbnQpCnsKCXdpbmRvdy5zdG9wKCk7Cn0K CmJyb3dzZXJOYW1lID0gbmF2aWdhdG9yLmFwcE5hbWU7CmJyb3dzZXJWZXIgPSBw YXJzZUludChuYXZpZ2F0b3IuYXBwVmVyc2lvbik7CnZhciBhZ2VudCA9IG5hdmln YXRvci51c2VyQWdlbnQ7CnZhciB1YSA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9M b3dlckNhc2UoKTsKdmFyIG1zaWVfdmVyID0gdWEuY2hhckF0KHVhLmluZGV4T2Yo J21zaWUnKSs1KTsKCgppZiAodWEuaW5kZXhPZignb3BlcmEnKSAhPSAnLTEnKSB7 Cglkb2N1bWVudC53cml0ZWxuKCI8bGluayByZWw9c3R5bGVzaGVldCB0eXBlPXRl eHQvY3NzIGhyZWY9XCIvY29tbW9uL2Nzcy9vcC5jc3NcIj4iKTsKfQoKaWYgKHVh LmluZGV4T2YoJ21zaWUnKSAhPSAnLTEnKSB7Cglkb2N1bWVudC53cml0ZWxuKCI8 bGluayByZWw9c3R5bGVzaGVldCB0eXBlPXRleHQvY3NzIGhyZWY9XCIvY29tbW9u L2Nzcy9pZV9hbGwuY3NzXCI+Iik7Cn0KaWYgKCh1YS5pbmRleE9mKCdtc2llJykg IT0gJy0xJykgJiYgKG1zaWVfdmVyID09IDUpKSB7IC8vIElFIDcuMAoJZG9jdW1l bnQud3JpdGVsbigiPGxpbmsgcmVsPXN0eWxlc2hlZXQgdHlwZT10ZXh0L2NzcyBo cmVmPVwiL2NvbW1vbi9jc3MvaWU1XzUuY3NzXCI+Iik7Cn0KaWYgKCh1YS5pbmRl eE9mKCdtc2llJykgIT0gJy0xJykgJiYgKG1zaWVfdmVyID09IDYpKSB7IC8vIElF IDcuMAoJZG9jdW1lbnQud3JpdGVsbigiPGxpbmsgcmVsPXN0eWxlc2hlZXQgdHlw ZT10ZXh0L2NzcyBocmVmPVwiL2NvbW1vbi9jc3MvaWU2LmNzc1wiPiIpOwp9Cmlm ICgodWEuaW5kZXhPZignbXNpZScpICE9ICctMScpICYmIChtc2llX3ZlciA9PSA3 KSkgeyAvLyBJRSA3LjAKCWRvY3VtZW50LndyaXRlbG4oIjxsaW5rIHJlbD1zdHls ZXNoZWV0IHR5cGU9dGV4dC9jc3MgaHJlZj1cIi9jb21tb24vY3NzL2llNy5jc3Nc Ij4iKTsKfQoKCmlmICgodWEuaW5kZXhPZignbXNpZScpICE9ICctMScpICYmICht c2llX3ZlciA9PSA4KSkgeyAgLy8gSUUgOC4wCglkb2N1bWVudC53cml0ZWxuKCI8 bGluayByZWw9c3R5bGVzaGVldCB0eXBlPXRleHQvY3NzIGhyZWY9XCIvY29tbW9u L2Nzcy9pZTguY3NzXCI+Iik7Cn0KCmlmICgodWEuaW5kZXhPZignbXNpZScpICE9 ICctMScpICYmIChtc2llX3ZlciA9PSA5KSkgeyAgLy8gSUUgOS4wCglkb2N1bWVu dC53cml0ZWxuKCI8bGluayByZWw9c3R5bGVzaGVldCB0eXBlPXRleHQvY3NzIGhy ZWY9XCIvY29tbW9uL2Nzcy9pZTkuY3NzXCI+Iik7Cn0KaWYgKCgkLmJyb3dzZXIu bXNpZSkgJiYgKCQuYnJvd3Nlci52ZXJzaW9uID09ICcxMC4wJykpIHsKCQkkKCdo ZWFkJykuYXBwZW5kKCI8bGluayByZWw9c3R5bGVzaGVldCB0eXBlPXRleHQvY3Nz IGhyZWY9XCIvY29tbW9uL2Nzcy9pZTEwLmNzc1wiPiIpOwoJfQoKaWYgKCh1YS5p bmRleE9mKCdtc2llJykgIT0gJy0xJykgJiYgKG1zaWVfdmVyIDwgOSkpIHsKCWRv Y3VtZW50LndyaXRlbG4oIjxsaW5rIHJlbD1zdHlsZXNoZWV0IHR5cGU9dGV4dC9j c3MgaHJlZj1cIi9jb21tb24vY3NzL2llLmNzc1wiPiIpOwp9CgoKaWYgKChicm93 c2VyVmVyID4zKSAmJihicm93c2VyTmFtZSA9PSAiTmV0c2NhcGUiKSkgewoJZG9j dW1lbnQud3JpdGVsbigiPGxpbmsgcmVsPXN0eWxlc2hlZXQgdHlwZT10ZXh0L2Nz cyBocmVmPVwiL2NvbW1vbi9jc3Mvbm4uY3NzXCI+Iik7Cn0KCmlmICh1YS5pbmRl eE9mKCdjaHJvbWUnKSAhPSAnLTEnKSB7Cglkb2N1bWVudC53cml0ZWxuKCI8bGlu ayByZWw9c3R5bGVzaGVldCB0eXBlPXRleHQvY3NzIGhyZWY9XCIvY29tbW9uL2Nz cy9jaHJvbWUuY3NzXCI+Iik7Cn0KCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9u KCl7Cgl2YXIgZGV2aWNlQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93 ZXJDYXNlKCk7CiAgICB2YXIgYWdlbnRJRCA9IGRldmljZUFnZW50Lm1hdGNoKC8o aXBob25lfGlwb2R8aXBhZCkvKTsKCWlmIChhZ2VudElEKSB7CgkJJCgnYm9keScp LmFkZENsYXNzKCdpb3MnKTsgCgl9OwoKCXZhciB1YSA9IG5hdmlnYXRvci51c2Vy QWdlbnQudG9Mb3dlckNhc2UoKTsKCXZhciBpc0FuZHJvaWQgPSB1YS5pbmRleE9m KCdhbmRyb2lkJykgPiAtMTsKCWlmKGlzQW5kcm9pZCkgewoJICAkKCdib2R5Jyku YWRkQ2xhc3MoJ2FuZHJvaWQnKTsKCX0JCn0pOwoKJChkb2N1bWVudCkucmVhZHko ZnVuY3Rpb24oKXsKCQl2YXIgdGFiQ29udGFpbmVycyA9ICQoJyNhbm9uc19uZXdz ID4gZGl2Jyk7CgkJdGFiQ29udGFpbmVycy5oaWRlKCkuZmlsdGVyKCc6Zmlyc3Qn KS5zaG93KCk7CgkJJCgnI2Fub25zX21lbnUgYScpLmNsaWNrKGZ1bmN0aW9uICgp IHsKCQkJdGFiQ29udGFpbmVycy5oaWRlKCk7CgkJCXRhYkNvbnRhaW5lcnMuZmls dGVyKHRoaXMuaGFzaCkuZmFkZUluKCk7CgkJCSQoJyNhbm9uc19tZW51IGEnKS5y ZW1vdmVDbGFzcygnc2VsZWN0ZWQnKTsKCQkJJCh0aGlzKS5hZGRDbGFzcygnc2Vs ZWN0ZWQnKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0pLmZpbHRlcignOmZpcnN0Jyku Y2xpY2soKTsKCgkJdmFyIHRhYkNvbnRhaW5lcnMxID0gJCgnI2Fub25zX25ld3My ID4gZGl2Jyk7CgkJLy90YWJDb250YWluZXJzMS5oaWRlKCkuZmlsdGVyKCc6Zmly c3QnKS5zaG93KCk7CgkJJCgnI2Fub25zX21lbnUyIGEnKS5jbGljayhmdW5jdGlv biAoKSB7CgkJCXRhYkNvbnRhaW5lcnMxLmhpZGUoKTsKCQkJdGFiQ29udGFpbmVy czEuZmlsdGVyKHRoaXMuaGFzaCkuZmFkZUluKCk7CgkJCSQoJyNhbm9uc19tZW51 MiBhJykucmVtb3ZlQ2xhc3MoJ3NlbGVjdGVkJyk7CgkJCSQodGhpcykuYWRkQ2xh c3MoJ3NlbGVjdGVkJyk7CgkJCXJldHVybiBmYWxzZTsKCQl9KS5maWx0ZXIoJzpm aXJzdCcpLmNsaWNrKCk7CgkJLy8kKCcjbmV3czFfdGFiJykuc2hvdygpOwoKCQkv KgoJCXZhciB0YWJDb250YWluZXJzMiA9ICQoJyNtYWluX3ZvdGVfYm9keSA+IGRp dicpOwoJCXRhYkNvbnRhaW5lcnMyLmhpZGUoKS5maWx0ZXIoJzpmaXJzdCcpLnNo b3coKTsKCQkkKCcjdm90ZV9tZW51IGEnKS5jbGljayhmdW5jdGlvbiAoKSB7CgkJ CXRhYkNvbnRhaW5lcnMyLmhpZGUoKTsKCQkJdGFiQ29udGFpbmVyczIuZmlsdGVy KHRoaXMuaGFzaCkuZmFkZUluKCk7CgkJCSQoJyN2b3RlX21lbnUgYScpLnJlbW92 ZUNsYXNzKCdzZWxlY3RlZCcpOwoJCQkkKHRoaXMpLmFkZENsYXNzKCdzZWxlY3Rl ZCcpOwoJCQlyZXR1cm4gZmFsc2U7CgkJfSkuZmlsdGVyKCc6Zmlyc3QnKS5jbGlj aygpOwoJCSovCgkJLyoKCQl2YXIgdGFiQ29udGFpbmVyczMgPSAkKCcjbWFpbl9i bG9ja18yX2JvZHkgPiBkaXYnKTsKCQl0YWJDb250YWluZXJzMy5oaWRlKCkuZmls dGVyKCc6Zmlyc3QnKS5zaG93KCk7CgkJJCgnI21haW5fYmxvY2tfMl9tZW51IGEn KS5jbGljayhmdW5jdGlvbiAoKSB7CgkJCXRhYkNvbnRhaW5lcnMzLmhpZGUoKTsK CQkJdGFiQ29udGFpbmVyczMuZmlsdGVyKHRoaXMuaGFzaCkuZmFkZUluKCk7CgkJ CSQoJyNtYWluX2Jsb2NrXzJfbWVudSBhJykucmVtb3ZlQ2xhc3MoJ3NlbGVjdGVk Jyk7CgkJCSQodGhpcykuYWRkQ2xhc3MoJ3NlbGVjdGVkJyk7CgkJCXJldHVybiBm YWxzZTsKCQl9KS5maWx0ZXIoJzpmaXJzdCcpLmNsaWNrKCk7CgkJKi8KCgp9KTsK CgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewoKCSQoIi5tZW51X3RvcCAu bWVudV9tIikuaG92ZXIoZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLmZpbmQo ImRpdi5tZW51X3ZpZXciKS5jc3MoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpOwoJ CSQodGhpcykuYWRkQ2xhc3MoJ2hvY2wnKTsKICAgIH0sIGZ1bmN0aW9uKCl7CiAg ICAgICAgJCh0aGlzKS5maW5kKCJkaXYubWVudV92aWV3IikuY3NzKCd2aXNpYmls aXR5JywgJ2hpZGRlbicpOwoJCSQodGhpcykucmVtb3ZlQ2xhc3MoJ2hvY2wnKTsK ICAgIH0pOwoKfSk7CgoKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKCiAg ICAgICAkKCcuY2xpZW50X3RvcF9lbnRlciAuYTEnKS5jbGljayhmdW5jdGlvbigp ewogICAgICAgICAgICQoJy5jbGllbnRfdG9wX2JsJykuc2xpZGVUb2dnbGUoJ2Zh c3QnKTsKCQkgICAgJCgnLnJlY2VwLWJsb2NrJykuc2xpZGVVcCgnc2hvdycpOwoJ CSAgIC8vJCh0aGlzKS50b2dnbGVDbGFzcygnYTFfc2VsJyk7CiAgICAgICB9KTsK CSAgICQoJy5yZWNlcF9hJykuY2xpY2soZnVuY3Rpb24oKXsKICAgICAgICAgICAk KCcucmVjZXAtYmxvY2snKS5zbGlkZVRvZ2dsZSgnZmFzdCcpOwoJCSAgICQoJy5j bGllbnRfdG9wX2JsJykuc2xpZGVVcCgnc2hvdycpOwogICAgICAgfSk7Cn0pOwoK CgoKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKIAkkKCIudGFibGUgdHIi KS5tb3VzZW92ZXIoZnVuY3Rpb24oKSB7CiAJCSQodGhpcykuYWRkQ2xhc3MoIm92 aG92Iik7CiAJfSk7CgogCSQoIi50YWJsZSB0ciIpLm1vdXNlb3V0KGZ1bmN0aW9u KCkgewogCQkkKHRoaXMpLnJlbW92ZUNsYXNzKCJvdmhvdiIpOwogCX0pOwoKCSQo Ii50YWJsZSB0cjpldmVuIikuYWRkQ2xhc3MoImFsdCIpOwoJJCgiLnRhYmxlIHRy Om9kZCIpLmFkZENsYXNzKCJvdmVyIik7CiB9KTsKCgokKGRvY3VtZW50KS5yZWFk eShmdW5jdGlvbigpewogCSQoIi50YWJsZV9leGFtIHRyIikubW91c2VvdmVyKGZ1 bmN0aW9uKCkgewogCQkkKHRoaXMpLmFkZENsYXNzKCJvdmhvdiIpOwogCX0pOwoK IAkkKCIudGFibGVfZXhhbSB0ciIpLm1vdXNlb3V0KGZ1bmN0aW9uKCkgewogCQkk KHRoaXMpLnJlbW92ZUNsYXNzKCJvdmhvdiIpOwogCX0pOwoKIAkkKCIudGFibGVf ZXhhbSB0cjpldmVuIikuYWRkQ2xhc3MoImFsdCIpOwoJJCgiLnRhYmxlX2V4YW0g dHI6b2RkIikuYWRkQ2xhc3MoIm92ZXIiKTsKIH0pOwoKCgokKGRvY3VtZW50KS5y ZWFkeShmdW5jdGlvbigpewogICAgICAgJCgnLmNyZWF0XzEgLmRpdjEnKS5jbGlj ayhmdW5jdGlvbigpewogICAgICAgICAgICQoJy5jcmVhdF8yJykuc2xpZGVUb2dn bGUoJ2Zhc3QnKTsKCSAgICAgICAkKCcuY3JlYXRfMSAuZGl2MScpLnRvZ2dsZUNs YXNzKCdkaXYyJyk7CiAgICAgICB9KTsKICAgICAgICQoJy5jcmVhdF8zIC5jcmVh dF9jbG9zZScpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgJCgnLmNyZWF0 XzInKS5zbGlkZVRvZ2dsZSgnZmFzdCcpOwoJICAgICAgICQoJy5jcmVhdF8xIC5k aXYxJykudG9nZ2xlQ2xhc3MoJ2RpdjInKTsKICAgICAgIH0pOwogICAgICAgJCgn LmNyZWF0XzMgLmJ0bjInKS5jbGljayhmdW5jdGlvbigpewogICAgICAgICAgICQo Jy5jcmVhdF8zJykuYWRkQ2xhc3MoJ2NyZWF0XzUnKTsKCQkgICAkLmNvb2tpZSgn Y3JlYXQnLCAnYnRuMicpOwogICAgICAgfSk7CiAgICAgICAkKCcuY3JlYXRfMyAu YnRuMScpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgJCgnLmNyZWF0XzMn KS5hZGRDbGFzcygnY3JlYXRfNCcpOwoJCSAgICQuY29va2llKCdjcmVhdCcsICdi dG4xJyk7CiAgICAgICB9KTsKCgkJaWYgKCQuY29va2llKCdjcmVhdCcpID09ICdi dG4xJykKCQl7CgkJCS8vJCgnLmNyZWF0XzMnKS5hZGRDbGFzcygnY3JlYXRfNCcp OwoJCX0KCQlpZiAoJC5jb29raWUoJ2NyZWF0JykgPT0gJ2J0bjInKQoJCXsKCQkJ Ly8kKCcuY3JlYXRfMycpLmFkZENsYXNzKCdjcmVhdF81Jyk7CgkJfQp9KTsKCgoK CgoKCiAgIGpRdWVyeShmdW5jdGlvbiAoKQogICAgewogICAgICAgalF1ZXJ5KCIu ZXhhbXBsZTYiKS5jb2xvcmJveCh7aWZyYW1lOnRydWUsIHNjcm9sbGluZzpmYWxz ZSwgaW5uZXJXaWR0aDo3NzAsIGlubmVySGVpZ2h0OjcwMH0pOwogICAgfSkK ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=ege_second.js Content-Type: application/x-javascript; name=ege_second.js Content-Location: http://ege.edu.ru/common/js/ege_second.js Content-Transfer-Encoding: Base64 Cgp2YXIgU2xpZGVyTGlzdD1uZXcgQ2xhc3MoewoJaW5pdGlhbGl6ZTogZnVuY3Rp b24oZWwpIHsKCQl2YXIgZWw9JCQoZWwpOyB2YXIgZGl2PSQkKGVsKS5nZXRFbGVt ZW50KCJkaXYiKTsgdmFyIGZ4PW5ldyBBcnJheSgpOwoJCXZhciBsb2M9d2luZG93 LmxvY2F0aW9uLmhyZWY7CglpZiAobG9jLmluZGV4T2YoIiMiKT4tMSkgeyBuPWxv Yy5pbmRleE9mKCIjIik7IGxvYz1sb2Muc3Vic3RyaW5nKG4rMSk7IH0KCQlkaXYu ZWFjaChmdW5jdGlvbihpdGVtLGluZGV4KSB7CgkJCWlmIChpdGVtIT1udWxsKSB7 CgkJCQlpdGVtLnNldEF0dHJpYnV0ZSgidGlkIixpbmRleCk7CgkJCQlpdGVtLnNl dEF0dHJpYnV0ZSgiY2xhc3MiLCdzbGlkZXJfZGl2Jyk7CgkJCQlmeFtpbmRleF09 bmV3IEZ4LlNsaWRlKGl0ZW0se29uQ29tcGxldGU6ZnVuY3Rpb24oZWxlbSkgewoJ CQkJCWlkPWVsZW0uZ2V0QXR0cmlidXRlKCJ0aWQiKTsgZWxbaWRdLnRvZ2dsZUNs YXNzKCJhY3RpdiIpOwoJCQkJfX0pOwoJCQkJZnhbaW5kZXhdLmhpZGUoKTsKCQkJ fQoJCX0pOwoJCWVsLmVhY2goZnVuY3Rpb24oaXRlbSxpbmRleCkgewoJCQlsaW5r PWl0ZW0uZ2V0RWxlbWVudCgiYTpmaXJzdC1jaGlsZCIpOwoJCQlsaW5rLnNldEF0 dHJpYnV0ZSgidGlkIixpbmRleCk7CgkJCWxpbmsuc2V0QXR0cmlidXRlKCJjbGFz cyIsImFfZmlyc3QiKTsKCQkJaWYgKGl0ZW0uaGFzQ2xhc3MoIm8iKSkgeyBpZD1p dGVtLmdldEVsZW1lbnQoImEiKS5nZXRBdHRyaWJ1dGUoInRpZCIpOyBmeFtpZF0u dG9nZ2xlKCk7IH0KCQkJaWYgKGl0ZW0uZ2V0QXR0cmlidXRlKCJpbmQiKT09bG9j KSB7IGlkPWl0ZW0uZ2V0RWxlbWVudCgiYSIpLmdldEF0dHJpYnV0ZSgidGlkIik7 IGZ4W2lkXS50b2dnbGUoKTsgfQoJCQlsaW5rLmFkZEV2ZW50KCJjbGljayIsZnVu Y3Rpb24oZSkgewoJCQkJZS5zdG9wKCk7IGlkPXRoaXMuZ2V0QXR0cmlidXRlKCJ0 aWQiKTsKCQkJCWZ4W2lkXS50b2dnbGUoKTsKCQkJfSk7CgkJfSk7Cgl9Cn0pOwoK CndpbmRvdy5hZGRFdmVudCgiZG9tcmVhZHkiLGZ1bmN0aW9uKCkgewoJdmFyIHNs PW5ldyBTbGlkZXJMaXN0KCIuc2xpZGVyID4gbGkiKTsKfSk7CgoKCgo= ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=custom-form-elements.js Content-Type: application/x-javascript; name=custom-form-elements.js Content-Location: http://ege.edu.ru/common/js/custom-form-elements.js Content-Transfer-Encoding: Base64 LyoKCkNVU1RPTSBGT1JNIEVMRU1FTlRTCgpDcmVhdGVkIGJ5IFJ5YW4gRmFpdAp3 d3cucnlhbmZhaXQuY29tCgpUaGUgb25seSB0aGluZ3MgeW91IG1heSBuZWVkIHRv IGNoYW5nZSBpbiB0aGlzIGZpbGUgYXJlIHRoZSBmb2xsb3dpbmcKdmFyaWFibGVz OiBjaGVja2JveEhlaWdodCwgcmFkaW9IZWlnaHQgYW5kIHNlbGVjdFdpZHRoIChs aW5lcyAyNCwgMjUsIDI2KQoKVGhlIG51bWJlcnMgeW91IHNldCBmb3IgY2hlY2ti b3hIZWlnaHQgYW5kIHJhZGlvSGVpZ2h0IHNob3VsZCBiZSBvbmUgcXVhcnRlcgpv ZiB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSBpbWFnZSB3YW50IHRvIHVzZSBmb3Ig Y2hlY2tib3hlcyBhbmQgcmFkaW8KYnV0dG9ucy4gQm90aCBpbWFnZXMgc2hvdWxk IGNvbnRhaW4gdGhlIGZvdXIgc3RhZ2VzIG9mIGJvdGggaW5wdXRzIHN0YWNrZWQK b24gdG9wIG9mIGVhY2ggb3RoZXIgaW4gdGhpcyBvcmRlcjogdW5jaGVja2VkLCB1 bmNoZWNrZWQtY2xpY2tlZCwgY2hlY2tlZCwKY2hlY2tlZC1jbGlja2VkLgoKWW91 IG1heSBuZWVkIHRvIGFkanVzdCB5b3VyIGltYWdlcyBhIGJpdCBpZiB0aGVyZSBp cyBhIHNsaWdodCB2ZXJ0aWNhbAptb3ZlbWVudCBkdXJpbmcgdGhlIGRpZmZlcmVu dCBzdGFnZXMgb2YgdGhlIGJ1dHRvbiBhY3RpdmF0aW9uLgoKVGhlIHZhbHVlIG9m IHNlbGVjdFdpZHRoIHNob3VsZCBiZSB0aGUgd2lkdGggb2YgeW91ciBzZWxlY3Qg bGlzdCBpbWFnZS4KClZpc2l0IGh0dHA6Ly9yeWFuZmFpdC5jb20vIGZvciBtb3Jl IGluZm9ybWF0aW9uLgoKKi8KCnZhciBjaGVja2JveEhlaWdodCA9ICIyNSI7CnZh ciByYWRpb0hlaWdodCA9ICIyNSI7CnZhciBzZWxlY3RXaWR0aCA9ICIxOTAiOwoK Ci8qIE5vIG5lZWQgdG8gY2hhbmdlIGFueXRoaW5nIGFmdGVyIHRoaXMgKi8KCgpk b2N1bWVudC53cml0ZSgnPHN0eWxlIHR5cGU9InRleHQvY3NzIj5pbnB1dC5zdHls ZWQgeyBkaXNwbGF5OiBub25lOyB9IHNlbGVjdC5zdHlsZWQgeyBwb3NpdGlvbjog cmVsYXRpdmU7IHdpZHRoOiAnICsgc2VsZWN0V2lkdGggKyAncHg7IG9wYWNpdHk6 IDA7IGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsgei1pbmRleDogNTsgfSAuZGlz YWJsZWQgeyBvcGFjaXR5OiAwLjU7IGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7 IH08L3N0eWxlPicpOwoKdmFyIEN1c3RvbSA9IHsKCWluaXQ6IGZ1bmN0aW9uKCkg ewoJCXZhciBpbnB1dHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi aW5wdXQiKSwgc3BhbiA9IEFycmF5KCksIHRleHRub2RlLCBvcHRpb24sIGFjdGl2 ZTsKCQlmb3IoYSA9IDA7IGEgPCBpbnB1dHMubGVuZ3RoOyBhKyspIHsKCQkJaWYo KGlucHV0c1thXS50eXBlID09ICJjaGVja2JveCIgfHwgaW5wdXRzW2FdLnR5cGUg PT0gInJhZGlvIikgJiYgaW5wdXRzW2FdLmNsYXNzTmFtZSA9PSAic3R5bGVkIikg ewoJCQkJc3BhblthXSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK CQkJCXNwYW5bYV0uY2xhc3NOYW1lID0gaW5wdXRzW2FdLnR5cGU7CgoJCQkJaWYo aW5wdXRzW2FdLmNoZWNrZWQgPT0gdHJ1ZSkgewoJCQkJCWlmKGlucHV0c1thXS50 eXBlID09ICJjaGVja2JveCIpIHsKCQkJCQkJcG9zaXRpb24gPSAiMCAtIiArIChj aGVja2JveEhlaWdodCoyKSArICJweCI7CgkJCQkJCXNwYW5bYV0uc3R5bGUuYmFj a2dyb3VuZFBvc2l0aW9uID0gcG9zaXRpb247CgkJCQkJfSBlbHNlIHsKCQkJCQkJ cG9zaXRpb24gPSAiMCAtIiArIChyYWRpb0hlaWdodCoyKSArICJweCI7CgkJCQkJ CXNwYW5bYV0uc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uID0gcG9zaXRpb247CgkJ CQkJfQoJCQkJfQoJCQkJaW5wdXRzW2FdLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3Jl KHNwYW5bYV0sIGlucHV0c1thXSk7CgkJCQlpbnB1dHNbYV0ub25jaGFuZ2UgPSBD dXN0b20uY2xlYXI7CgkJCQlpZighaW5wdXRzW2FdLmdldEF0dHJpYnV0ZSgiZGlz YWJsZWQiKSkgewoJCQkJCXNwYW5bYV0ub25tb3VzZWRvd24gPSBDdXN0b20ucHVz aGVkOwoJCQkJCXNwYW5bYV0ub25tb3VzZXVwID0gQ3VzdG9tLmNoZWNrOwoJCQkJ fSBlbHNlIHsKCQkJCQlzcGFuW2FdLmNsYXNzTmFtZSA9IHNwYW5bYV0uY2xhc3NO YW1lICs9ICIgZGlzYWJsZWQiOwoJCQkJfQoJCQl9CgkJfQoJCWlucHV0cyA9IGRv Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzZWxlY3QiKTsKCQlmb3IoYSA9 IDA7IGEgPCBpbnB1dHMubGVuZ3RoOyBhKyspIHsKCQkJaWYoaW5wdXRzW2FdLmNs YXNzTmFtZSA9PSAic3R5bGVkIikgewoJCQkJb3B0aW9uID0gaW5wdXRzW2FdLmdl dEVsZW1lbnRzQnlUYWdOYW1lKCJvcHRpb24iKTsKCQkJCWFjdGl2ZSA9IG9wdGlv blswXS5jaGlsZE5vZGVzWzBdLm5vZGVWYWx1ZTsKCQkJCXRleHRub2RlID0gZG9j dW1lbnQuY3JlYXRlVGV4dE5vZGUoYWN0aXZlKTsKCQkJCWZvcihiID0gMDsgYiA8 IG9wdGlvbi5sZW5ndGg7IGIrKykgewoJCQkJCWlmKG9wdGlvbltiXS5zZWxlY3Rl ZCA9PSB0cnVlKSB7CgkJCQkJCXRleHRub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4 dE5vZGUob3B0aW9uW2JdLmNoaWxkTm9kZXNbMF0ubm9kZVZhbHVlKTsKCQkJCQl9 CgkJCQl9CgkJCQlzcGFuW2FdID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh biIpOwoJCQkJc3BhblthXS5jbGFzc05hbWUgPSAic2VsZWN0IjsKCQkJCXNwYW5b YV0uaWQgPSAic2VsZWN0IiArIGlucHV0c1thXS5uYW1lOwoJCQkJc3BhblthXS5h cHBlbmRDaGlsZCh0ZXh0bm9kZSk7CgkJCQlpbnB1dHNbYV0ucGFyZW50Tm9kZS5p bnNlcnRCZWZvcmUoc3BhblthXSwgaW5wdXRzW2FdKTsKCQkJCWlmKCFpbnB1dHNb YV0uZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKSB7CgkJCQkJaW5wdXRzW2FdLm9u Y2hhbmdlID0gQ3VzdG9tLmNob29zZTsKCQkJCX0gZWxzZSB7CgkJCQkJaW5wdXRz W2FdLnByZXZpb3VzU2libGluZy5jbGFzc05hbWUgPSBpbnB1dHNbYV0ucHJldmlv dXNTaWJsaW5nLmNsYXNzTmFtZSArPSAiIGRpc2FibGVkIjsKCQkJCX0KCQkJfQoJ CX0KCQlkb2N1bWVudC5vbm1vdXNldXAgPSBDdXN0b20uY2xlYXI7Cgl9LAoJcHVz aGVkOiBmdW5jdGlvbigpIHsKCQllbGVtZW50ID0gdGhpcy5uZXh0U2libGluZzsK CQlpZihlbGVtZW50LmNoZWNrZWQgPT0gdHJ1ZSAmJiBlbGVtZW50LnR5cGUgPT0g ImNoZWNrYm94IikgewoJCQl0aGlzLnN0eWxlLmJhY2tncm91bmRQb3NpdGlvbiA9 ICIwIC0iICsgY2hlY2tib3hIZWlnaHQqMyArICJweCI7CgkJfSBlbHNlIGlmKGVs ZW1lbnQuY2hlY2tlZCA9PSB0cnVlICYmIGVsZW1lbnQudHlwZSA9PSAicmFkaW8i KSB7CgkJCXRoaXMuc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uID0gIjAgLSIgKyBy YWRpb0hlaWdodCozICsgInB4IjsKCQl9IGVsc2UgaWYoZWxlbWVudC5jaGVja2Vk ICE9IHRydWUgJiYgZWxlbWVudC50eXBlID09ICJjaGVja2JveCIpIHsKCQkJdGhp cy5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24gPSAiMCAtIiArIGNoZWNrYm94SGVp Z2h0ICsgInB4IjsKCQl9IGVsc2UgewoJCQl0aGlzLnN0eWxlLmJhY2tncm91bmRQ b3NpdGlvbiA9ICIwIC0iICsgcmFkaW9IZWlnaHQgKyAicHgiOwoJCX0KCX0sCglj aGVjazogZnVuY3Rpb24oKSB7CgkJZWxlbWVudCA9IHRoaXMubmV4dFNpYmxpbmc7 CgkJaWYoZWxlbWVudC5jaGVja2VkID09IHRydWUgJiYgZWxlbWVudC50eXBlID09 ICJjaGVja2JveCIpIHsKCQkJdGhpcy5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24g PSAiMCAwIjsKCQkJZWxlbWVudC5jaGVja2VkID0gZmFsc2U7CgkJfSBlbHNlIHsK CQkJaWYoZWxlbWVudC50eXBlID09ICJjaGVja2JveCIpIHsKCQkJCXRoaXMuc3R5 bGUuYmFja2dyb3VuZFBvc2l0aW9uID0gIjAgLSIgKyBjaGVja2JveEhlaWdodCoy ICsgInB4IjsKCQkJfSBlbHNlIHsKCQkJCXRoaXMuc3R5bGUuYmFja2dyb3VuZFBv c2l0aW9uID0gIjAgLSIgKyByYWRpb0hlaWdodCoyICsgInB4IjsKCQkJCWdyb3Vw ID0gdGhpcy5uZXh0U2libGluZy5uYW1lOwoJCQkJaW5wdXRzID0gZG9jdW1lbnQu Z2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iik7CgkJCQlmb3IoYSA9IDA7IGEg PCBpbnB1dHMubGVuZ3RoOyBhKyspIHsKCQkJCQlpZihpbnB1dHNbYV0ubmFtZSA9 PSBncm91cCAmJiBpbnB1dHNbYV0gIT0gdGhpcy5uZXh0U2libGluZykgewoJCQkJ CQlpbnB1dHNbYV0ucHJldmlvdXNTaWJsaW5nLnN0eWxlLmJhY2tncm91bmRQb3Np dGlvbiA9ICIwIDAiOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQllbGVtZW50LmNoZWNr ZWQgPSB0cnVlOwoJCX0KCX0sCgljbGVhcjogZnVuY3Rpb24oKSB7CgkJaW5wdXRz ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iik7CgkJZm9y KHZhciBiID0gMDsgYiA8IGlucHV0cy5sZW5ndGg7IGIrKykgewoJCQlpZihpbnB1 dHNbYl0udHlwZSA9PSAiY2hlY2tib3giICYmIGlucHV0c1tiXS5jaGVja2VkID09 IHRydWUgJiYgaW5wdXRzW2JdLmNsYXNzTmFtZSA9PSAic3R5bGVkIikgewoJCQkJ aW5wdXRzW2JdLnByZXZpb3VzU2libGluZy5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRp b24gPSAiMCAtIiArIGNoZWNrYm94SGVpZ2h0KjIgKyAicHgiOwoJCQl9IGVsc2Ug aWYoaW5wdXRzW2JdLnR5cGUgPT0gImNoZWNrYm94IiAmJiBpbnB1dHNbYl0uY2xh c3NOYW1lID09ICJzdHlsZWQiKSB7CgkJCQlpbnB1dHNbYl0ucHJldmlvdXNTaWJs aW5nLnN0eWxlLmJhY2tncm91bmRQb3NpdGlvbiA9ICIwIDAiOwoJCQl9IGVsc2Ug aWYoaW5wdXRzW2JdLnR5cGUgPT0gInJhZGlvIiAmJiBpbnB1dHNbYl0uY2hlY2tl ZCA9PSB0cnVlICYmIGlucHV0c1tiXS5jbGFzc05hbWUgPT0gInN0eWxlZCIpIHsK CQkJCWlucHV0c1tiXS5wcmV2aW91c1NpYmxpbmcuc3R5bGUuYmFja2dyb3VuZFBv c2l0aW9uID0gIjAgLSIgKyByYWRpb0hlaWdodCoyICsgInB4IjsKCQkJfSBlbHNl IGlmKGlucHV0c1tiXS50eXBlID09ICJyYWRpbyIgJiYgaW5wdXRzW2JdLmNsYXNz TmFtZSA9PSAic3R5bGVkIikgewoJCQkJaW5wdXRzW2JdLnByZXZpb3VzU2libGlu Zy5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24gPSAiMCAwIjsKCQkJfQoJCX0KCX0s CgljaG9vc2U6IGZ1bmN0aW9uKCkgewoJCW9wdGlvbiA9IHRoaXMuZ2V0RWxlbWVu dHNCeVRhZ05hbWUoIm9wdGlvbiIpOwoJCWZvcihkID0gMDsgZCA8IG9wdGlvbi5s ZW5ndGg7IGQrKykgewoJCQlpZihvcHRpb25bZF0uc2VsZWN0ZWQgPT0gdHJ1ZSkg ewoJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlbGVjdCIgKyB0aGlzLm5h bWUpLmNoaWxkTm9kZXNbMF0ubm9kZVZhbHVlID0gb3B0aW9uW2RdLmNoaWxkTm9k ZXNbMF0ubm9kZVZhbHVlOwoJCQl9CgkJfQoJfQp9CgoKCmpRdWVyeShkb2N1bWVu dCkucmVhZHkoZnVuY3Rpb24oKSB7CgoJCQogICAgICAgIHZhciBmaWxlSW5wdXQg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnRmlsZTEnKTsKICAgICAgICB2YXIg ZmlsZU5hbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAg ICBmaWxlTmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIGZpbGVO YW1lLnN0eWxlLmJhY2tncm91bmQgPSAndXJsKGltYWdlcy9pY29ucy5wbmcpJzsK ICAgICAgICB2YXIgYWN0aXZlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgnZGl2Jyk7CiAgICAgICAgdmFyIGJiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgnZGl2Jyk7CiAgICAgICAgdmFyIGJsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgnZGl2Jyk7CiAgICAgICAgZnVuY3Rpb24gV2luZG93T25Mb2FkKCkKICAgICAg ICB7CiAgICAgICAgICAgIHZhciB3cmFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ3dyYXBwZXInKTsKICAgICAgICAgICAgZmlsZU5hbWUuc2V0QXR0cmlidXRl KCdpZCcsJ0ZpbGVOYW1lJyk7CiAgICAgICAgICAgIGFjdGl2ZUJ1dHRvbi5zZXRB dHRyaWJ1dGUoJ2lkJywnYWN0aXZlQnJvd3NlQnV0dG9uJyk7CiAgICAgICAgICAg IGZpbGVJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICBmaWxlSW5wdXQub25j aGFuZ2UgPSBIYW5kbGVDaGFuZ2VzOwogICAgICAgICAgICBmaWxlSW5wdXQub25t b3VzZW92ZXIgPSBNYWtlQWN0aXZlOwogICAgICAgICAgICBmaWxlSW5wdXQub25t b3VzZW91dCA9IFVuTWFrZUFjdGl2ZTsKICAgICAgICAgICAgZmlsZUlucHV0LmNs YXNzTmFtZSA9ICdjdXN0b21GaWxlJzsKICAgICAgICAgICAgYmwuY2xhc3NOYW1l ID0gJ2Jsb2NrZXInOwogICAgICAgICAgICBiYi5jbGFzc05hbWUgPSAnZmFrZUJ1 dHRvbic7CiAgICAgICAgICAgIGFjdGl2ZUJ1dHRvbi5jbGFzc05hbWUgPSAnZmFr ZUJ1dHRvbic7CiAgICAgICAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoYmIpOwogICAg ICAgICAgICB3cmFwLmFwcGVuZENoaWxkKGJsKTsKICAgICAgICAgICAgCiAgICAg ICAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoYWN0aXZlQnV0dG9uKTsKICAgICAgICAg ICAgCiAgICAgICAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoZmlsZU5hbWUpOwogICAg ICAgICAgIAogICAgICAgICAgICAKICAgICAgICB9OwogICAgICAgIGZ1bmN0aW9u IEhhbmRsZUNoYW5nZXMoKQogICAgICAgIHsKICAgICAgICAgICAgZmlsZSA9IGZp bGVJbnB1dC52YWx1ZTsKICAgICAgICAgICAgcmVXaW4gPSAvLipcXCguKikvOwog ICAgICAgICAgICB2YXIgZmlsZVRpdGxlID0gZmlsZS5yZXBsYWNlKHJlV2luLCAi JDEiKTsgLy/i++To8ODl7CDt4Ofi4O3o5SD04Onr4AogICAgICAgICAgICByZVVu aXggPSAvLipcLyguKikvOwogICAgICAgICAgICBmaWxlVGl0bGUgPSBmaWxlVGl0 bGUucmVwbGFjZShyZVVuaXgsICIkMSIpOyAvL+L75Ojw4OXsIO3g5+Lg7ejlIPTg 6evgCiAgICAgICAgICAgIGZpbGVOYW1lLmlubmVySFRNTCA9IGZpbGVUaXRsZTsK ICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBSZWdFeEV4dCA9Ly4qXC4oLiop LzsKICAgICAgICAgICAgdmFyIGV4dCA9IGZpbGVUaXRsZS5yZXBsYWNlKFJlZ0V4 RXh0LCAiJDEiKTsvL+gg5ePuIPDg8fjo8OXt6OUKICAgICAgICAgICAgCiAgICAg ICAgICAgIHZhciBwb3M7CiAgICAgICAgICAgIGlmIChleHQpewogICAgICAgICAg ICAgICAgc3dpdGNoIChleHQudG9Mb3dlckNhc2UoKSkKICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdkb2MnOiBwb3MgPSAnMCc7IGJy ZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JtcCc6IHBvcyA9ICcxNic7 IGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgY2FzZSAnanBnJzogcG9zID0gJzMyJzsgYnJlYWs7CiAgICAgICAgICAgICAg ICAgICAgY2FzZSAnanBlZyc6IHBvcyA9ICczMic7IGJyZWFrOwogICAgICAgICAg ICAgICAgICAgIGNhc2UgJ3BuZyc6IHBvcyA9ICc0OCc7IGJyZWFrOwogICAgICAg ICAgICAgICAgICAgIGNhc2UgJ2dpZic6IHBvcyA9ICc2NCc7IGJyZWFrOwogICAg ICAgICAgICAgICAgICAgIGNhc2UgJ3BzZCc6IHBvcyA9ICc4MCc7IGJyZWFrOwog ICAgICAgICAgICAgICAgICAgIGNhc2UgJ21wMyc6IHBvcyA9ICc5Nic7IGJyZWFr OwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3dhdic6IHBvcyA9ICc5Nic7IGJy ZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ29nZyc6IHBvcyA9ICc5Nic7 IGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2F2aSc6IHBvcyA9ICcx MTInOyBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd3bXYnOiBwb3Mg PSAnMTEyJzsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmx2Jzog cG9zID0gJzExMic7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bk Zic6IHBvcyA9ICcxMjgnOyBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNl ICdleGUnOiBwb3MgPSAnMTQ0JzsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg Y2FzZSAndHh0JzogcG9zID0gJzE2MCc7IGJyZWFrOwogICAgICAgICAgICAgICAg ICAgIGRlZmF1bHQ6IHBvcyA9ICcxNzYnOyBicmVhazsKICAgICAgICAgICAgICAg IH07CiAgICAgICAgICAgICAgICBmaWxlTmFtZS5zdHlsZS5kaXNwbGF5ID0gJ2Js b2NrJzsKICAgICAgICAgICAgICAgIGZpbGVOYW1lLnN0eWxlLmJhY2tncm91bmQg PSAndXJsKGltYWdlcy9pY29ucy5wbmcpIG5vLXJlcGVhdCAwIC0nK3BvcysncHgn OwogICAgICAgICAgICB9OwogICAgICAgICAgICAKICAgICAgICB9OwogICAgICAg IGZ1bmN0aW9uIE1ha2VBY3RpdmUoKQogICAgICAgIHsKICAgICAgICAgICBhY3Rp dmVCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgfTsKICAg ICAgICBmdW5jdGlvbiBVbk1ha2VBY3RpdmUoKQogICAgICAgIHsKICAgICAgICAg ICAgYWN0aXZlQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAg fTsKCQoKCQl3aW5kb3cub25sb2FkPWZ1bmN0aW9uKCkgewoJCQlpZiAoalF1ZXJ5 KCdkaXYnKS5oYXNDbGFzcygiYXR0YWNoX2J1dHRvbiIpKSB7ICAgCgkJCQkgV2lu ZG93T25Mb2FkKCk7CgkJCX0KCQkJQ3VzdG9tLmluaXQoKTsKCQl9CgkJCgkKfSkK CgoKCgo= ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=colorbox.css Content-Type: text/css; name=colorbox.css Content-Location: http://ege.edu.ru/common/css/colorbox.css Content-Transfer-Encoding: 8bit /* ColorBox Core Style: The following CSS is consistent between example themes and should not be altered. */ #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9000; overflow:hidden;} #cboxOverlay{position:fixed; width:100%; height:100%;} #cboxMiddleLeft, #cboxBottomLeft{clear:left;} #cboxContent{position:relative;} #cboxLoadedContent{overflow:auto;} #cboxTitle{margin:0;} #cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; z-index: 10000;} #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;} .cboxPhoto{float:left; margin:auto; border:0; display:block;} .cboxIframe{width:100%; height:100%; display:block; border:0;} /* User Style: Change the following styles to modify the appearance of ColorBox. They are ordered & tabbed in a way that represents the nesting of the generated HTML. */ #cboxOverlay {background: none repeat scroll 0 0 #000;} /* {background:url(images/overlay.png) repeat 0 0;} */ #colorbox{} #cboxTopLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -100px 0;} #cboxTopRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -129px 0;} #cboxBottomLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -100px -29px;} #cboxBottomRight{width:21px; height:21px; /*background:url(images/controls.png) no-repeat -130px -29px;*/} #cboxMiddleLeft{width:21px; background:url(images/controls.png) 1px top repeat-y;} #cboxMiddleRight{width:21px; background:url(images/controls.png) right top repeat-y;} #cboxTopCenter{height:21px; background:url(images/border.png) 0 0 repeat-x;} #cboxBottomCenter{height:21px; background:url(images/border.png) 0 -29px repeat-x;} #cboxContent{background:#fff; } #cboxError{padding:50px; border:1px solid #ccc;} #cboxLoadedContent{margin-bottom:48px;} #cboxTitle{position:absolute; bottom:12px; left:8px; text-align:left; width:98%; color:#a90a2e; font-size:16px; font-weight:bold;} #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;} #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;} #cboxPrevious{position:absolute; bottom:0; left:0; background:url(images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;} #cboxPrevious.hover{background-position:-75px -25px;} #cboxNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;} #cboxNext.hover{background-position:-50px -25px;} #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;} #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;} #cboxClose{position:absolute; top:-20px; right:-22px; background:url(images/close.png) no-repeat 0px 0; width:25px; height:25px; text-indent:-9999px; z-index:9999;} /* The following fixes a problem where IE7+ replaces a PNG's alpha transparency with a black fill when an alpha filter (opacity change) is set on the element or ancestor element. */ .cboxIE #cboxTopLeft, .cboxIE #cboxTopCenter, .cboxIE #cboxTopRight, .cboxIE #cboxBottomLeft, .cboxIE #cboxBottomCenter, .cboxIE #cboxBottomRight, .cboxIE #cboxMiddleLeft, .cboxIE #cboxMiddleRight { // filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); } /* The following provides PNG transparency support for IE6 */ .cboxIE6 #cboxTopLeft{background:url(images/ie6/borderTopLeft.png);} .cboxIE6 #cboxTopCenter{background:url(images/ie6/borderTopCenter.png);} .cboxIE6 #cboxTopRight{background:url(images/ie6/borderTopRight.png);} .cboxIE6 #cboxBottomLeft{background:url(images/ie6/borderBottomLeft.png);} .cboxIE6 #cboxBottomCenter{background:url(images/ie6/borderBottomCenter.png);} .cboxIE6 #cboxBottomRight{background:url(images/ie6/borderBottomRight.png);} .cboxIE6 #cboxMiddleLeft{background:url(images/ie6/borderMiddleLeft.png);} .cboxIE6 #cboxMiddleRight{background:url(images/ie6/borderMiddleRight.png);} .cboxIE6 #cboxTopLeft, .cboxIE6 #cboxTopCenter, .cboxIE6 #cboxTopRight, .cboxIE6 #cboxBottomLeft, .cboxIE6 #cboxBottomCenter, .cboxIE6 #cboxBottomRight, .cboxIE6 #cboxMiddleLeft, .cboxIE6 #cboxMiddleRight { _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')"); } ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=jquery.colorbox.js Content-Type: application/x-javascript; name=jquery.colorbox.js Content-Location: http://ege.edu.ru/common/js/jquery.colorbox.js Content-Transfer-Encoding: Base64 Ly8gQ29sb3JCb3ggdjEuMy4xOS4zIC0galF1ZXJ5IGxpZ2h0Ym94IHBsdWdpbgov LyAoYykgMjAxMSBKYWNrIE1vb3JlIC0gamFja2xtb29yZS5jb20KLy8gTGljZW5z ZTogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5z ZS5waHAKKGZ1bmN0aW9uICgkLCBkb2N1bWVudCwgd2luZG93KSB7Cgl2YXIKCS8v IERlZmF1bHQgc2V0dGluZ3Mgb2JqZWN0LgkKCS8vIFNlZSBodHRwOi8vamFja2xt b29yZS5jb20vY29sb3Jib3ggZm9yIGRldGFpbHMuCglkZWZhdWx0cyA9IHsKCQl0 cmFuc2l0aW9uOiAiZWxhc3RpYyIsCgkJc3BlZWQ6IDMwMCwKCQl3aWR0aDogZmFs c2UsCgkJaW5pdGlhbFdpZHRoOiAiNjAwIiwKCQlpbm5lcldpZHRoOiBmYWxzZSwK CQltYXhXaWR0aDogZmFsc2UsCgkJaGVpZ2h0OiBmYWxzZSwKCQlpbml0aWFsSGVp Z2h0OiAiNDUwIiwKCQlpbm5lckhlaWdodDogZmFsc2UsCgkJbWF4SGVpZ2h0OiBm YWxzZSwKCQlzY2FsZVBob3RvczogdHJ1ZSwKCQlzY3JvbGxpbmc6IHRydWUsCgkJ aW5saW5lOiBmYWxzZSwKCQlodG1sOiBmYWxzZSwKCQlpZnJhbWU6IGZhbHNlLAoJ CWZhc3RJZnJhbWU6IHRydWUsCgkJcGhvdG86IGZhbHNlLAoJCWhyZWY6IGZhbHNl LAoJCXRpdGxlOiBmYWxzZSwKCQlyZWw6IGZhbHNlLAoJCW9wYWNpdHk6IDAuOSwK CQlwcmVsb2FkaW5nOiB0cnVlLAoKCQljdXJyZW50OiAiaW1hZ2Uge2N1cnJlbnR9 IG9mIHt0b3RhbH0iLAoJCXByZXZpb3VzOiAicHJldmlvdXMiLAoJCW5leHQ6ICJu ZXh0IiwKCQljbG9zZTogImNsb3NlIiwKCQl4aHJFcnJvcjogIlRoaXMgY29udGVu dCBmYWlsZWQgdG8gbG9hZC4iLAoJCWltZ0Vycm9yOiAiVGhpcyBpbWFnZSBmYWls ZWQgdG8gbG9hZC4iLAoKCQlvcGVuOiBmYWxzZSwKCQlyZXR1cm5Gb2N1czogdHJ1 ZSwKCQlyZXBvc2l0aW9uOiB0cnVlLAoJCWxvb3A6IHRydWUsCgkJc2xpZGVzaG93 OiBmYWxzZSwKCQlzbGlkZXNob3dBdXRvOiB0cnVlLAoJCXNsaWRlc2hvd1NwZWVk OiAyNTAwLAoJCXNsaWRlc2hvd1N0YXJ0OiAic3RhcnQgc2xpZGVzaG93IiwKCQlz bGlkZXNob3dTdG9wOiAic3RvcCBzbGlkZXNob3ciLAoJCW9uT3BlbjogZmFsc2Us CgkJb25Mb2FkOiBmYWxzZSwKCQlvbkNvbXBsZXRlOiBmYWxzZSwKCQlvbkNsZWFu dXA6IGZhbHNlLAoJCW9uQ2xvc2VkOiBmYWxzZSwKCQlvdmVybGF5Q2xvc2U6IHRy dWUsCQkKCQllc2NLZXk6IHRydWUsCgkJYXJyb3dLZXk6IHRydWUsCgkJdG9wOiBm YWxzZSwKCQlib3R0b206IGZhbHNlLAoJCWxlZnQ6IGZhbHNlLAoJCXJpZ2h0OiBm YWxzZSwKCQlmaXhlZDogZmFsc2UsCgkJZGF0YTogdW5kZWZpbmVkCgl9LAoJCgkv LyBBYnN0cmFjdGluZyB0aGUgSFRNTCBhbmQgZXZlbnQgaWRlbnRpZmllcnMgZm9y IGVhc3kgcmVicmFuZGluZwoJY29sb3Jib3ggPSAnY29sb3Jib3gnLAoJcHJlZml4 ID0gJ2Nib3gnLAoJYm94RWxlbWVudCA9IHByZWZpeCArICdFbGVtZW50JywKCQoJ Ly8gRXZlbnRzCQoJZXZlbnRfb3BlbiA9IHByZWZpeCArICdfb3BlbicsCglldmVu dF9sb2FkID0gcHJlZml4ICsgJ19sb2FkJywKCWV2ZW50X2NvbXBsZXRlID0gcHJl Zml4ICsgJ19jb21wbGV0ZScsCglldmVudF9jbGVhbnVwID0gcHJlZml4ICsgJ19j bGVhbnVwJywKCWV2ZW50X2Nsb3NlZCA9IHByZWZpeCArICdfY2xvc2VkJywKCWV2 ZW50X3B1cmdlID0gcHJlZml4ICsgJ19wdXJnZScsCgkKCS8vIFNwZWNpYWwgSGFu ZGxpbmcgZm9yIElFCglpc0lFID0gISQuc3VwcG9ydC5vcGFjaXR5ICYmICEkLnN1 cHBvcnQuc3R5bGUsIC8vIElFNyAmIElFOAoJaXNJRTYgPSBpc0lFICYmICF3aW5k b3cuWE1MSHR0cFJlcXVlc3QsIC8vIElFNgoJZXZlbnRfaWU2ID0gcHJlZml4ICsg J19JRTYnLAoKCS8vIENhY2hlZCBqUXVlcnkgT2JqZWN0IFZhcmlhYmxlcwoJJG92 ZXJsYXksCgkkYm94LAoJJHdyYXAsCgkkY29udGVudCwKCSR0b3BCb3JkZXIsCgkk bGVmdEJvcmRlciwKCSRyaWdodEJvcmRlciwKCSRib3R0b21Cb3JkZXIsCgkkcmVs YXRlZCwKCSR3aW5kb3csCgkkbG9hZGVkLAoJJGxvYWRpbmdCYXksCgkkbG9hZGlu Z092ZXJsYXksCgkkdGl0bGUsCgkkY3VycmVudCwKCSRzbGlkZXNob3csCgkkbmV4 dCwKCSRwcmV2LAoJJGNsb3NlLAoJJGdyb3VwQ29udHJvbHMsCgkKCS8vIFZhcmlh YmxlcyBmb3IgY2FjaGVkIHZhbHVlcyBvciB1c2UgYWNyb3NzIG11bHRpcGxlIGZ1 bmN0aW9ucwoJc2V0dGluZ3MsCglpbnRlcmZhY2VIZWlnaHQsCglpbnRlcmZhY2VX aWR0aCwKCWxvYWRlZEhlaWdodCwKCWxvYWRlZFdpZHRoLAoJZWxlbWVudCwKCWlu ZGV4LAoJcGhvdG8sCglvcGVuLAoJYWN0aXZlLAoJY2xvc2luZywKCWxvYWRpbmdU aW1lciwKCXB1YmxpY01ldGhvZCwKCWRpdiA9ICJkaXYiLAoJaW5pdDsKCgkvLyAq KioqKioqKioqKioqKioqCgkvLyBIRUxQRVIgRlVOQ1RJT05TCgkvLyAqKioqKioq KioqKioqKioqCgkKCS8vIENvbnZpZW5jZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcg bmV3IGpRdWVyeSBvYmplY3RzCglmdW5jdGlvbiAkdGFnKHRhZywgaWQsIGNzcykg ewoJCXZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwoK CQlpZiAoaWQpIHsKCQkJZWxlbWVudC5pZCA9IHByZWZpeCArIGlkOwoJCX0KCgkJ aWYgKGNzcykgewoJCQllbGVtZW50LnN0eWxlLmNzc1RleHQgPSBjc3M7CgkJfQoK CQlyZXR1cm4gJChlbGVtZW50KTsKCX0KCgkvLyBEZXRlcm1pbmUgdGhlIG5leHQg YW5kIHByZXZpb3VzIG1lbWJlcnMgaW4gYSBncm91cC4KCWZ1bmN0aW9uIGdldElu ZGV4KGluY3JlbWVudCkgewoJCXZhciAKCQltYXggPSAkcmVsYXRlZC5sZW5ndGgs IAoJCW5ld0luZGV4ID0gKGluZGV4ICsgaW5jcmVtZW50KSAlIG1heDsKCQkKCQly ZXR1cm4gKG5ld0luZGV4IDwgMCkgPyBtYXggKyBuZXdJbmRleCA6IG5ld0luZGV4 OwoJfQoKCS8vIENvbnZlcnQgJyUnIGFuZCAncHgnIHZhbHVlcyB0byBpbnRlZ2Vy cwoJZnVuY3Rpb24gc2V0U2l6ZShzaXplLCBkaW1lbnNpb24pIHsKCQlyZXR1cm4g TWF0aC5yb3VuZCgoLyUvLnRlc3Qoc2l6ZSkgPyAoKGRpbWVuc2lvbiA9PT0gJ3gn ID8gJHdpbmRvdy53aWR0aCgpIDogJHdpbmRvdy5oZWlnaHQoKSkgLyAxMDApIDog MSkgKiBwYXJzZUludChzaXplLCAxMCkpOwoJfQoJCgkvLyBDaGVja3MgYW4gaHJl ZiB0byBzZWUgaWYgaXQgaXMgYSBwaG90by4KCS8vIFRoZXJlIGlzIGEgZm9yY2Ug cGhvdG8gb3B0aW9uIChwaG90bzogdHJ1ZSkgZm9yIGhyZWZzIHRoYXQgY2Fubm90 IGJlIG1hdGNoZWQgYnkgdGhpcyByZWdleC4KCWZ1bmN0aW9uIGlzSW1hZ2UodXJs KSB7CgkJcmV0dXJuIHNldHRpbmdzLnBob3RvIHx8IC9cLihnaWZ8cG5nfGpwZT9n fGJtcHxpY28pKCgjfFw/KS4qKT8kL2kudGVzdCh1cmwpOwoJfQoJCgkvLyBBc3Np Z25zIGZ1bmN0aW9uIHJlc3VsdHMgdG8gdGhlaXIgcmVzcGVjdGl2ZSBwcm9wZXJ0 aWVzCglmdW5jdGlvbiBtYWtlU2V0dGluZ3MoKSB7CgkJdmFyIGksCgkJCWRhdGEg PSAkLmRhdGEoZWxlbWVudCwgY29sb3Jib3gpOwoJCQoJCWlmIChkYXRhID09IG51 bGwpIHsKCQkJc2V0dGluZ3MgPSAkLmV4dGVuZCh7fSwgZGVmYXVsdHMpOwoJCQlp ZiAoY29uc29sZSAmJiBjb25zb2xlLmxvZykgewoJCQkJY29uc29sZS5sb2coJ0Vy cm9yOiBjYm94RWxlbWVudCBtaXNzaW5nIHNldHRpbmdzIG9iamVjdCcpCgkJCX0K CQl9IGVsc2UgewoJCQlzZXR0aW5ncyA9ICQuZXh0ZW5kKHt9LCBkYXRhKTsgICAg CQkKCQl9CgkJCgkJZm9yIChpIGluIHNldHRpbmdzKSB7CgkJCWlmICgkLmlzRnVu Y3Rpb24oc2V0dGluZ3NbaV0pICYmIGkuc2xpY2UoMCwgMikgIT09ICdvbicpIHsg Ly8gY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgZnVuY3Rpb24gaXNuJ3Qgb25lIG9m IHRoZSBjYWxsYmFja3MsIHRoZXkgd2lsbCBiZSBoYW5kbGVkIGF0IHRoZSBhcHBy b3ByaWF0ZSB0aW1lLgoJCQkJc2V0dGluZ3NbaV0gPSBzZXR0aW5nc1tpXS5jYWxs KGVsZW1lbnQpOwoJCQl9CgkJfQoJCQoJCXNldHRpbmdzLnJlbCA9IHNldHRpbmdz LnJlbCB8fCBlbGVtZW50LnJlbCB8fCAnbm9mb2xsb3cnOwoJCXNldHRpbmdzLmhy ZWYgPSBzZXR0aW5ncy5ocmVmIHx8ICQoZWxlbWVudCkuYXR0cignaHJlZicpOwoJ CXNldHRpbmdzLnRpdGxlID0gc2V0dGluZ3MudGl0bGUgfHwgZWxlbWVudC50aXRs ZTsKCQkKCQlpZiAodHlwZW9mIHNldHRpbmdzLmhyZWYgPT09ICJzdHJpbmciKSB7 CgkJCXNldHRpbmdzLmhyZWYgPSAkLnRyaW0oc2V0dGluZ3MuaHJlZik7CgkJfQoJ fQoKCWZ1bmN0aW9uIHRyaWdnZXIoZXZlbnQsIGNhbGxiYWNrKSB7CgkJJC5ldmVu dC50cmlnZ2VyKGV2ZW50KTsKCQlpZiAoY2FsbGJhY2spIHsKCQkJY2FsbGJhY2su Y2FsbChlbGVtZW50KTsKCQl9Cgl9CgoJLy8gU2xpZGVzaG93IGZ1bmN0aW9uYWxp dHkKCWZ1bmN0aW9uIHNsaWRlc2hvdygpIHsKCQl2YXIKCQl0aW1lT3V0LAoJCWNs YXNzTmFtZSA9IHByZWZpeCArICJTbGlkZXNob3dfIiwKCQljbGljayA9ICJjbGlj ay4iICsgcHJlZml4LAoJCXN0YXJ0LAoJCXN0b3AsCgkJY2xlYXI7CgkJCgkJaWYg KHNldHRpbmdzLnNsaWRlc2hvdyAmJiAkcmVsYXRlZFsxXSkgewoJCQlzdGFydCA9 IGZ1bmN0aW9uICgpIHsKCQkJCSRzbGlkZXNob3cKCQkJCQkudGV4dChzZXR0aW5n cy5zbGlkZXNob3dTdG9wKQoJCQkJCS51bmJpbmQoY2xpY2spCgkJCQkJLmJpbmQo ZXZlbnRfY29tcGxldGUsIGZ1bmN0aW9uICgpIHsKCQkJCQkJaWYgKHNldHRpbmdz Lmxvb3AgfHwgJHJlbGF0ZWRbaW5kZXggKyAxXSkgewoJCQkJCQkJdGltZU91dCA9 IHNldFRpbWVvdXQocHVibGljTWV0aG9kLm5leHQsIHNldHRpbmdzLnNsaWRlc2hv d1NwZWVkKTsKCQkJCQkJfQoJCQkJCX0pCgkJCQkJLmJpbmQoZXZlbnRfbG9hZCwg ZnVuY3Rpb24gKCkgewoJCQkJCQljbGVhclRpbWVvdXQodGltZU91dCk7CgkJCQkJ fSkKCQkJCQkub25lKGNsaWNrICsgJyAnICsgZXZlbnRfY2xlYW51cCwgc3RvcCk7 CgkJCQkkYm94LnJlbW92ZUNsYXNzKGNsYXNzTmFtZSArICJvZmYiKS5hZGRDbGFz cyhjbGFzc05hbWUgKyAib24iKTsKCQkJCXRpbWVPdXQgPSBzZXRUaW1lb3V0KHB1 YmxpY01ldGhvZC5uZXh0LCBzZXR0aW5ncy5zbGlkZXNob3dTcGVlZCk7CgkJCX07 CgkJCQoJCQlzdG9wID0gZnVuY3Rpb24gKCkgewoJCQkJY2xlYXJUaW1lb3V0KHRp bWVPdXQpOwoJCQkJJHNsaWRlc2hvdwoJCQkJCS50ZXh0KHNldHRpbmdzLnNsaWRl c2hvd1N0YXJ0KQoJCQkJCS51bmJpbmQoW2V2ZW50X2NvbXBsZXRlLCBldmVudF9s b2FkLCBldmVudF9jbGVhbnVwLCBjbGlja10uam9pbignICcpKQoJCQkJCS5vbmUo Y2xpY2ssIGZ1bmN0aW9uICgpIHsKCQkJCQkJcHVibGljTWV0aG9kLm5leHQoKTsK CQkJCQkJc3RhcnQoKTsKCQkJCQl9KTsKCQkJCSRib3gucmVtb3ZlQ2xhc3MoY2xh c3NOYW1lICsgIm9uIikuYWRkQ2xhc3MoY2xhc3NOYW1lICsgIm9mZiIpOwoJCQl9 OwoJCQkKCQkJaWYgKHNldHRpbmdzLnNsaWRlc2hvd0F1dG8pIHsKCQkJCXN0YXJ0 KCk7CgkJCX0gZWxzZSB7CgkJCQlzdG9wKCk7CgkJCX0KCQl9IGVsc2UgewoJCQkk Ym94LnJlbW92ZUNsYXNzKGNsYXNzTmFtZSArICJvZmYgIiArIGNsYXNzTmFtZSAr ICJvbiIpOwoJCX0KCX0KCglmdW5jdGlvbiBsYXVuY2godGFyZ2V0KSB7CgkJaWYg KCFjbG9zaW5nKSB7CgkJCQoJCQllbGVtZW50ID0gdGFyZ2V0OwoJCQkKCQkJbWFr ZVNldHRpbmdzKCk7CgkJCQoJCQkkcmVsYXRlZCA9ICQoZWxlbWVudCk7CgkJCQoJ CQlpbmRleCA9IDA7CgkJCQoJCQlpZiAoc2V0dGluZ3MucmVsICE9PSAnbm9mb2xs b3cnKSB7CgkJCQkkcmVsYXRlZCA9ICQoJy4nICsgYm94RWxlbWVudCkuZmlsdGVy KGZ1bmN0aW9uICgpIHsKCQkJCQl2YXIgZGF0YSA9ICQuZGF0YSh0aGlzLCBjb2xv cmJveCksIAoJCQkJCQlyZWxSZWxhdGVkOwoKCQkJCQlpZiAoZGF0YSkgewoJCQkJ CQlyZWxSZWxhdGVkID0gIGRhdGEucmVsIHx8IHRoaXMucmVsOwoJCQkJCX0KCQkJ CQkKCQkJCQlyZXR1cm4gKHJlbFJlbGF0ZWQgPT09IHNldHRpbmdzLnJlbCk7CgkJ CQl9KTsKCQkJCWluZGV4ID0gJHJlbGF0ZWQuaW5kZXgoZWxlbWVudCk7CgkJCQkK CQkJCS8vIENoZWNrIGRpcmVjdCBjYWxscyB0byBDb2xvckJveC4KCQkJCWlmIChp bmRleCA9PT0gLTEpIHsKCQkJCQkkcmVsYXRlZCA9ICRyZWxhdGVkLmFkZChlbGVt ZW50KTsKCQkJCQlpbmRleCA9ICRyZWxhdGVkLmxlbmd0aCAtIDE7CgkJCQl9CgkJ CX0KCQkJCgkJCWlmICghb3BlbikgewoJCQkJb3BlbiA9IGFjdGl2ZSA9IHRydWU7 IC8vIFByZXZlbnRzIHRoZSBwYWdlLWNoYW5nZSBhY3Rpb24gZnJvbSBxdWV1aW5n IHVwIGlmIHRoZSB2aXNpdG9yIGhvbGRzIGRvd24gdGhlIGxlZnQgb3IgcmlnaHQg a2V5cy4KCQkJCQoJCQkJJGJveC5zaG93KCk7CgkJCQkKCQkJCWlmIChzZXR0aW5n cy5yZXR1cm5Gb2N1cykgewoJCQkJCSQoZWxlbWVudCkuYmx1cigpLm9uZShldmVu dF9jbG9zZWQsIGZ1bmN0aW9uICgpIHsKCQkJCQkJJCh0aGlzKS5mb2N1cygpOwoJ CQkJCX0pOwoJCQkJfQoJCQkJCgkJCQkvLyArc2V0dGluZ3Mub3BhY2l0eSBhdm9p ZHMgYSBwcm9ibGVtIGluIElFIHdoZW4gdXNpbmcgbm9uLXplcm8tcHJlZml4ZWQt c3RyaW5nLXZhbHVlcywgbGlrZSAnLjUnCgkJCQkkb3ZlcmxheS5jc3MoeyJvcGFj aXR5IjogK3NldHRpbmdzLm9wYWNpdHksICJjdXJzb3IiOiBzZXR0aW5ncy5vdmVy bGF5Q2xvc2UgPyAicG9pbnRlciIgOiAiYXV0byJ9KS5zaG93KCk7CgkJCQkKCQkJ CS8vIE9wZW5zIGluaXRhbCBlbXB0eSBDb2xvckJveCBwcmlvciB0byBjb250ZW50 IGJlaW5nIGxvYWRlZC4KCQkJCXNldHRpbmdzLncgPSBzZXRTaXplKHNldHRpbmdz LmluaXRpYWxXaWR0aCwgJ3gnKTsKCQkJCXNldHRpbmdzLmggPSBzZXRTaXplKHNl dHRpbmdzLmluaXRpYWxIZWlnaHQsICd5Jyk7CgkJCQlwdWJsaWNNZXRob2QucG9z aXRpb24oKTsKCQkJCQoJCQkJaWYgKGlzSUU2KSB7CgkJCQkJJHdpbmRvdy5iaW5k KCdyZXNpemUuJyArIGV2ZW50X2llNiArICcgc2Nyb2xsLicgKyBldmVudF9pZTYs IGZ1bmN0aW9uICgpIHsKCQkJCQkJJG92ZXJsYXkuY3NzKHt3aWR0aDogJHdpbmRv dy53aWR0aCgpLCBoZWlnaHQ6ICR3aW5kb3cuaGVpZ2h0KCksIHRvcDogJHdpbmRv dy5zY3JvbGxUb3AoKSwgbGVmdDogJHdpbmRvdy5zY3JvbGxMZWZ0KCl9KTsKCQkJ CQl9KS50cmlnZ2VyKCdyZXNpemUuJyArIGV2ZW50X2llNik7CgkJCQl9CgkJCQkK CQkJCXRyaWdnZXIoZXZlbnRfb3Blbiwgc2V0dGluZ3Mub25PcGVuKTsKCQkJCQoJ CQkJJGdyb3VwQ29udHJvbHMuYWRkKCR0aXRsZSkuaGlkZSgpOwoJCQkJCgkJCQkk Y2xvc2UuaHRtbChzZXR0aW5ncy5jbG9zZSkuc2hvdygpOwoJCQl9CgkJCQoJCQlw dWJsaWNNZXRob2QubG9hZCh0cnVlKTsKCQl9Cgl9CgoJLy8gQ29sb3JCb3gncyBt YXJrdXAgbmVlZHMgdG8gYmUgYWRkZWQgdG8gdGhlIERPTSBwcmlvciB0byBiZWlu ZyBjYWxsZWQKCS8vIHNvIHRoYXQgdGhlIGJyb3dzZXIgd2lsbCBnbyBhaGVhZCBh bmQgbG9hZCB0aGUgQ1NTIGJhY2tncm91bmQgaW1hZ2VzLgoJZnVuY3Rpb24gYXBw ZW5kSFRNTCgpIHsKCQlpZiAoISRib3ggJiYgZG9jdW1lbnQuYm9keSkgewoJCQlp bml0ID0gZmFsc2U7CgoJCQkkd2luZG93ID0gJCh3aW5kb3cpOwoJCQkkYm94ID0g JHRhZyhkaXYpLmF0dHIoe2lkOiBjb2xvcmJveCwgJ2NsYXNzJzogaXNJRSA/IHBy ZWZpeCArIChpc0lFNiA/ICdJRTYnIDogJ0lFJykgOiAnJ30pLmhpZGUoKTsKCQkJ JG92ZXJsYXkgPSAkdGFnKGRpdiwgIk92ZXJsYXkiLCBpc0lFNiA/ICdwb3NpdGlv bjphYnNvbHV0ZScgOiAnJykuaGlkZSgpOwoJCQkkd3JhcCA9ICR0YWcoZGl2LCAi V3JhcHBlciIpOwoJCQkkY29udGVudCA9ICR0YWcoZGl2LCAiQ29udGVudCIpLmFw cGVuZCgKCQkJCSRsb2FkZWQgPSAkdGFnKGRpdiwgIkxvYWRlZENvbnRlbnQiLCAn d2lkdGg6MDsgaGVpZ2h0OjA7IG92ZXJmbG93OmhpZGRlbicpLAoJCQkJJGxvYWRp bmdPdmVybGF5ID0gJHRhZyhkaXYsICJMb2FkaW5nT3ZlcmxheSIpLmFkZCgkdGFn KGRpdiwgIkxvYWRpbmdHcmFwaGljIikpLAoJCQkJJHRpdGxlID0gJHRhZyhkaXYs ICJUaXRsZSIpLAoJCQkJJGN1cnJlbnQgPSAkdGFnKGRpdiwgIkN1cnJlbnQiKSwK CQkJCSRuZXh0ID0gJHRhZyhkaXYsICJOZXh0IiksCgkJCQkkcHJldiA9ICR0YWco ZGl2LCAiUHJldmlvdXMiKSwKCQkJCSRzbGlkZXNob3cgPSAkdGFnKGRpdiwgIlNs aWRlc2hvdyIpLmJpbmQoZXZlbnRfb3Blbiwgc2xpZGVzaG93KSwKCQkJCSRjbG9z ZSA9ICR0YWcoZGl2LCAiQ2xvc2UiKQoJCQkpOwoJCQkKCQkJJHdyYXAuYXBwZW5k KCAvLyBUaGUgM3gzIEdyaWQgdGhhdCBtYWtlcyB1cCBDb2xvckJveAoJCQkJJHRh ZyhkaXYpLmFwcGVuZCgKCQkJCQkkdGFnKGRpdiwgIlRvcExlZnQiKSwKCQkJCQkk dG9wQm9yZGVyID0gJHRhZyhkaXYsICJUb3BDZW50ZXIiKSwKCQkJCQkkdGFnKGRp diwgIlRvcFJpZ2h0IikKCQkJCSksCgkJCQkkdGFnKGRpdiwgZmFsc2UsICdjbGVh cjpsZWZ0JykuYXBwZW5kKAoJCQkJCSRsZWZ0Qm9yZGVyID0gJHRhZyhkaXYsICJN aWRkbGVMZWZ0IiksCgkJCQkJJGNvbnRlbnQsCgkJCQkJJHJpZ2h0Qm9yZGVyID0g JHRhZyhkaXYsICJNaWRkbGVSaWdodCIpCgkJCQkpLAoJCQkJJHRhZyhkaXYsIGZh bHNlLCAnY2xlYXI6bGVmdCcpLmFwcGVuZCgKCQkJCQkkdGFnKGRpdiwgIkJvdHRv bUxlZnQiKSwKCQkJCQkkYm90dG9tQm9yZGVyID0gJHRhZyhkaXYsICJCb3R0b21D ZW50ZXIiKSwKCQkJCQkkdGFnKGRpdiwgIkJvdHRvbVJpZ2h0IikKCQkJCSkKCQkJ KS5maW5kKCdkaXYgZGl2JykuY3NzKHsnZmxvYXQnOiAnbGVmdCd9KTsKCQkJCgkJ CSRsb2FkaW5nQmF5ID0gJHRhZyhkaXYsIGZhbHNlLCAncG9zaXRpb246YWJzb2x1 dGU7IHdpZHRoOjk5OTlweDsgdmlzaWJpbGl0eTpoaWRkZW47IGRpc3BsYXk6bm9u ZScpOwoJCQkKCQkJJGdyb3VwQ29udHJvbHMgPSAkbmV4dC5hZGQoJHByZXYpLmFk ZCgkY3VycmVudCkuYWRkKCRzbGlkZXNob3cpOwoKCQkJJChkb2N1bWVudC5ib2R5 KS5hcHBlbmQoJG92ZXJsYXksICRib3guYXBwZW5kKCR3cmFwLCAkbG9hZGluZ0Jh eSkpOwoJCX0KCX0KCgkvLyBBZGQgQ29sb3JCb3gncyBldmVudCBiaW5kaW5ncwoJ ZnVuY3Rpb24gYWRkQmluZGluZ3MoKSB7CgkJaWYgKCRib3gpIHsKCQkJaWYgKCFp bml0KSB7CgkJCQlpbml0ID0gdHJ1ZTsKCgkJCQkvLyBDYWNoZSB2YWx1ZXMgbmVl ZGVkIGZvciBzaXplIGNhbGN1bGF0aW9ucwoJCQkJaW50ZXJmYWNlSGVpZ2h0ID0g JHRvcEJvcmRlci5oZWlnaHQoKSArICRib3R0b21Cb3JkZXIuaGVpZ2h0KCkgKyAk Y29udGVudC5vdXRlckhlaWdodCh0cnVlKSAtICRjb250ZW50LmhlaWdodCgpOy8v U3VidHJhY3Rpb24gbmVlZGVkIGZvciBJRTYKCQkJCWludGVyZmFjZVdpZHRoID0g JGxlZnRCb3JkZXIud2lkdGgoKSArICRyaWdodEJvcmRlci53aWR0aCgpICsgJGNv bnRlbnQub3V0ZXJXaWR0aCh0cnVlKSAtICRjb250ZW50LndpZHRoKCk7CgkJCQls b2FkZWRIZWlnaHQgPSAkbG9hZGVkLm91dGVySGVpZ2h0KHRydWUpOwoJCQkJbG9h ZGVkV2lkdGggPSAkbG9hZGVkLm91dGVyV2lkdGgodHJ1ZSk7CgkJCQkKCQkJCS8v IFNldHRpbmcgcGFkZGluZyB0byByZW1vdmUgdGhlIG5lZWQgdG8gZG8gc2l6ZSBj b252ZXJzaW9ucyBkdXJpbmcgdGhlIGFuaW1hdGlvbiBzdGVwLgoJCQkJJGJveC5j c3MoeyJwYWRkaW5nLWJvdHRvbSI6IGludGVyZmFjZUhlaWdodCwgInBhZGRpbmct cmlnaHQiOiBpbnRlcmZhY2VXaWR0aH0pOwoKCQkJCS8vIEFub255bW91cyBmdW5j dGlvbnMgaGVyZSBrZWVwIHRoZSBwdWJsaWMgbWV0aG9kIGZyb20gYmVpbmcgY2Fj aGVkLCB0aGVyZWJ5IGFsbG93aW5nIHRoZW0gdG8gYmUgcmVkZWZpbmVkIG9uIHRo ZSBmbHkuCgkJCQkkbmV4dC5jbGljayhmdW5jdGlvbiAoKSB7CgkJCQkJcHVibGlj TWV0aG9kLm5leHQoKTsKCQkJCX0pOwoJCQkJJHByZXYuY2xpY2soZnVuY3Rpb24g KCkgewoJCQkJCXB1YmxpY01ldGhvZC5wcmV2KCk7CgkJCQl9KTsKCQkJCSRjbG9z ZS5jbGljayhmdW5jdGlvbiAoKSB7CgkJCQkJcHVibGljTWV0aG9kLmNsb3NlKCk7 CgkJCQl9KTsKCQkJCSRvdmVybGF5LmNsaWNrKGZ1bmN0aW9uICgpIHsKCQkJCQlp ZiAoc2V0dGluZ3Mub3ZlcmxheUNsb3NlKSB7CgkJCQkJCXB1YmxpY01ldGhvZC5j bG9zZSgpOwoJCQkJCX0KCQkJCX0pOwoJCQkJCgkJCQkvLyBLZXkgQmluZGluZ3MK CQkJCSQoZG9jdW1lbnQpLmJpbmQoJ2tleWRvd24uJyArIHByZWZpeCwgZnVuY3Rp b24gKGUpIHsKCQkJCQl2YXIga2V5ID0gZS5rZXlDb2RlOwoJCQkJCWlmIChvcGVu ICYmIHNldHRpbmdzLmVzY0tleSAmJiBrZXkgPT09IDI3KSB7CgkJCQkJCWUucHJl dmVudERlZmF1bHQoKTsKCQkJCQkJcHVibGljTWV0aG9kLmNsb3NlKCk7CgkJCQkJ fQoJCQkJCWlmIChvcGVuICYmIHNldHRpbmdzLmFycm93S2V5ICYmICRyZWxhdGVk WzFdKSB7CgkJCQkJCWlmIChrZXkgPT09IDM3KSB7CgkJCQkJCQllLnByZXZlbnRE ZWZhdWx0KCk7CgkJCQkJCQkkcHJldi5jbGljaygpOwoJCQkJCQl9IGVsc2UgaWYg KGtleSA9PT0gMzkpIHsKCQkJCQkJCWUucHJldmVudERlZmF1bHQoKTsKCQkJCQkJ CSRuZXh0LmNsaWNrKCk7CgkJCQkJCX0KCQkJCQl9CgkJCQl9KTsKCgkJCQkkKCcu JyArIGJveEVsZW1lbnQsIGRvY3VtZW50KS5saXZlKCdjbGljaycsIGZ1bmN0aW9u IChlKSB7CgkJCQkJLy8gaWdub3JlIG5vbi1sZWZ0LW1vdXNlLWNsaWNrcyBhbmQg Y2xpY2tzIG1vZGlmaWVkIHdpdGggY3RybCAvIGNvbW1hbmQsIHNoaWZ0LCBvciBh bHQuCgkJCQkJLy8gU2VlOiBodHRwOi8vamFja2xtb29yZS5jb20vbm90ZXMvY2xp Y2stZXZlbnRzLwoJCQkJCWlmICghKGUud2hpY2ggPiAxIHx8IGUuc2hpZnRLZXkg fHwgZS5hbHRLZXkgfHwgZS5tZXRhS2V5KSkgewoJCQkJCQllLnByZXZlbnREZWZh dWx0KCk7CgkJCQkJCWxhdW5jaCh0aGlzKTsKCQkJCQl9CgkJCQl9KTsKCQkJfQoJ CQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8vIERvbid0 IGRvIGFueXRoaW5nIGlmIENvbG9yQm94IGFscmVhZHkgZXhpc3RzLgoJaWYgKCQu Y29sb3Jib3gpIHsKCQlyZXR1cm47Cgl9CgoJLy8gQXBwZW5kIHRoZSBIVE1MIHdo ZW4gdGhlIERPTSBsb2FkcwoJJChhcHBlbmRIVE1MKTsKCgoJLy8gKioqKioqKioq KioqKioqKgoJLy8gUFVCTElDIEZVTkNUSU9OUwoJLy8gVXNhZ2UgZm9ybWF0OiAk LmZuLmNvbG9yYm94LmNsb3NlKCk7CgkvLyBVc2FnZSBmcm9tIHdpdGhpbiBhbiBp ZnJhbWU6IHBhcmVudC4kLmZuLmNvbG9yYm94LmNsb3NlKCk7CgkvLyAqKioqKioq KioqKioqKioqCgkKCXB1YmxpY01ldGhvZCA9ICQuZm5bY29sb3Jib3hdID0gJFtj b2xvcmJveF0gPSBmdW5jdGlvbiAob3B0aW9ucywgY2FsbGJhY2spIHsKCQl2YXIg JHRoaXMgPSB0aGlzOwoJCQoJCW9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoJCQoJ CWFwcGVuZEhUTUwoKTsKCgkJaWYgKGFkZEJpbmRpbmdzKCkpIHsKCQkJaWYgKCEk dGhpc1swXSkgewoJCQkJaWYgKCR0aGlzLnNlbGVjdG9yKSB7IC8vIGlmIGEgc2Vs ZWN0b3Igd2FzIGdpdmVuIGFuZCBpdCBkaWRuJ3QgbWF0Y2ggYW55IGVsZW1lbnRz LCBnbyBhaGVhZCBhbmQgZXhpdC4KCQkJCQlyZXR1cm4gJHRoaXM7CgkJCQl9CgkJ CQkvLyBpZiBubyBzZWxlY3RvciB3YXMgZ2l2ZW4gKGllLiAkLmNvbG9yYm94KCkp LCBjcmVhdGUgYSB0ZW1wb3JhcnkgZWxlbWVudCB0byB3b3JrIHdpdGgKCQkJCSR0 aGlzID0gJCgnPGEvPicpOwoJCQkJb3B0aW9ucy5vcGVuID0gdHJ1ZTsgLy8gYXNz dW1lIGFuIGltbWVkaWF0ZSBvcGVuCgkJCX0KCQkJCgkJCWlmIChjYWxsYmFjaykg ewoJCQkJb3B0aW9ucy5vbkNvbXBsZXRlID0gY2FsbGJhY2s7CgkJCX0KCQkJCgkJ CSR0aGlzLmVhY2goZnVuY3Rpb24gKCkgewoJCQkJJC5kYXRhKHRoaXMsIGNvbG9y Ym94LCAkLmV4dGVuZCh7fSwgJC5kYXRhKHRoaXMsIGNvbG9yYm94KSB8fCBkZWZh dWx0cywgb3B0aW9ucykpOwoJCQl9KS5hZGRDbGFzcyhib3hFbGVtZW50KTsKCQkJ CgkJCWlmICgoJC5pc0Z1bmN0aW9uKG9wdGlvbnMub3BlbikgJiYgb3B0aW9ucy5v cGVuLmNhbGwoJHRoaXMpKSB8fCBvcHRpb25zLm9wZW4pIHsKCQkJCWxhdW5jaCgk dGhpc1swXSk7CgkJCX0KCQl9CgkJCgkJcmV0dXJuICR0aGlzOwoJfTsKCglwdWJs aWNNZXRob2QucG9zaXRpb24gPSBmdW5jdGlvbiAoc3BlZWQsIGxvYWRlZENhbGxi YWNrKSB7CgkJdmFyIAoJCXRvcCA9IDAsIAoJCWxlZnQgPSAwLCAKCQlvZmZzZXQg PSAkYm94Lm9mZnNldCgpLAoJCXNjcm9sbFRvcCwgCgkJc2Nyb2xsTGVmdDsKCQkK CQkkd2luZG93LnVuYmluZCgncmVzaXplLicgKyBwcmVmaXgpOwoKCQkvLyByZW1v dmUgdGhlIG1vZGFsIHNvIHRoYXQgaXQgZG9lc24ndCBpbmZsdWVuY2UgdGhlIGRv Y3VtZW50IHdpZHRoL2hlaWdodCAgICAgICAgCgkJJGJveC5jc3Moe3RvcDogLTll NCwgbGVmdDogLTllNH0pOwoKCQlzY3JvbGxUb3AgPSAkd2luZG93LnNjcm9sbFRv cCgpOwoJCXNjcm9sbExlZnQgPSAkd2luZG93LnNjcm9sbExlZnQoKTsKCgkJaWYg KHNldHRpbmdzLmZpeGVkICYmICFpc0lFNikgewoJCQlvZmZzZXQudG9wIC09IHNj cm9sbFRvcDsKCQkJb2Zmc2V0LmxlZnQgLT0gc2Nyb2xsTGVmdDsKCQkJJGJveC5j c3Moe3Bvc2l0aW9uOiAnZml4ZWQnfSk7CgkJfSBlbHNlIHsKCQkJdG9wID0gc2Ny b2xsVG9wOwoJCQlsZWZ0ID0gc2Nyb2xsTGVmdDsKCQkJJGJveC5jc3Moe3Bvc2l0 aW9uOiAnYWJzb2x1dGUnfSk7CgkJfQoKCQkvLyBrZWVwcyB0aGUgdG9wIGFuZCBs ZWZ0IHBvc2l0aW9ucyB3aXRoaW4gdGhlIGJyb3dzZXIncyB2aWV3cG9ydC4KCQlp ZiAoc2V0dGluZ3MucmlnaHQgIT09IGZhbHNlKSB7CgkJCWxlZnQgKz0gTWF0aC5t YXgoJHdpbmRvdy53aWR0aCgpIC0gc2V0dGluZ3MudyAtIGxvYWRlZFdpZHRoIC0g aW50ZXJmYWNlV2lkdGggLSBzZXRTaXplKHNldHRpbmdzLnJpZ2h0LCAneCcpLCAw KTsKCQl9IGVsc2UgaWYgKHNldHRpbmdzLmxlZnQgIT09IGZhbHNlKSB7CgkJCWxl ZnQgKz0gc2V0U2l6ZShzZXR0aW5ncy5sZWZ0LCAneCcpOwoJCX0gZWxzZSB7CgkJ CWxlZnQgKz0gTWF0aC5yb3VuZChNYXRoLm1heCgkd2luZG93LndpZHRoKCkgLSBz ZXR0aW5ncy53IC0gbG9hZGVkV2lkdGggLSBpbnRlcmZhY2VXaWR0aCwgMCkgLyAy KTsKCQl9CgkJCgkJaWYgKHNldHRpbmdzLmJvdHRvbSAhPT0gZmFsc2UpIHsKCQkJ dG9wICs9IE1hdGgubWF4KCR3aW5kb3cuaGVpZ2h0KCkgLSBzZXR0aW5ncy5oIC0g bG9hZGVkSGVpZ2h0IC0gaW50ZXJmYWNlSGVpZ2h0IC0gc2V0U2l6ZShzZXR0aW5n cy5ib3R0b20sICd5JyksIDApOwoJCX0gZWxzZSBpZiAoc2V0dGluZ3MudG9wICE9 PSBmYWxzZSkgewoJCQl0b3AgKz0gc2V0U2l6ZShzZXR0aW5ncy50b3AsICd5Jyk7 CgkJfSBlbHNlIHsKCQkJdG9wICs9IE1hdGgucm91bmQoTWF0aC5tYXgoJHdpbmRv dy5oZWlnaHQoKSAtIHNldHRpbmdzLmggLSBsb2FkZWRIZWlnaHQgLSBpbnRlcmZh Y2VIZWlnaHQsIDApIC8gMik7CgkJfQoKCQkkYm94LmNzcyh7dG9wOiBvZmZzZXQu dG9wLCBsZWZ0OiBvZmZzZXQubGVmdH0pOwoKCQkvLyBzZXR0aW5nIHRoZSBzcGVl ZCB0byAwIHRvIHJlZHVjZSB0aGUgZGVsYXkgYmV0d2VlbiBzYW1lLXNpemVkIGNv bnRlbnQuCgkJc3BlZWQgPSAoJGJveC53aWR0aCgpID09PSBzZXR0aW5ncy53ICsg bG9hZGVkV2lkdGggJiYgJGJveC5oZWlnaHQoKSA9PT0gc2V0dGluZ3MuaCArIGxv YWRlZEhlaWdodCkgPyAwIDogc3BlZWQgfHwgMDsKCQkKCQkvLyB0aGlzIGdpdmVz IHRoZSB3cmFwcGVyIHBsZW50eSBvZiBicmVhdGhpbmcgcm9vbSBzbyBpdCdzIGZs b2F0ZWQgY29udGVudHMgY2FuIG1vdmUgYXJvdW5kIHNtb290aGx5LAoJCS8vIGJ1 dCBpdCBoYXMgdG8gYmUgc2hyYW5rIGRvd24gYXJvdW5kIHRoZSBzaXplIG9mIGRp diNjb2xvcmJveCB3aGVuIGl0J3MgZG9uZS4gIElmIG5vdCwKCQkvLyBpdCBjYW4g aW52b2tlIGFuIG9ic2N1cmUgSUUgYnVnIHdoZW4gdXNpbmcgaWZyYW1lcy4KCQkk d3JhcFswXS5zdHlsZS53aWR0aCA9ICR3cmFwWzBdLnN0eWxlLmhlaWdodCA9ICI5 OTk5cHgiOwoJCQoJCWZ1bmN0aW9uIG1vZGFsRGltZW5zaW9ucyh0aGF0KSB7CgkJ CSR0b3BCb3JkZXJbMF0uc3R5bGUud2lkdGggPSAkYm90dG9tQm9yZGVyWzBdLnN0 eWxlLndpZHRoID0gJGNvbnRlbnRbMF0uc3R5bGUud2lkdGggPSB0aGF0LnN0eWxl LndpZHRoOwoJCQkkY29udGVudFswXS5zdHlsZS5oZWlnaHQgPSAkbGVmdEJvcmRl clswXS5zdHlsZS5oZWlnaHQgPSAkcmlnaHRCb3JkZXJbMF0uc3R5bGUuaGVpZ2h0 ID0gdGhhdC5zdHlsZS5oZWlnaHQ7CgkJfQoJCQoJCSRib3guZGVxdWV1ZSgpLmFu aW1hdGUoe3dpZHRoOiBzZXR0aW5ncy53ICsgbG9hZGVkV2lkdGgsIGhlaWdodDog c2V0dGluZ3MuaCArIGxvYWRlZEhlaWdodCwgdG9wOiB0b3AsIGxlZnQ6IGxlZnR9 LCB7CgkJCWR1cmF0aW9uOiBzcGVlZCwKCQkJY29tcGxldGU6IGZ1bmN0aW9uICgp IHsKCQkJCW1vZGFsRGltZW5zaW9ucyh0aGlzKTsKCQkJCQoJCQkJYWN0aXZlID0g ZmFsc2U7CgkJCQkKCQkJCS8vIHNocmluayB0aGUgd3JhcHBlciBkb3duIHRvIGV4 YWN0bHkgdGhlIHNpemUgb2YgY29sb3Jib3ggdG8gYXZvaWQgYSBidWcgaW4gSUUn cyBpZnJhbWUgaW1wbGVtZW50YXRpb24uCgkJCQkkd3JhcFswXS5zdHlsZS53aWR0 aCA9IChzZXR0aW5ncy53ICsgbG9hZGVkV2lkdGggKyBpbnRlcmZhY2VXaWR0aCkg KyAicHgiOwoJCQkJJHdyYXBbMF0uc3R5bGUuaGVpZ2h0ID0gKHNldHRpbmdzLmgg KyBsb2FkZWRIZWlnaHQgKyBpbnRlcmZhY2VIZWlnaHQpICsgInB4IjsKCQkJCQoJ CQkJaWYgKHNldHRpbmdzLnJlcG9zaXRpb24pIHsKCQkJCQlzZXRUaW1lb3V0KGZ1 bmN0aW9uICgpIHsgIC8vIHNtYWxsIGRlbGF5IGJlZm9yZSBiaW5kaW5nIG9ucmVz aXplIGR1ZSB0byBhbiBJRTggYnVnLgoJCQkJCQkkd2luZG93LmJpbmQoJ3Jlc2l6 ZS4nICsgcHJlZml4LCBwdWJsaWNNZXRob2QucG9zaXRpb24pOwoJCQkJCX0sIDEp OwoJCQkJfQoKCQkJCWlmIChsb2FkZWRDYWxsYmFjaykgewoJCQkJCWxvYWRlZENh bGxiYWNrKCk7CgkJCQl9CgkJCX0sCgkJCXN0ZXA6IGZ1bmN0aW9uICgpIHsKCQkJ CW1vZGFsRGltZW5zaW9ucyh0aGlzKTsKCQkJfQoJCX0pOwoJfTsKCglwdWJsaWNN ZXRob2QucmVzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKCQlpZiAob3Blbikg ewoJCQlvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCQkJCgkJCWlmIChvcHRpb25z LndpZHRoKSB7CgkJCQlzZXR0aW5ncy53ID0gc2V0U2l6ZShvcHRpb25zLndpZHRo LCAneCcpIC0gbG9hZGVkV2lkdGggLSBpbnRlcmZhY2VXaWR0aDsKCQkJfQoJCQlp ZiAob3B0aW9ucy5pbm5lcldpZHRoKSB7CgkJCQlzZXR0aW5ncy53ID0gc2V0U2l6 ZShvcHRpb25zLmlubmVyV2lkdGgsICd4Jyk7CgkJCX0KCQkJJGxvYWRlZC5jc3Mo e3dpZHRoOiBzZXR0aW5ncy53fSk7CgkJCQoJCQlpZiAob3B0aW9ucy5oZWlnaHQp IHsKCQkJCXNldHRpbmdzLmggPSBzZXRTaXplKG9wdGlvbnMuaGVpZ2h0LCAneScp IC0gbG9hZGVkSGVpZ2h0IC0gaW50ZXJmYWNlSGVpZ2h0OwoJCQl9CgkJCWlmIChv cHRpb25zLmlubmVySGVpZ2h0KSB7CgkJCQlzZXR0aW5ncy5oID0gc2V0U2l6ZShv cHRpb25zLmlubmVySGVpZ2h0LCAneScpOwoJCQl9CgkJCWlmICghb3B0aW9ucy5p bm5lckhlaWdodCAmJiAhb3B0aW9ucy5oZWlnaHQpIHsKCQkJCSRsb2FkZWQuY3Nz KHtoZWlnaHQ6ICJhdXRvIn0pOwoJCQkJc2V0dGluZ3MuaCA9ICRsb2FkZWQuaGVp Z2h0KCk7CgkJCX0KCQkJJGxvYWRlZC5jc3Moe2hlaWdodDogc2V0dGluZ3MuaH0p OwoJCQkKCQkJcHVibGljTWV0aG9kLnBvc2l0aW9uKHNldHRpbmdzLnRyYW5zaXRp b24gPT09ICJub25lIiA/IDAgOiBzZXR0aW5ncy5zcGVlZCk7CgkJfQoJfTsKCglw dWJsaWNNZXRob2QucHJlcCA9IGZ1bmN0aW9uIChvYmplY3QpIHsKCQlpZiAoIW9w ZW4pIHsKCQkJcmV0dXJuOwoJCX0KCQkKCQl2YXIgY2FsbGJhY2ssIHNwZWVkID0g c2V0dGluZ3MudHJhbnNpdGlvbiA9PT0gIm5vbmUiID8gMCA6IHNldHRpbmdzLnNw ZWVkOwoJCQoJCSRsb2FkZWQucmVtb3ZlKCk7CgkJJGxvYWRlZCA9ICR0YWcoZGl2 LCAnTG9hZGVkQ29udGVudCcpLmFwcGVuZChvYmplY3QpOwoJCQoJCWZ1bmN0aW9u IGdldFdpZHRoKCkgewoJCQlzZXR0aW5ncy53ID0gc2V0dGluZ3MudyB8fCAkbG9h ZGVkLndpZHRoKCk7CgkJCXNldHRpbmdzLncgPSBzZXR0aW5ncy5tdyAmJiBzZXR0 aW5ncy5tdyA8IHNldHRpbmdzLncgPyBzZXR0aW5ncy5tdyA6IHNldHRpbmdzLnc7 CgkJCXJldHVybiBzZXR0aW5ncy53OwoJCX0KCQlmdW5jdGlvbiBnZXRIZWlnaHQo KSB7CgkJCXNldHRpbmdzLmggPSBzZXR0aW5ncy5oIHx8ICRsb2FkZWQuaGVpZ2h0 KCk7CgkJCXNldHRpbmdzLmggPSBzZXR0aW5ncy5taCAmJiBzZXR0aW5ncy5taCA8 IHNldHRpbmdzLmggPyBzZXR0aW5ncy5taCA6IHNldHRpbmdzLmg7CgkJCXJldHVy biBzZXR0aW5ncy5oOwoJCX0KCQkKCQkkbG9hZGVkLmhpZGUoKQoJCS5hcHBlbmRU bygkbG9hZGluZ0JheS5zaG93KCkpLy8gY29udGVudCBoYXMgdG8gYmUgYXBwZW5k ZWQgdG8gdGhlIERPTSBmb3IgYWNjdXJhdGUgc2l6ZSBjYWxjdWxhdGlvbnMuCgkJ LmNzcyh7d2lkdGg6IGdldFdpZHRoKCksIG92ZXJmbG93OiBzZXR0aW5ncy5zY3Jv bGxpbmcgPyAnYXV0bycgOiAnaGlkZGVuJ30pCgkJLmNzcyh7aGVpZ2h0OiBnZXRI ZWlnaHQoKX0pLy8gc2V0cyB0aGUgaGVpZ2h0IGluZGVwZW5kZW50bHkgZnJvbSB0 aGUgd2lkdGggaW4gY2FzZSB0aGUgbmV3IHdpZHRoIGluZmx1ZW5jZXMgdGhlIHZh bHVlIG9mIGhlaWdodC4KCQkucHJlcGVuZFRvKCRjb250ZW50KTsKCQkKCQkkbG9h ZGluZ0JheS5oaWRlKCk7CgkJCgkJLy8gZmxvYXRpbmcgdGhlIElNRyByZW1vdmVz IHRoZSBib3R0b20gbGluZS1oZWlnaHQgYW5kIGZpeGVkIGEgcHJvYmxlbSB3aGVy ZSBJRSBtaXNjYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgcGFyZW50IGVsZW1l bnQgYXMgMTAwJSBvZiB0aGUgZG9jdW1lbnQgd2lkdGguCgkJLy8kKHBob3RvKS5j c3MoeydmbG9hdCc6ICdub25lJywgbWFyZ2luTGVmdDogJ2F1dG8nLCBtYXJnaW5S aWdodDogJ2F1dG8nfSk7CgkJCgkJJChwaG90bykuY3NzKHsnZmxvYXQnOiAnbm9u ZSd9KTsKCQkKCQkvLyBIaWRlcyBTRUxFQ1QgZWxlbWVudHMgaW4gSUU2IGJlY2F1 c2UgdGhleSB3b3VsZCBvdGhlcndpc2Ugc2l0IG9uIHRvcCBvZiB0aGUgb3Zlcmxh eS4KCQlpZiAoaXNJRTYpIHsKCQkJJCgnc2VsZWN0Jykubm90KCRib3guZmluZCgn c2VsZWN0JykpLmZpbHRlcihmdW5jdGlvbiAoKSB7CgkJCQlyZXR1cm4gdGhpcy5z dHlsZS52aXNpYmlsaXR5ICE9PSAnaGlkZGVuJzsKCQkJfSkuY3NzKHsndmlzaWJp bGl0eSc6ICdoaWRkZW4nfSkub25lKGV2ZW50X2NsZWFudXAsIGZ1bmN0aW9uICgp IHsKCQkJCXRoaXMuc3R5bGUudmlzaWJpbGl0eSA9ICdpbmhlcml0JzsKCQkJfSk7 CgkJfQoJCQoJCWNhbGxiYWNrID0gZnVuY3Rpb24gKCkgewoJCQl2YXIgcHJlbG9h ZCwgCgkJCQlpLCAKCQkJCXRvdGFsID0gJHJlbGF0ZWQubGVuZ3RoLCAKCQkJCWlm cmFtZSwgCgkJCQlmcmFtZUJvcmRlciA9ICdmcmFtZUJvcmRlcicsIAoJCQkJYWxs b3dUcmFuc3BhcmVuY3kgPSAnYWxsb3dUcmFuc3BhcmVuY3knLCAKCQkJCWNvbXBs ZXRlLCAKCQkJCXNyYywgCgkJCQlpbWcsIAoJCQkJZGF0YTsKCQkJCgkJCWlmICgh b3BlbikgewoJCQkJcmV0dXJuOwoJCQl9CgkJCQoJCQlmdW5jdGlvbiByZW1vdmVG aWx0ZXIoKSB7CgkJCQlpZiAoaXNJRSkgewoJCQkJCSRib3hbMF0uc3R5bGUucmVt b3ZlQXR0cmlidXRlKCdmaWx0ZXInKTsKCQkJCX0KCQkJfQoJCQkKCQkJY29tcGxl dGUgPSBmdW5jdGlvbiAoKSB7CgkJCQljbGVhclRpbWVvdXQobG9hZGluZ1RpbWVy KTsKCQkJCSRsb2FkaW5nT3ZlcmxheS5oaWRlKCk7CgkJCQl0cmlnZ2VyKGV2ZW50 X2NvbXBsZXRlLCBzZXR0aW5ncy5vbkNvbXBsZXRlKTsKCQkJfTsKCQkJCgkJCWlm IChpc0lFKSB7CgkJCQkvL1RoaXMgZmFkZUluIGhlbHBzIHRoZSBiaWN1YmljIHJl c2FtcGxpbmcgdG8ga2ljay1pbi4KCQkJCWlmIChwaG90bykgewoJCQkJCSRsb2Fk ZWQuZmFkZUluKDEwMCk7CgkJCQl9CgkJCX0KCQkJCgkJCSR0aXRsZS5odG1sKHNl dHRpbmdzLnRpdGxlKS5hZGQoJGxvYWRlZCkuc2hvdygpOwoJCQkKCQkJaWYgKHRv dGFsID4gMSkgeyAvLyBoYW5kbGUgZ3JvdXBpbmcKCQkJCWlmICh0eXBlb2Ygc2V0 dGluZ3MuY3VycmVudCA9PT0gInN0cmluZyIpIHsKCQkJCQkkY3VycmVudC5odG1s KHNldHRpbmdzLmN1cnJlbnQucmVwbGFjZSgne2N1cnJlbnR9JywgaW5kZXggKyAx KS5yZXBsYWNlKCd7dG90YWx9JywgdG90YWwpKS5zaG93KCk7CgkJCQl9CgkJCQkK CQkJCSRuZXh0WyhzZXR0aW5ncy5sb29wIHx8IGluZGV4IDwgdG90YWwgLSAxKSA/ ICJzaG93IiA6ICJoaWRlIl0oKS5odG1sKHNldHRpbmdzLm5leHQpOwoJCQkJJHBy ZXZbKHNldHRpbmdzLmxvb3AgfHwgaW5kZXgpID8gInNob3ciIDogImhpZGUiXSgp Lmh0bWwoc2V0dGluZ3MucHJldmlvdXMpOwoJCQkJCgkJCQlpZiAoc2V0dGluZ3Mu c2xpZGVzaG93KSB7CgkJCQkJJHNsaWRlc2hvdy5zaG93KCk7CgkJCQl9CgkJCQkK CQkJCS8vIFByZWxvYWRzIGltYWdlcyB3aXRoaW4gYSByZWwgZ3JvdXAKCQkJCWlm IChzZXR0aW5ncy5wcmVsb2FkaW5nKSB7CgkJCQkJcHJlbG9hZCA9IFsKCQkJCQkJ Z2V0SW5kZXgoLTEpLAoJCQkJCQlnZXRJbmRleCgxKQoJCQkJCV07CgkJCQkJd2hp bGUgKGkgPSAkcmVsYXRlZFtwcmVsb2FkLnBvcCgpXSkgewoJCQkJCQlkYXRhID0g JC5kYXRhKGksIGNvbG9yYm94KTsKCQkJCQkJCgkJCQkJCWlmIChkYXRhICYmIGRh dGEuaHJlZikgewoJCQkJCQkJc3JjID0gZGF0YS5ocmVmOwoJCQkJCQkJaWYgKCQu aXNGdW5jdGlvbihzcmMpKSB7CgkJCQkJCQkJc3JjID0gc3JjLmNhbGwoaSk7CgkJ CQkJCQl9CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQlzcmMgPSBpLmhyZWY7CgkJCQkJ CX0KCgkJCQkJCWlmIChpc0ltYWdlKHNyYykpIHsKCQkJCQkJCWltZyA9IG5ldyBJ bWFnZSgpOwoJCQkJCQkJaW1nLnNyYyA9IHNyYzsKCQkJCQkJfQoJCQkJCX0KCQkJ CX0KCQkJfSBlbHNlIHsKCQkJCSRncm91cENvbnRyb2xzLmhpZGUoKTsKCQkJfQoJ CQkKCQkJaWYgKHNldHRpbmdzLmlmcmFtZSkgewoJCQkJaWZyYW1lID0gJHRhZygn aWZyYW1lJylbMF07CgkJCQkKCQkJCWlmIChmcmFtZUJvcmRlciBpbiBpZnJhbWUp IHsKCQkJCQlpZnJhbWVbZnJhbWVCb3JkZXJdID0gMDsKCQkJCX0KCQkJCWlmIChh bGxvd1RyYW5zcGFyZW5jeSBpbiBpZnJhbWUpIHsKCQkJCQlpZnJhbWVbYWxsb3dU cmFuc3BhcmVuY3ldID0gInRydWUiOwoJCQkJfQoJCQkJLy8gZ2l2ZSB0aGUgaWZy YW1lIGEgdW5pcXVlIG5hbWUgdG8gcHJldmVudCBjYWNoaW5nCgkJCQlpZnJhbWUu bmFtZSA9IHByZWZpeCArICgrbmV3IERhdGUoKSk7CgkJCQlpZiAoc2V0dGluZ3Mu ZmFzdElmcmFtZSkgewoJCQkJCWNvbXBsZXRlKCk7CgkJCQl9IGVsc2UgewoJCQkJ CSQoaWZyYW1lKS5vbmUoJ2xvYWQnLCBjb21wbGV0ZSk7CgkJCQl9CgkJCQlpZnJh bWUuc3JjID0gc2V0dGluZ3MuaHJlZjsKCQkJCWlmICghc2V0dGluZ3Muc2Nyb2xs aW5nKSB7CgkJCQkJaWZyYW1lLnNjcm9sbGluZyA9ICJubyI7CgkJCQl9CgkJCQkk KGlmcmFtZSkuYWRkQ2xhc3MocHJlZml4ICsgJ0lmcmFtZScpLmFwcGVuZFRvKCRs b2FkZWQpLm9uZShldmVudF9wdXJnZSwgZnVuY3Rpb24gKCkgewoJCQkJCWlmcmFt ZS5zcmMgPSAiLy9hYm91dDpibGFuayI7CgkJCQl9KTsKCQkJfSBlbHNlIHsKCQkJ CWNvbXBsZXRlKCk7CgkJCX0KCQkJCgkJCWlmIChzZXR0aW5ncy50cmFuc2l0aW9u ID09PSAnZmFkZScpIHsKCQkJCSRib3guZmFkZVRvKHNwZWVkLCAxLCByZW1vdmVG aWx0ZXIpOwoJCQl9IGVsc2UgewoJCQkJcmVtb3ZlRmlsdGVyKCk7CgkJCX0KCQl9 OwoJCQoJCWlmIChzZXR0aW5ncy50cmFuc2l0aW9uID09PSAnZmFkZScpIHsKCQkJ JGJveC5mYWRlVG8oc3BlZWQsIDAsIGZ1bmN0aW9uICgpIHsKCQkJCXB1YmxpY01l dGhvZC5wb3NpdGlvbigwLCBjYWxsYmFjayk7CgkJCX0pOwoJCX0gZWxzZSB7CgkJ CXB1YmxpY01ldGhvZC5wb3NpdGlvbihzcGVlZCwgY2FsbGJhY2spOwoJCX0KCX07 CgoJcHVibGljTWV0aG9kLmxvYWQgPSBmdW5jdGlvbiAobGF1bmNoZWQpIHsKCQl2 YXIgaHJlZiwgc2V0UmVzaXplLCBwcmVwID0gcHVibGljTWV0aG9kLnByZXA7CgkJ CgkJYWN0aXZlID0gdHJ1ZTsKCQkKCQlwaG90byA9IGZhbHNlOwoJCQoJCWVsZW1l bnQgPSAkcmVsYXRlZFtpbmRleF07CgkJCgkJaWYgKCFsYXVuY2hlZCkgewoJCQlt YWtlU2V0dGluZ3MoKTsKCQl9CgkJCgkJdHJpZ2dlcihldmVudF9wdXJnZSk7CgkJ CgkJdHJpZ2dlcihldmVudF9sb2FkLCBzZXR0aW5ncy5vbkxvYWQpOwoJCQoJCXNl dHRpbmdzLmggPSBzZXR0aW5ncy5oZWlnaHQgPwoJCQkJc2V0U2l6ZShzZXR0aW5n cy5oZWlnaHQsICd5JykgLSBsb2FkZWRIZWlnaHQgLSBpbnRlcmZhY2VIZWlnaHQg OgoJCQkJc2V0dGluZ3MuaW5uZXJIZWlnaHQgJiYgc2V0U2l6ZShzZXR0aW5ncy5p bm5lckhlaWdodCwgJ3knKTsKCQkKCQlzZXR0aW5ncy53ID0gc2V0dGluZ3Mud2lk dGggPwoJCQkJc2V0U2l6ZShzZXR0aW5ncy53aWR0aCwgJ3gnKSAtIGxvYWRlZFdp ZHRoIC0gaW50ZXJmYWNlV2lkdGggOgoJCQkJc2V0dGluZ3MuaW5uZXJXaWR0aCAm JiBzZXRTaXplKHNldHRpbmdzLmlubmVyV2lkdGgsICd4Jyk7CgkJCgkJLy8gU2V0 cyB0aGUgbWluaW11bSBkaW1lbnNpb25zIGZvciB1c2UgaW4gaW1hZ2Ugc2NhbGlu ZwoJCXNldHRpbmdzLm13ID0gc2V0dGluZ3MudzsKCQlzZXR0aW5ncy5taCA9IHNl dHRpbmdzLmg7CgkJCgkJLy8gUmUtZXZhbHVhdGUgdGhlIG1pbmltdW0gd2lkdGgg YW5kIGhlaWdodCBiYXNlZCBvbiBtYXhXaWR0aCBhbmQgbWF4SGVpZ2h0IHZhbHVl cy4KCQkvLyBJZiB0aGUgd2lkdGggb3IgaGVpZ2h0IGV4Y2VlZCB0aGUgbWF4V2lk dGggb3IgbWF4SGVpZ2h0LCB1c2UgdGhlIG1heGltdW0gdmFsdWVzIGluc3RlYWQu CgkJaWYgKHNldHRpbmdzLm1heFdpZHRoKSB7CgkJCXNldHRpbmdzLm13ID0gc2V0 U2l6ZShzZXR0aW5ncy5tYXhXaWR0aCwgJ3gnKSAtIGxvYWRlZFdpZHRoIC0gaW50 ZXJmYWNlV2lkdGg7CgkJCXNldHRpbmdzLm13ID0gc2V0dGluZ3MudyAmJiBzZXR0 aW5ncy53IDwgc2V0dGluZ3MubXcgPyBzZXR0aW5ncy53IDogc2V0dGluZ3MubXc7 CgkJfQoJCWlmIChzZXR0aW5ncy5tYXhIZWlnaHQpIHsKCQkJc2V0dGluZ3MubWgg PSBzZXRTaXplKHNldHRpbmdzLm1heEhlaWdodCwgJ3knKSAtIGxvYWRlZEhlaWdo dCAtIGludGVyZmFjZUhlaWdodDsKCQkJc2V0dGluZ3MubWggPSBzZXR0aW5ncy5o ICYmIHNldHRpbmdzLmggPCBzZXR0aW5ncy5taCA/IHNldHRpbmdzLmggOiBzZXR0 aW5ncy5taDsKCQl9CgkJCgkJaHJlZiA9IHNldHRpbmdzLmhyZWY7CgkJCgkJbG9h ZGluZ1RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CgkJCSRsb2FkaW5n T3ZlcmxheS5zaG93KCk7CgkJfSwgMTAwKTsKCQkKCQlpZiAoc2V0dGluZ3MuaW5s aW5lKSB7CgkJCS8vIEluc2VydHMgYW4gZW1wdHkgcGxhY2Vob2xkZXIgd2hlcmUg aW5saW5lIGNvbnRlbnQgaXMgYmVpbmcgcHVsbGVkIGZyb20uCgkJCS8vIEFuIGV2 ZW50IGlzIGJvdW5kIHRvIHB1dCBpbmxpbmUgY29udGVudCBiYWNrIHdoZW4gQ29s b3JCb3ggY2xvc2VzIG9yIGxvYWRzIG5ldyBjb250ZW50LgoJCQkkdGFnKGRpdiku aGlkZSgpLmluc2VydEJlZm9yZSgkKGhyZWYpWzBdKS5vbmUoZXZlbnRfcHVyZ2Us IGZ1bmN0aW9uICgpIHsKCQkJCSQodGhpcykucmVwbGFjZVdpdGgoJGxvYWRlZC5j aGlsZHJlbigpKTsKCQkJfSk7CgkJCXByZXAoJChocmVmKSk7CgkJfSBlbHNlIGlm IChzZXR0aW5ncy5pZnJhbWUpIHsKCQkJLy8gSUZyYW1lIGVsZW1lbnQgd29uJ3Qg YmUgYWRkZWQgdG8gdGhlIERPTSB1bnRpbCBpdCBpcyByZWFkeSB0byBiZSBkaXNw bGF5ZWQsCgkJCS8vIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggRE9NLXJlYWR5IEpT IHRoYXQgbWlnaHQgYmUgdHJ5aW5nIHRvIHJ1biBpbiB0aGF0IGlmcmFtZS4KCQkJ cHJlcCgiICIpOwoJCX0gZWxzZSBpZiAoc2V0dGluZ3MuaHRtbCkgewoJCQlwcmVw KHNldHRpbmdzLmh0bWwpOwoJCX0gZWxzZSBpZiAoaXNJbWFnZShocmVmKSkgewoJ CQkkKHBob3RvID0gbmV3IEltYWdlKCkpCgkJCS5hZGRDbGFzcyhwcmVmaXggKyAn UGhvdG8nKQoJCQkuZXJyb3IoZnVuY3Rpb24gKCkgewoJCQkJc2V0dGluZ3MudGl0 bGUgPSBmYWxzZTsKCQkJCXByZXAoJHRhZyhkaXYsICdFcnJvcicpLmh0bWwoc2V0 dGluZ3MuaW1nRXJyb3IpKTsKCQkJfSkKCQkJLmxvYWQoZnVuY3Rpb24gKCkgewoJ CQkJdmFyIHBlcmNlbnQ7CgkJCQlwaG90by5vbmxvYWQgPSBudWxsOyAvL3N0b3Bz IGFuaW1hdGVkIGdpZnMgZnJvbSBmaXJpbmcgdGhlIG9ubG9hZCByZXBlYXRlZGx5 LgoJCQkJCgkJCQlpZiAoc2V0dGluZ3Muc2NhbGVQaG90b3MpIHsKCQkJCQlzZXRS ZXNpemUgPSBmdW5jdGlvbiAoKSB7CgkJCQkJCXBob3RvLmhlaWdodCAtPSBwaG90 by5oZWlnaHQgKiBwZXJjZW50OwoJCQkJCQlwaG90by53aWR0aCAtPSBwaG90by53 aWR0aCAqIHBlcmNlbnQ7CQoJCQkJCX07CgkJCQkJaWYgKHNldHRpbmdzLm13ICYm IHBob3RvLndpZHRoID4gc2V0dGluZ3MubXcpIHsKCQkJCQkJcGVyY2VudCA9IChw aG90by53aWR0aCAtIHNldHRpbmdzLm13KSAvIHBob3RvLndpZHRoOwoJCQkJCQlz ZXRSZXNpemUoKTsKCQkJCQl9CgkJCQkJaWYgKHNldHRpbmdzLm1oICYmIHBob3Rv LmhlaWdodCA+IHNldHRpbmdzLm1oKSB7CgkJCQkJCXBlcmNlbnQgPSAocGhvdG8u aGVpZ2h0IC0gc2V0dGluZ3MubWgpIC8gcGhvdG8uaGVpZ2h0OwoJCQkJCQlzZXRS ZXNpemUoKTsKCQkJCQl9CgkJCQl9CgkJCQkKCQkJCWlmIChzZXR0aW5ncy5oKSB7 CgkJCQkJcGhvdG8uc3R5bGUubWFyZ2luVG9wID0gTWF0aC5tYXgoc2V0dGluZ3Mu aCAtIHBob3RvLmhlaWdodCwgMCkgLyAyICsgJ3B4JzsKCQkJCX0KCQkJCQoJCQkJ aWYgKCRyZWxhdGVkWzFdICYmIChzZXR0aW5ncy5sb29wIHx8ICRyZWxhdGVkW2lu ZGV4ICsgMV0pKSB7CgkJCQkJcGhvdG8uc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXIn OwoJCQkJCXBob3RvLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7CgkJCQkJCXB1Ymxp Y01ldGhvZC5uZXh0KCk7CgkJCQkJfTsKCQkJCX0KCQkJCQoJCQkJaWYgKGlzSUUp IHsKCQkJCQlwaG90by5zdHlsZS5tc0ludGVycG9sYXRpb25Nb2RlID0gJ2JpY3Vi aWMnOwoJCQkJfQoJCQkJCgkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgLy8g QSBwYXVzZSBiZWNhdXNlIENocm9tZSB3aWxsIHNvbWV0aW1lcyByZXBvcnQgYSAw IGJ5IDAgc2l6ZSBvdGhlcndpc2UuCgkJCQkJcHJlcChwaG90byk7CgkJCQl9LCAx KTsKCQkJfSk7CgkJCQoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgLy8gQSBw YXVzZSBiZWNhdXNlIE9wZXJhIDEwLjYrIHdpbGwgc29tZXRpbWVzIG5vdCBydW4g dGhlIG9ubG9hZCBmdW5jdGlvbiBvdGhlcndpc2UuCgkJCQlwaG90by5zcmMgPSBo cmVmOwoJCQl9LCAxKTsKCQl9IGVsc2UgaWYgKGhyZWYpIHsKCQkJJGxvYWRpbmdC YXkubG9hZChocmVmLCBzZXR0aW5ncy5kYXRhLCBmdW5jdGlvbiAoZGF0YSwgc3Rh dHVzLCB4aHIpIHsKCQkJCXByZXAoc3RhdHVzID09PSAnZXJyb3InID8gJHRhZyhk aXYsICdFcnJvcicpLmh0bWwoc2V0dGluZ3MueGhyRXJyb3IpIDogJCh0aGlzKS5j b250ZW50cygpKTsKCQkJfSk7CgkJfQoJfTsKCQkKCS8vIE5hdmlnYXRlcyB0byB0 aGUgbmV4dCBwYWdlL2ltYWdlIGluIGEgc2V0LgoJcHVibGljTWV0aG9kLm5leHQg PSBmdW5jdGlvbiAoKSB7CgkJaWYgKCFhY3RpdmUgJiYgJHJlbGF0ZWRbMV0gJiYg KHNldHRpbmdzLmxvb3AgfHwgJHJlbGF0ZWRbaW5kZXggKyAxXSkpIHsKCQkJaW5k ZXggPSBnZXRJbmRleCgxKTsKCQkJcHVibGljTWV0aG9kLmxvYWQoKTsKCQl9Cgl9 OwoJCglwdWJsaWNNZXRob2QucHJldiA9IGZ1bmN0aW9uICgpIHsKCQlpZiAoIWFj dGl2ZSAmJiAkcmVsYXRlZFsxXSAmJiAoc2V0dGluZ3MubG9vcCB8fCBpbmRleCkp IHsKCQkJaW5kZXggPSBnZXRJbmRleCgtMSk7CgkJCXB1YmxpY01ldGhvZC5sb2Fk KCk7CgkJfQoJfTsKCgkvLyBOb3RlOiB0byB1c2UgdGhpcyB3aXRoaW4gYW4gaWZy YW1lIHVzZSB0aGUgZm9sbG93aW5nIGZvcm1hdDogcGFyZW50LiQuZm4uY29sb3Ji b3guY2xvc2UoKTsKCXB1YmxpY01ldGhvZC5jbG9zZSA9IGZ1bmN0aW9uICgpIHsK CQlpZiAob3BlbiAmJiAhY2xvc2luZykgewoJCQkKCQkJY2xvc2luZyA9IHRydWU7 CgkJCQoJCQlvcGVuID0gZmFsc2U7CgkJCQoJCQl0cmlnZ2VyKGV2ZW50X2NsZWFu dXAsIHNldHRpbmdzLm9uQ2xlYW51cCk7CgkJCQoJCQkkd2luZG93LnVuYmluZCgn LicgKyBwcmVmaXggKyAnIC4nICsgZXZlbnRfaWU2KTsKCQkJCgkJCSRvdmVybGF5 LmZhZGVUbygyMDAsIDApOwoJCQkKCQkJJGJveC5zdG9wKCkuZmFkZVRvKDMwMCwg MCwgZnVuY3Rpb24gKCkgewoJCQkJIAoJCQkJJGJveC5hZGQoJG92ZXJsYXkpLmNz cyh7J29wYWNpdHknOiAxLCBjdXJzb3I6ICdhdXRvJ30pLmhpZGUoKTsKCQkJCQoJ CQkJdHJpZ2dlcihldmVudF9wdXJnZSk7CgkJCQkKCQkJCSRsb2FkZWQucmVtb3Zl KCk7CgkJCQkKCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewoJCQkJCWNsb3Np bmcgPSBmYWxzZTsKCQkJCQl0cmlnZ2VyKGV2ZW50X2Nsb3NlZCwgc2V0dGluZ3Mu b25DbG9zZWQpOwoJCQkJfSwgMSk7CgkJCX0pOwoJCX0KCX07CgoJLy8gUmVtb3Zl cyBjaGFuZ2VzIENvbG9yQm94IG1hZGUgdG8gdGhlIGRvY3VtZW50LCBidXQgZG9l cyBub3QgcmVtb3ZlIHRoZSBwbHVnaW4KCS8vIGZyb20galF1ZXJ5LgoJcHVibGlj TWV0aG9kLnJlbW92ZSA9IGZ1bmN0aW9uICgpIHsKCQkkKFtdKS5hZGQoJGJveCku YWRkKCRvdmVybGF5KS5yZW1vdmUoKTsKCQkkYm94ID0gbnVsbDsKCQkkKCcuJyAr IGJveEVsZW1lbnQpCgkJCS5yZW1vdmVEYXRhKGNvbG9yYm94KQoJCQkucmVtb3Zl Q2xhc3MoYm94RWxlbWVudCkKCQkJLmRpZSgpOwoJfTsKCgkvLyBBIG1ldGhvZCBm b3IgZmV0Y2hpbmcgdGhlIGN1cnJlbnQgZWxlbWVudCBDb2xvckJveCBpcyByZWZl cmVuY2luZy4KCS8vIHJldHVybnMgYSBqUXVlcnkgb2JqZWN0LgoJcHVibGljTWV0 aG9kLmVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7CgkJcmV0dXJuICQoZWxlbWVudCk7 Cgl9OwoKCXB1YmxpY01ldGhvZC5zZXR0aW5ncyA9IGRlZmF1bHRzOwoKfShqUXVl cnksIGRvY3VtZW50LCB0aGlzKSk7 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=jwplayer.js Content-Type: application/x-javascript; name=jwplayer.js Content-Location: http://ege.edu.ru/common/js/jwplayer/jwplayer.js Content-Transfer-Encoding: Base64 InVuZGVmaW5lZCI9PXR5cGVvZiBqd3BsYXllciYmKGp3cGxheWVyPWZ1bmN0aW9u KGQpe2lmKGp3cGxheWVyLmFwaSlyZXR1cm4gandwbGF5ZXIuYXBpLnNlbGVjdFBs YXllcihkKX0sandwbGF5ZXIudmVyc2lvbj0iNi4zLjMyNDIiLGp3cGxheWVyLnZp ZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpLGp3cGxheWVyLmF1ZGlv PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImF1ZGlvIiksandwbGF5ZXIuc291cmNl PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNvdXJjZSIpLGZ1bmN0aW9uKGQpe2Z1 bmN0aW9uIGEoYil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUoYil9fXZhciBo PWRvY3VtZW50LGc9d2luZG93LGM9bmF2aWdhdG9yLGI9ZC51dGlscz1mdW5jdGlv bigpe307Yi5leGlzdHM9ZnVuY3Rpb24oYil7c3dpdGNoKHR5cGVvZiBiKXtjYXNl ICJzdHJpbmciOnJldHVybiAwPGIubGVuZ3RoO2Nhc2UgIm9iamVjdCI6cmV0dXJu IG51bGwhPT1iO2Nhc2UgInVuZGVmaW5lZCI6cmV0dXJuITF9cmV0dXJuITB9Owpi LnN0eWxlRGltZW5zaW9uPWZ1bmN0aW9uKGIpe3JldHVybiBiKygwPGIudG9TdHJp bmcoKS5pbmRleE9mKCIlIik/IiI6InB4Iil9O2IuZ2V0QWJzb2x1dGVQYXRoPWZ1 bmN0aW9uKGEsZSl7Yi5leGlzdHMoZSl8fChlPWgubG9jYXRpb24uaHJlZik7aWYo Yi5leGlzdHMoYSkpe3ZhciBjO2lmKGIuZXhpc3RzKGEpKXtjPWEuaW5kZXhPZigi Oi8vIik7dmFyIGc9YS5pbmRleE9mKCI/Iik7Yz0wPGMmJigwPmd8fGc+Yyl9ZWxz ZSBjPXZvaWQgMDtpZihjKXJldHVybiBhO2M9ZS5zdWJzdHJpbmcoMCxlLmluZGV4 T2YoIjovLyIpKzMpO3ZhciBnPWUuc3Vic3RyaW5nKGMubGVuZ3RoLGUuaW5kZXhP ZigiLyIsYy5sZW5ndGgrMSkpLGs7MD09PWEuaW5kZXhPZigiLyIpP2s9YS5zcGxp dCgiLyIpOihrPWUuc3BsaXQoIj8iKVswXSxrPWsuc3Vic3RyaW5nKGMubGVuZ3Ro K2cubGVuZ3RoKzEsay5sYXN0SW5kZXhPZigiLyIpKSxrPWsuc3BsaXQoIi8iKS5j b25jYXQoYS5zcGxpdCgiLyIpKSk7CmZvcih2YXIgZj1bXSxkPTA7ZDxrLmxlbmd0 aDtkKyspa1tkXSYmKGIuZXhpc3RzKGtbZF0pJiYiLiIhPWtbZF0pJiYoIi4uIj09 a1tkXT9mLnBvcCgpOmYucHVzaChrW2RdKSk7cmV0dXJuIGMrZysiLyIrZi5qb2lu KCIvIil9fTtiLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhPWIuZXh0ZW5kLmFyZ3Vt ZW50cztpZigxPGEubGVuZ3RoKXtmb3IodmFyIGU9MTtlPGEubGVuZ3RoO2UrKylm b3IodmFyIGMgaW4gYVtlXSl0cnl7Yi5leGlzdHMoYVtlXVtjXSkmJihhWzBdW2Nd PWFbZV1bY10pfWNhdGNoKGspe31yZXR1cm4gYVswXX1yZXR1cm4gbnVsbH07Yi5s b2c9ZnVuY3Rpb24oYixhKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJiJ1 bmRlZmluZWQiIT10eXBlb2YgY29uc29sZS5sb2cmJihhP2NvbnNvbGUubG9nKGIs YSk6Y29uc29sZS5sb2coYikpfTt2YXIgZT1iLnVzZXJBZ2VudE1hdGNoPWZ1bmN0 aW9uKGIpe3JldHVybiBudWxsIT09Yy51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5t YXRjaChiKX07CmIuaXNJRT1hKC9tc2llL2kpO2IuaXNGRj1hKC9maXJlZm94L2kp O2IuaXNDaHJvbWU9YSgvY2hyb21lL2kpO2IuaXNJT1M9YSgvaVAoaG9uZXxhZHxv ZCkvaSk7Yi5pc0lQb2Q9YSgvaVAoaG9uZXxvZCkvaSk7Yi5pc0lQYWQ9YSgvaVBh ZC9pKTtiLmlzU2FmYXJpNjAyPWEoL01hY2ludG9zaC4qTWFjIE9TIFggMTBfOC4q NlwuMFwuXGQqIFNhZmFyaS9pKTtiLmlzQW5kcm9pZD1mdW5jdGlvbihiKXtyZXR1 cm4gYj9lKFJlZ0V4cCgiYW5kcm9pZC4qIitiLCJpIikpOmUoL2FuZHJvaWQvaSl9 O2IuaXNNb2JpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYi5pc0lPUygpfHxiLmlzQW5k cm9pZCgpfTtiLnNhdmVDb29raWU9ZnVuY3Rpb24oYixhKXtoLmNvb2tpZT0iandw bGF5ZXIuIitiKyJceDNkIithKyI7IHBhdGhceDNkLyJ9O2IuZ2V0Q29va2llcz1m dW5jdGlvbigpe2Zvcih2YXIgYj17fSxhPWguY29va2llLnNwbGl0KCI7ICIpLGU9 MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGM9YVtlXS5zcGxpdCgiXHgzZCIpOwowPT1j WzBdLmluZGV4T2YoImp3cGxheWVyLiIpJiYoYltjWzBdLnN1YnN0cmluZyg5LGNb MF0ubGVuZ3RoKV09Y1sxXSl9cmV0dXJuIGJ9O2IudHlwZU9mPWZ1bmN0aW9uKGIp e3ZhciBhPXR5cGVvZiBiO3JldHVybiJvYmplY3QiPT09YT8hYj8ibnVsbCI6YiBp bnN0YW5jZW9mIEFycmF5PyJhcnJheSI6YTphfTtiLnRyYW5zbGF0ZUV2ZW50UmVz cG9uc2U9ZnVuY3Rpb24oYSxlKXt2YXIgYz1iLmV4dGVuZCh7fSxlKTthPT1kLmV2 ZW50cy5KV1BMQVlFUl9GVUxMU0NSRUVOJiYhYy5mdWxsc2NyZWVuPyhjLmZ1bGxz Y3JlZW49InRydWUiPT1jLm1lc3NhZ2U/ITA6ITEsZGVsZXRlIGMubWVzc2FnZSk6 Im9iamVjdCI9PXR5cGVvZiBjLmRhdGE/KGM9Yi5leHRlbmQoYyxjLmRhdGEpLGRl bGV0ZSBjLmRhdGEpOiJvYmplY3QiPT10eXBlb2YgYy5tZXRhZGF0YSYmYi5kZWVw UmVwbGFjZUtleU5hbWUoYy5tZXRhZGF0YSxbIl9fZG90X18iLCJfX3NwY19fIiwi X19kc2hfXyIsIl9fZGVmYXVsdF9fIl0sClsiLiIsIiAiLCItIiwiZGVmYXVsdCJd KTt2YXIgaz1bInBvc2l0aW9uIiwiZHVyYXRpb24iLCJvZmZzZXQiXSxnO2Zvcihn IGluIGspY1trW2ddXSYmKGNba1tnXV09TWF0aC5yb3VuZCgxRTMqY1trW2ddXSkv MUUzKTtyZXR1cm4gY307Yi5mbGFzaFZlcnNpb249ZnVuY3Rpb24oKXtpZihiLmlz QW5kcm9pZCgpKXJldHVybiAwO3ZhciBhPWMucGx1Z2lucyxlO3RyeXtpZigidW5k ZWZpbmVkIiE9PWEmJihlPWFbIlNob2Nrd2F2ZSBGbGFzaCJdKSlyZXR1cm4gcGFy c2VJbnQoZS5kZXNjcmlwdGlvbi5yZXBsYWNlKC9cRCsoXGQrKVwuLiovLCIkMSIp KX1jYXRjaChrKXt9aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBnLkFjdGl2ZVhPYmpl Y3QpdHJ5e2lmKGU9bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNo b2Nrd2F2ZUZsYXNoIikpcmV0dXJuIHBhcnNlSW50KGUuR2V0VmFyaWFibGUoIiR2 ZXJzaW9uIikuc3BsaXQoIiAiKVsxXS5zcGxpdCgiLCIpWzBdKX1jYXRjaChkKXt9 cmV0dXJuIDB9OwpiLmdldFNjcmlwdFBhdGg9ZnVuY3Rpb24oYil7Zm9yKHZhciBh PWguZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLGU9MDtlPGEubGVuZ3Ro O2UrKyl7dmFyIGM9YVtlXS5zcmM7aWYoYyYmMDw9Yy5pbmRleE9mKGIpKXJldHVy biBjLnN1YnN0cigwLGMuaW5kZXhPZihiKSl9cmV0dXJuIiJ9O2IuZGVlcFJlcGxh Y2VLZXlOYW1lPWZ1bmN0aW9uKGIsYSxlKXtzd2l0Y2goZC51dGlscy50eXBlT2Yo Yikpe2Nhc2UgImFycmF5Ijpmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyliW2Nd PWQudXRpbHMuZGVlcFJlcGxhY2VLZXlOYW1lKGJbY10sYSxlKTticmVhaztjYXNl ICJvYmplY3QiOmZvcih2YXIgayBpbiBiKXt2YXIgZjtpZihhIGluc3RhbmNlb2Yg QXJyYXkmJmUgaW5zdGFuY2VvZiBBcnJheSlpZihhLmxlbmd0aCE9ZS5sZW5ndGgp Y29udGludWU7ZWxzZSBmPWE7ZWxzZSBmPVthXTtmb3IodmFyIGc9ayxjPTA7Yzxm Lmxlbmd0aDtjKyspZz1nLnJlcGxhY2UoUmVnRXhwKGFbY10sCiJnIiksZVtjXSk7 YltnXT1kLnV0aWxzLmRlZXBSZXBsYWNlS2V5TmFtZShiW2tdLGEsZSk7ayE9ZyYm ZGVsZXRlIGJba119fXJldHVybiBifTt2YXIgaz1iLnBsdWdpblBhdGhUeXBlPXtB QlNPTFVURTowLFJFTEFUSVZFOjEsQ0ROOjJ9O2IuZ2V0UGx1Z2luUGF0aFR5cGU9 ZnVuY3Rpb24oYSl7aWYoInN0cmluZyI9PXR5cGVvZiBhKXthPWEuc3BsaXQoIj8i KVswXTt2YXIgZT1hLmluZGV4T2YoIjovLyIpO2lmKDA8ZSlyZXR1cm4gay5BQlNP TFVURTt2YXIgYz1hLmluZGV4T2YoIi8iKTthPWIuZXh0ZW5zaW9uKGEpO3JldHVy biAwPmUmJjA+YyYmKCFhfHwhaXNOYU4oYSkpP2suQ0ROOmsuUkVMQVRJVkV9fTti LmdldFBsdWdpbk5hbWU9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXigu KlwvKT8oW14tXSopLT8uKlwuKHN3ZnxqcykkLywiJDIiKX07Yi5nZXRQbHVnaW5W ZXJzaW9uPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1teLV0qLT8oW15c Ll0qKS4qJC8sIiQxIil9OwpiLmlzWW91VHViZT1mdW5jdGlvbihhKXtyZXR1cm4t MTxhLmluZGV4T2YoInlvdXR1YmUuY29tIil8fC0xPGEuaW5kZXhPZigieW91dHUu YmUiKX07Yi5pc1J0bXA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD09YS5pbmRleE9m KCJydG1wIil8fCJydG1wIj09Yn07Yi5mb3JlYWNoPWZ1bmN0aW9uKGEsYil7Zm9y KHZhciBlIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShlKSYmYihlKX07Yi5pc0hUVFBT PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PWcubG9jYXRpb24uaHJlZi5pbmRleE9mKCJo dHRwcyIpfTtiLnJlcG89ZnVuY3Rpb24oKXt2YXIgYT0iaHR0cDovL3AuandwY2Ru LmNvbS8iK2QudmVyc2lvbi5zcGxpdCgvXFcvKS5zcGxpY2UoMCwyKS5qb2luKCIv IikrIi8iO3RyeXtiLmlzSFRUUFMoKSYmKGE9YS5yZXBsYWNlKCJodHRwOi8vIiwi aHR0cHM6Ly9zc2wuIikpfWNhdGNoKGUpe31yZXR1cm4gYX19KGp3cGxheWVyKSxm dW5jdGlvbihkKXt2YXIgYT0idmlkZW8vIixoPXttcDQ6YSsibXA0IiwKdm9yYmlz OiJhdWRpby9vZ2ciLG9nZzphKyJvZ2ciLHdlYm06YSsid2VibSIsYWFjOiJhdWRp by9tcDQiLG1wMzoiYXVkaW8vbXBlZyIsaGxzOiJhcHBsaWNhdGlvbi92bmQuYXBw bGUubXBlZ3VybCJ9LGc9e21wNDpoLm1wNCxmNHY6aC5tcDQsbTR2OmgubXA0LG1v djpoLm1wNCxtNGE6aC5hYWMsZjRhOmguYWFjLGFhYzpoLmFhYyxtcDM6aC5tcDMs b2d2Omgub2dnLG9nZzpoLnZvcmJpcyxvZ2E6aC52b3JiaXMsd2VibTpoLndlYm0s bTN1ODpoLmhscyxobHM6aC5obHN9LGE9InZpZGVvIixhPXtmbHY6YSxmNHY6YSxt b3Y6YSxtNGE6YSxtNHY6YSxtcDQ6YSxhYWM6YSxmNGE6YSxtcDM6InNvdW5kIixz bWlsOiJydG1wIixtM3U4OiJobHMiLGhsczoiaGxzIn0sYz1kLmV4dGVuc2lvbm1h cD17fSxiO2ZvcihiIGluIGcpY1tiXT17aHRtbDU6Z1tiXX07Zm9yKGIgaW4gYSlj W2JdfHwoY1tiXT17fSksY1tiXS5mbGFzaD1hW2JdO2MudHlwZXM9aDtjLm1pbWVU eXBlPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiBoKWlmKGhbYl09PQphKXJldHVy biBifTtjLmV4dFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGMubWltZVR5cGUoZ1th XSl9fShqd3BsYXllci51dGlscyksZnVuY3Rpb24oZCl7dmFyIGE9ZC5sb2FkZXJz dGF0dXM9e05FVzowLExPQURJTkc6MSxFUlJPUjoyLENPTVBMRVRFOjN9LGg9ZG9j dW1lbnQ7ZC5zY3JpcHRsb2FkZXI9ZnVuY3Rpb24oZyl7ZnVuY3Rpb24gYygpe2U9 YS5FUlJPUjtsLnNlbmRFdmVudChrLkVSUk9SKX1mdW5jdGlvbiBiKCl7ZT1hLkNP TVBMRVRFO2wuc2VuZEV2ZW50KGsuQ09NUExFVEUpfXZhciBlPWEuTkVXLGs9andw bGF5ZXIuZXZlbnRzLGw9bmV3IGsuZXZlbnRkaXNwYXRjaGVyO2QuZXh0ZW5kKHRo aXMsbCk7dGhpcy5sb2FkPWZ1bmN0aW9uKCl7dmFyIGw9ZC5zY3JpcHRsb2FkZXIu bG9hZGVyc1tnXTtpZihsJiYobC5nZXRTdGF0dXMoKT09YS5ORVd8fGwuZ2V0U3Rh dHVzKCk9PWEuTE9BRElORykpbC5hZGRFdmVudExpc3RlbmVyKGsuRVJST1IsYyks bC5hZGRFdmVudExpc3RlbmVyKGsuQ09NUExFVEUsCmIpO2Vsc2UgaWYoZC5zY3Jp cHRsb2FkZXIubG9hZGVyc1tnXT10aGlzLGU9PWEuTkVXKXtlPWEuTE9BRElORzt2 YXIgbj1oLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO24uYWRkRXZlbnRMaXN0ZW5l cj8obi5vbmxvYWQ9YixuLm9uZXJyb3I9Yyk6bi5yZWFkeVN0YXRlJiYobi5vbnJl YWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXsoImxvYWRlZCI9PW4ucmVhZHlTdGF0 ZXx8ImNvbXBsZXRlIj09bi5yZWFkeVN0YXRlKSYmYigpfSk7aC5nZXRFbGVtZW50 c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKG4pO24uc3JjPWd9fTt0 aGlzLmdldFN0YXR1cz1mdW5jdGlvbigpe3JldHVybiBlfX07ZC5zY3JpcHRsb2Fk ZXIubG9hZGVycz17fX0oandwbGF5ZXIudXRpbHMpLGZ1bmN0aW9uKGQpe2QudHJp bT1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9eXHMqLywiIikucmVwbGFj ZSgvXHMqJC8sIiIpfTtkLnBhZD1mdW5jdGlvbihhLGQsZyl7Zm9yKGd8fChnPSIw Iik7YS5sZW5ndGg8CmQ7KWE9ZythO3JldHVybiBhfTtkLnhtbEF0dHJpYnV0ZT1m dW5jdGlvbihhLGQpe2Zvcih2YXIgZz0wO2c8YS5hdHRyaWJ1dGVzLmxlbmd0aDtn KyspaWYoYS5hdHRyaWJ1dGVzW2ddLm5hbWUmJmEuYXR0cmlidXRlc1tnXS5uYW1l LnRvTG93ZXJDYXNlKCk9PWQudG9Mb3dlckNhc2UoKSlyZXR1cm4gYS5hdHRyaWJ1 dGVzW2ddLnZhbHVlLnRvU3RyaW5nKCk7cmV0dXJuIiJ9O2QuZXh0ZW5zaW9uPWZ1 bmN0aW9uKGEpe2lmKCFhfHwicnRtcCI9PWEuc3Vic3RyKDAsNCkpcmV0dXJuIiI7 YT1hLnN1YnN0cmluZyhhLmxhc3RJbmRleE9mKCIvIikrMSxhLmxlbmd0aCkuc3Bs aXQoIj8iKVswXS5zcGxpdCgiIyIpWzBdO2lmKC0xPGEubGFzdEluZGV4T2YoIi4i KSlyZXR1cm4gYS5zdWJzdHIoYS5sYXN0SW5kZXhPZigiLiIpKzEsYS5sZW5ndGgp LnRvTG93ZXJDYXNlKCl9O2Quc3RyaW5nVG9Db2xvcj1mdW5jdGlvbihhKXthPWEu cmVwbGFjZSgvKCN8MHgpPyhbMC05QS1GXXszLDZ9KSQvZ2ksCiIkMiIpOzM9PWEu bGVuZ3RoJiYoYT1hLmNoYXJBdCgwKSthLmNoYXJBdCgwKSthLmNoYXJBdCgxKSth LmNoYXJBdCgxKSthLmNoYXJBdCgyKSthLmNoYXJBdCgyKSk7cmV0dXJuIHBhcnNl SW50KGEsMTYpfX0oandwbGF5ZXIudXRpbHMpLGZ1bmN0aW9uKGQpe2Qua2V5PWZ1 bmN0aW9uKGEpe3ZhciBoLGcsYzt0aGlzLmVkaXRpb249ZnVuY3Rpb24oKXtyZXR1 cm4gYyYmYy5nZXRUaW1lKCk8KG5ldyBEYXRlKS5nZXRUaW1lKCk/ImludmFsaWQi Omh9O3RoaXMudG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gZ307ZC5leGlzdHMoYSl8 fChhPSIiKTt0cnl7YT1kLnRlYS5kZWNyeXB0KGEsIjM2UVhxNFdAR1NCVl50ZVIi KTt2YXIgYj1hLnNwbGl0KCIvIik7KGg9YlswXSl8fChoPSJmcmVlIik7Zz1iWzFd O2JbMl0mJjA8cGFyc2VJbnQoYlsyXSkmJihjPW5ldyBEYXRlLGMuc2V0VGltZShT dHJpbmcoYlsyXSkpKX1jYXRjaChlKXtoPSJpbnZhbGlkIn19fShqd3BsYXllci51 dGlscyksZnVuY3Rpb24oZCl7dmFyIGE9CmQudGVhPXt9O2EuZW5jcnlwdD1mdW5j dGlvbihjLGIpe2lmKDA9PWMubGVuZ3RoKXJldHVybiIiO3ZhciBlPWEuc3RyVG9M b25ncyhnLmVuY29kZShjKSk7MT49ZS5sZW5ndGgmJihlWzFdPTApO2Zvcih2YXIg az1hLnN0clRvTG9uZ3MoZy5lbmNvZGUoYikuc2xpY2UoMCwxNikpLGw9ZS5sZW5n dGgsZD1lW2wtMV0sbj1lWzBdLHEsaj1NYXRoLmZsb29yKDYrNTIvbCksZj0wOzA8 ai0tOyl7Zis9MjY1NDQzNTc2OTtxPWY+Pj4yJjM7Zm9yKHZhciByPTA7cjxsO3Ir KyluPWVbKHIrMSklbF0sZD0oZD4+PjVebjw8MikrKG4+Pj4zXmQ8PDQpXihmXm4p KyhrW3ImM15xXV5kKSxkPWVbcl0rPWR9ZT1hLmxvbmdzVG9TdHIoZSk7cmV0dXJu IGguZW5jb2RlKGUpfTthLmRlY3J5cHQ9ZnVuY3Rpb24oYyxiKXtpZigwPT1jLmxl bmd0aClyZXR1cm4iIjtmb3IodmFyIGU9YS5zdHJUb0xvbmdzKGguZGVjb2RlKGMp KSxrPWEuc3RyVG9Mb25ncyhnLmVuY29kZShiKS5zbGljZSgwLDE2KSksZD1lLmxl bmd0aCwKbT1lW2QtMV0sbj1lWzBdLHEsaj0yNjU0NDM1NzY5Kk1hdGguZmxvb3Io Nis1Mi9kKTswIT1qOyl7cT1qPj4+MiYzO2Zvcih2YXIgZj1kLTE7MDw9ZjtmLS0p bT1lWzA8Zj9mLTE6ZC0xXSxtPShtPj4+NV5uPDwyKSsobj4+PjNebTw8NCleKGpe bikrKGtbZiYzXnFdXm0pLG49ZVtmXS09bTtqLT0yNjU0NDM1NzY5fWU9YS5sb25n c1RvU3RyKGUpO2U9ZS5yZXBsYWNlKC9cMCskLywiIik7cmV0dXJuIGcuZGVjb2Rl KGUpfTthLnN0clRvTG9uZ3M9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPUFycmF5KE1h dGguY2VpbChhLmxlbmd0aC80KSksZT0wO2U8Yi5sZW5ndGg7ZSsrKWJbZV09YS5j aGFyQ29kZUF0KDQqZSkrKGEuY2hhckNvZGVBdCg0KmUrMSk8PDgpKyhhLmNoYXJD b2RlQXQoNCplKzIpPDwxNikrKGEuY2hhckNvZGVBdCg0KmUrMyk8PDI0KTtyZXR1 cm4gYn07YS5sb25nc1RvU3RyPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1BcnJheShh Lmxlbmd0aCksZT0wO2U8YS5sZW5ndGg7ZSsrKWJbZV09ClN0cmluZy5mcm9tQ2hh ckNvZGUoYVtlXSYyNTUsYVtlXT4+PjgmMjU1LGFbZV0+Pj4xNiYyNTUsYVtlXT4+ PjI0JjI1NSk7cmV0dXJuIGIuam9pbigiIil9O3ZhciBoPXtjb2RlOiJBQkNERUZH SElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEy MzQ1Njc4OSsvXHgzZCIsZW5jb2RlOmZ1bmN0aW9uKGEsYil7dmFyIGUsayxkLG0s bj1bXSxxPSIiLGosZixyPWguY29kZTtmPSgidW5kZWZpbmVkIj09dHlwZW9mIGI/ MDpiKT9nLmVuY29kZShhKTphO2o9Zi5sZW5ndGglMztpZigwPGopZm9yKDszPmor KzspcSs9Ilx4M2QiLGYrPSJceDAwIjtmb3Ioaj0wO2o8Zi5sZW5ndGg7ais9Myll PWYuY2hhckNvZGVBdChqKSxrPWYuY2hhckNvZGVBdChqKzEpLGQ9Zi5jaGFyQ29k ZUF0KGorMiksbT1lPDwxNnxrPDw4fGQsZT1tPj4xOCY2MyxrPW0+PjEyJjYzLGQ9 bT4+NiY2MyxtJj02MyxuW2ovM109ci5jaGFyQXQoZSkrci5jaGFyQXQoaykrci5j aGFyQXQoZCkrCnIuY2hhckF0KG0pO249bi5qb2luKCIiKTtyZXR1cm4gbj1uLnNs aWNlKDAsbi5sZW5ndGgtcS5sZW5ndGgpK3F9LGRlY29kZTpmdW5jdGlvbihhLGIp e2I9InVuZGVmaW5lZCI9PXR5cGVvZiBiPyExOmI7dmFyIGUsayxkLG0sbixxPVtd LGosZj1oLmNvZGU7aj1iP2cuZGVjb2RlKGEpOmE7Zm9yKHZhciByPTA7cjxqLmxl bmd0aDtyKz00KWU9Zi5pbmRleE9mKGouY2hhckF0KHIpKSxrPWYuaW5kZXhPZihq LmNoYXJBdChyKzEpKSxtPWYuaW5kZXhPZihqLmNoYXJBdChyKzIpKSxuPWYuaW5k ZXhPZihqLmNoYXJBdChyKzMpKSxkPWU8PDE4fGs8PDEyfG08PDZ8bixlPWQ+Pj4x NiYyNTUsaz1kPj4+OCYyNTUsZCY9MjU1LHFbci80XT1TdHJpbmcuZnJvbUNoYXJD b2RlKGUsayxkKSw2ND09biYmKHFbci80XT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUs aykpLDY0PT1tJiYocVtyLzRdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO209cS5q b2luKCIiKTtyZXR1cm4gYj9nLmRlY29kZShtKTptfX0sCmc9e2VuY29kZTpmdW5j dGlvbihhKXthPWEucmVwbGFjZSgvW1x1MDA4MC1cdTA3ZmZdL2csZnVuY3Rpb24o YSl7YT1hLmNoYXJDb2RlQXQoMCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUo MTkyfGE+PjYsMTI4fGEmNjMpfSk7cmV0dXJuIGE9YS5yZXBsYWNlKC9bXHUwODAw LVx1ZmZmZl0vZyxmdW5jdGlvbihhKXthPWEuY2hhckNvZGVBdCgwKTtyZXR1cm4g U3RyaW5nLmZyb21DaGFyQ29kZSgyMjR8YT4+MTIsMTI4fGE+PjYmNjMsMTI4fGEm NjMpfSl9LGRlY29kZTpmdW5jdGlvbihhKXthPWEucmVwbGFjZSgvW1x1MDBlMC1c dTAwZWZdW1x1MDA4MC1cdTAwYmZdW1x1MDA4MC1cdTAwYmZdL2csZnVuY3Rpb24o YSl7YT0oYS5jaGFyQ29kZUF0KDApJjE1KTw8MTJ8KGEuY2hhckNvZGVBdCgxKSY2 Myk8PDZ8YS5jaGFyQ29kZUF0KDIpJjYzO3JldHVybiBTdHJpbmcuZnJvbUNoYXJD b2RlKGEpfSk7cmV0dXJuIGE9YS5yZXBsYWNlKC9bXHUwMGMwLVx1MDBkZl1bXHUw MDgwLVx1MDBiZl0vZywKZnVuY3Rpb24oYSl7YT0oYS5jaGFyQ29kZUF0KDApJjMx KTw8NnxhLmNoYXJDb2RlQXQoMSkmNjM7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNv ZGUoYSl9KX19fShqd3BsYXllci51dGlscyksZnVuY3Rpb24oZCl7ZC5ldmVudHM9 e0NPTVBMRVRFOiJDT01QTEVURSIsRVJST1I6IkVSUk9SIixBUElfUkVBRFk6Imp3 cGxheWVyQVBJUmVhZHkiLEpXUExBWUVSX1JFQURZOiJqd3BsYXllclJlYWR5IixK V1BMQVlFUl9GVUxMU0NSRUVOOiJqd3BsYXllckZ1bGxzY3JlZW4iLEpXUExBWUVS X1JFU0laRToiandwbGF5ZXJSZXNpemUiLEpXUExBWUVSX0VSUk9SOiJqd3BsYXll ckVycm9yIixKV1BMQVlFUl9NRURJQV9CRUZPUkVQTEFZOiJqd3BsYXllck1lZGlh QmVmb3JlUGxheSIsSldQTEFZRVJfTUVESUFfQkVGT1JFQ09NUExFVEU6Imp3cGxh eWVyTWVkaWFCZWZvcmVDb21wbGV0ZSIsSldQTEFZRVJfQ09NUE9ORU5UX1NIT1c6 Imp3cGxheWVyQ29tcG9uZW50U2hvdyIsSldQTEFZRVJfQ09NUE9ORU5UX0hJREU6 Imp3cGxheWVyQ29tcG9uZW50SGlkZSIsCkpXUExBWUVSX01FRElBX0JVRkZFUjoi andwbGF5ZXJNZWRpYUJ1ZmZlciIsSldQTEFZRVJfTUVESUFfQlVGRkVSX0ZVTEw6 Imp3cGxheWVyTWVkaWFCdWZmZXJGdWxsIixKV1BMQVlFUl9NRURJQV9FUlJPUjoi andwbGF5ZXJNZWRpYUVycm9yIixKV1BMQVlFUl9NRURJQV9MT0FERUQ6Imp3cGxh eWVyTWVkaWFMb2FkZWQiLEpXUExBWUVSX01FRElBX0NPTVBMRVRFOiJqd3BsYXll ck1lZGlhQ29tcGxldGUiLEpXUExBWUVSX01FRElBX1NFRUs6Imp3cGxheWVyTWVk aWFTZWVrIixKV1BMQVlFUl9NRURJQV9USU1FOiJqd3BsYXllck1lZGlhVGltZSIs SldQTEFZRVJfTUVESUFfVk9MVU1FOiJqd3BsYXllck1lZGlhVm9sdW1lIixKV1BM QVlFUl9NRURJQV9NRVRBOiJqd3BsYXllck1lZGlhTWV0YSIsSldQTEFZRVJfTUVE SUFfTVVURToiandwbGF5ZXJNZWRpYU11dGUiLEpXUExBWUVSX01FRElBX0xFVkVM UzoiandwbGF5ZXJNZWRpYUxldmVscyIsSldQTEFZRVJfTUVESUFfTEVWRUxfQ0hB TkdFRDoiandwbGF5ZXJNZWRpYUxldmVsQ2hhbmdlZCIsCkpXUExBWUVSX0NBUFRJ T05TX0NIQU5HRUQ6Imp3cGxheWVyQ2FwdGlvbnNDaGFuZ2VkIixKV1BMQVlFUl9D QVBUSU9OU19MSVNUOiJqd3BsYXllckNhcHRpb25zTGlzdCIsSldQTEFZRVJfUExB WUVSX1NUQVRFOiJqd3BsYXllclBsYXllclN0YXRlIixzdGF0ZTp7QlVGRkVSSU5H OiJCVUZGRVJJTkciLElETEU6IklETEUiLFBBVVNFRDoiUEFVU0VEIixQTEFZSU5H OiJQTEFZSU5HIn0sSldQTEFZRVJfUExBWUxJU1RfTE9BREVEOiJqd3BsYXllclBs YXlsaXN0TG9hZGVkIixKV1BMQVlFUl9QTEFZTElTVF9JVEVNOiJqd3BsYXllclBs YXlsaXN0SXRlbSIsSldQTEFZRVJfUExBWUxJU1RfQ09NUExFVEU6Imp3cGxheWVy UGxheWxpc3RDb21wbGV0ZSIsSldQTEFZRVJfRElTUExBWV9DTElDSzoiandwbGF5 ZXJWaWV3Q2xpY2siLEpXUExBWUVSX0NPTlRST0xTOiJqd3BsYXllclZpZXdDb250 cm9scyIsSldQTEFZRVJfSU5TVFJFQU1fQ0xJQ0s6Imp3cGxheWVySW5zdHJlYW1D bGlja2VkIiwKSldQTEFZRVJfSU5TVFJFQU1fREVTVFJPWUVEOiJqd3BsYXllcklu c3RyZWFtRGVzdHJveWVkIn19KGp3cGxheWVyKSxmdW5jdGlvbihkKXt2YXIgYT1q d3BsYXllci51dGlscztkLmV2ZW50ZGlzcGF0Y2hlcj1mdW5jdGlvbihkLGcpe3Zh ciBjLGI7dGhpcy5yZXNldEV2ZW50TGlzdGVuZXJzPWZ1bmN0aW9uKCl7Yz17fTti PVtdfTt0aGlzLnJlc2V0RXZlbnRMaXN0ZW5lcnMoKTt0aGlzLmFkZEV2ZW50TGlz dGVuZXI9ZnVuY3Rpb24oYixrLGQpe3RyeXthLmV4aXN0cyhjW2JdKXx8KGNbYl09 W10pLCJzdHJpbmciPT1hLnR5cGVPZihrKSYmKGs9KG5ldyBGdW5jdGlvbigicmV0 dXJuICIraykpKCkpLGNbYl0ucHVzaCh7bGlzdGVuZXI6ayxjb3VudDpkfSl9Y2F0 Y2goZyl7YS5sb2coImVycm9yIixnKX1yZXR1cm4hMX07dGhpcy5yZW1vdmVFdmVu dExpc3RlbmVyPWZ1bmN0aW9uKGIsZCl7aWYoY1tiXSl7dHJ5e2Zvcih2YXIgZz0w O2c8Y1tiXS5sZW5ndGg7ZysrKWlmKGNbYl1bZ10ubGlzdGVuZXIudG9TdHJpbmco KT09CmQudG9TdHJpbmcoKSl7Y1tiXS5zcGxpY2UoZywxKTticmVha319Y2F0Y2go aCl7YS5sb2coImVycm9yIixoKX1yZXR1cm4hMX19O3RoaXMuYWRkR2xvYmFsTGlz dGVuZXI9ZnVuY3Rpb24oZSxjKXt0cnl7InN0cmluZyI9PWEudHlwZU9mKGUpJiYo ZT0obmV3IEZ1bmN0aW9uKCJyZXR1cm4gIitlKSkoKSksYi5wdXNoKHtsaXN0ZW5l cjplLGNvdW50OmN9KX1jYXRjaChkKXthLmxvZygiZXJyb3IiLGQpfXJldHVybiEx fTt0aGlzLnJlbW92ZUdsb2JhbExpc3RlbmVyPWZ1bmN0aW9uKGUpe2lmKGUpe3Ry eXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKylpZihiW2NdLmxpc3RlbmVyLnRv U3RyaW5nKCk9PWUudG9TdHJpbmcoKSl7Yi5zcGxpY2UoYywxKTticmVha319Y2F0 Y2goZCl7YS5sb2coImVycm9yIixkKX1yZXR1cm4hMX19O3RoaXMuc2VuZEV2ZW50 PWZ1bmN0aW9uKGUsayl7YS5leGlzdHMoayl8fChrPXt9KTthLmV4dGVuZChrLHtp ZDpkLHZlcnNpb246andwbGF5ZXIudmVyc2lvbiwKdHlwZTplfSk7ZyYmYS5sb2co ZSxrKTtpZigidW5kZWZpbmVkIiE9YS50eXBlT2YoY1tlXSkpZm9yKHZhciBsPTA7 bDxjW2VdLmxlbmd0aDtsKyspe3RyeXtjW2VdW2xdLmxpc3RlbmVyKGspfWNhdGNo KG0pe2EubG9nKCJUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgaGFuZGxpbmcgYSBs aXN0ZW5lcjogIittLnRvU3RyaW5nKCksY1tlXVtsXS5saXN0ZW5lcil9Y1tlXVts XSYmKDE9PT1jW2VdW2xdLmNvdW50P2RlbGV0ZSBjW2VdW2xdOjA8Y1tlXVtsXS5j b3VudCYmKGNbZV1bbF0uY291bnQtPTEpKX1mb3IobD0wO2w8Yi5sZW5ndGg7bCsr KXt0cnl7YltsXS5saXN0ZW5lcihrKX1jYXRjaChuKXthLmxvZygiVGhlcmUgd2Fz IGFuIGVycm9yIHdoaWxlIGhhbmRsaW5nIGEgbGlzdGVuZXI6ICIrbi50b1N0cmlu ZygpLGJbbF0ubGlzdGVuZXIpfWJbbF0mJigxPT09YltsXS5jb3VudD9kZWxldGUg YltsXTowPGJbbF0uY291bnQmJihiW2xdLmNvdW50LT0xKSl9fX19KGp3cGxheWVy LmV2ZW50cyksCmZ1bmN0aW9uKGQpe3ZhciBhPXt9LGg9e307ZC5wbHVnaW5zPWZ1 bmN0aW9uKCl7fTtkLnBsdWdpbnMubG9hZFBsdWdpbnM9ZnVuY3Rpb24oZyxjKXto W2ddPW5ldyBkLnBsdWdpbnMucGx1Z2lubG9hZGVyKG5ldyBkLnBsdWdpbnMubW9k ZWwoYSksYyk7cmV0dXJuIGhbZ119O2QucGx1Z2lucy5yZWdpc3RlclBsdWdpbj1m dW5jdGlvbihnLGMsYixlKXt2YXIgaz1kLnV0aWxzLmdldFBsdWdpbk5hbWUoZyk7 YVtrXXx8KGFba109bmV3IGQucGx1Z2lucy5wbHVnaW4oZykpO2Fba10ucmVnaXN0 ZXJQbHVnaW4oZyxjLGIsZSl9fShqd3BsYXllciksZnVuY3Rpb24oZCl7ZC5wbHVn aW5zLm1vZGVsPWZ1bmN0aW9uKGEpe3RoaXMuYWRkUGx1Z2luPWZ1bmN0aW9uKGgp e3ZhciBnPWQudXRpbHMuZ2V0UGx1Z2luTmFtZShoKTthW2ddfHwoYVtnXT1uZXcg ZC5wbHVnaW5zLnBsdWdpbihoKSk7cmV0dXJuIGFbZ119O3RoaXMuZ2V0UGx1Z2lu cz1mdW5jdGlvbigpe3JldHVybiBhfX19KGp3cGxheWVyKSwKZnVuY3Rpb24oZCl7 dmFyIGE9andwbGF5ZXIudXRpbHMsaD1qd3BsYXllci5ldmVudHM7ZC5wbHVnaW5t b2Rlcz17RkxBU0g6MCxKQVZBU0NSSVBUOjEsSFlCUklEOjJ9O2QucGx1Z2luPWZ1 bmN0aW9uKGcpe2Z1bmN0aW9uIGMoKXtzd2l0Y2goYS5nZXRQbHVnaW5QYXRoVHlw ZShnKSl7Y2FzZSBhLnBsdWdpblBhdGhUeXBlLkFCU09MVVRFOnJldHVybiBnO2Nh c2UgYS5wbHVnaW5QYXRoVHlwZS5SRUxBVElWRTpyZXR1cm4gYS5nZXRBYnNvbHV0 ZVBhdGgoZyx3aW5kb3cubG9jYXRpb24uaHJlZil9fWZ1bmN0aW9uIGIoKXtxPXNl dFRpbWVvdXQoZnVuY3Rpb24oKXtrPWEubG9hZGVyc3RhdHVzLkNPTVBMRVRFO2ou c2VuZEV2ZW50KGguQ09NUExFVEUpfSwxRTMpfWZ1bmN0aW9uIGUoKXtrPWEubG9h ZGVyc3RhdHVzLkVSUk9SO2ouc2VuZEV2ZW50KGguRVJST1IpfXZhciBrPWEubG9h ZGVyc3RhdHVzLk5FVyxsLG0sbixxLGo9bmV3IGguZXZlbnRkaXNwYXRjaGVyO2Eu ZXh0ZW5kKHRoaXMsCmopO3RoaXMubG9hZD1mdW5jdGlvbigpe2lmKGs9PWEubG9h ZGVyc3RhdHVzLk5FVylpZigwPGcubGFzdEluZGV4T2YoIi5zd2YiKSlsPWcsaz1h LmxvYWRlcnN0YXR1cy5DT01QTEVURSxqLnNlbmRFdmVudChoLkNPTVBMRVRFKTtl bHNlIGlmKGEuZ2V0UGx1Z2luUGF0aFR5cGUoZyk9PWEucGx1Z2luUGF0aFR5cGUu Q0ROKWs9YS5sb2FkZXJzdGF0dXMuQ09NUExFVEUsai5zZW5kRXZlbnQoaC5DT01Q TEVURSk7ZWxzZXtrPWEubG9hZGVyc3RhdHVzLkxPQURJTkc7dmFyIGY9bmV3IGEu c2NyaXB0bG9hZGVyKGMoKSk7Zi5hZGRFdmVudExpc3RlbmVyKGguQ09NUExFVEUs Yik7Zi5hZGRFdmVudExpc3RlbmVyKGguRVJST1IsZSk7Zi5sb2FkKCl9fTt0aGlz LnJlZ2lzdGVyUGx1Z2luPWZ1bmN0aW9uKGIsZSxjLGQpe3EmJihjbGVhclRpbWVv dXQocSkscT12b2lkIDApO249ZTtjJiZkPyhsPWQsbT1jKToic3RyaW5nIj09dHlw ZW9mIGM/bD1jOiJmdW5jdGlvbiI9PXR5cGVvZiBjP209YzoKIWMmJiFkJiYobD1i KTtrPWEubG9hZGVyc3RhdHVzLkNPTVBMRVRFO2ouc2VuZEV2ZW50KGguQ09NUExF VEUpfTt0aGlzLmdldFN0YXR1cz1mdW5jdGlvbigpe3JldHVybiBrfTt0aGlzLmdl dFBsdWdpbk5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRQbHVnaW5OYW1lKGcp fTt0aGlzLmdldEZsYXNoUGF0aD1mdW5jdGlvbigpe2lmKGwpc3dpdGNoKGEuZ2V0 UGx1Z2luUGF0aFR5cGUobCkpe2Nhc2UgYS5wbHVnaW5QYXRoVHlwZS5BQlNPTFVU RTpyZXR1cm4gbDtjYXNlIGEucGx1Z2luUGF0aFR5cGUuUkVMQVRJVkU6cmV0dXJu IDA8Zy5sYXN0SW5kZXhPZigiLnN3ZiIpP2EuZ2V0QWJzb2x1dGVQYXRoKGwsd2lu ZG93LmxvY2F0aW9uLmhyZWYpOmEuZ2V0QWJzb2x1dGVQYXRoKGwsYygpKX1yZXR1 cm4gbnVsbH07dGhpcy5nZXRKUz1mdW5jdGlvbigpe3JldHVybiBtfTt0aGlzLmdl dFRhcmdldD1mdW5jdGlvbigpe3JldHVybiBufTt0aGlzLmdldFBsdWdpbm1vZGU9 ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIiE9CnR5cGVvZiBsJiYidW5kZWZpbmVk IiE9dHlwZW9mIG0pcmV0dXJuIGQucGx1Z2lubW9kZXMuSFlCUklEO2lmKCJ1bmRl ZmluZWQiIT10eXBlb2YgbClyZXR1cm4gZC5wbHVnaW5tb2Rlcy5GTEFTSDtpZigi dW5kZWZpbmVkIiE9dHlwZW9mIG0pcmV0dXJuIGQucGx1Z2lubW9kZXMuSkFWQVND UklQVH07dGhpcy5nZXROZXdJbnN0YW5jZT1mdW5jdGlvbihhLGIsZSl7cmV0dXJu IG5ldyBtKGEsYixlKX07dGhpcy5nZXRVUkw9ZnVuY3Rpb24oKXtyZXR1cm4gZ319 fShqd3BsYXllci5wbHVnaW5zKSxmdW5jdGlvbihkKXt2YXIgYT1kLnV0aWxzLGg9 ZC5ldmVudHM7ZC5wbHVnaW5zLnBsdWdpbmxvYWRlcj1mdW5jdGlvbihnLGMpe2Z1 bmN0aW9uIGIoKXttP2ouc2VuZEV2ZW50KGguRVJST1Ise21lc3NhZ2U6bn0pOmx8 fChsPSEwLGs9YS5sb2FkZXJzdGF0dXMuQ09NUExFVEUsai5zZW5kRXZlbnQoaC5D T01QTEVURSkpfWZ1bmN0aW9uIGUoKXtxfHxiKCk7aWYoIWwmJiFtKXt2YXIgZT0w LApjPWcuZ2V0UGx1Z2lucygpLGY7Zm9yKGYgaW4gcSl7dmFyIGs9YS5nZXRQbHVn aW5OYW1lKGYpLGg9Y1trXSxrPWguZ2V0SlMoKSxqPWguZ2V0VGFyZ2V0KCksaD1o LmdldFN0YXR1cygpO2lmKGg9PWEubG9hZGVyc3RhdHVzLkxPQURJTkd8fGg9PWEu bG9hZGVyc3RhdHVzLk5FVyllKys7ZWxzZSBpZihrJiYoIWp8fHBhcnNlRmxvYXQo aik+cGFyc2VGbG9hdChkLnZlcnNpb24pKSltPSEwLG49IkluY29tcGF0aWJsZSBw bGF5ZXIgdmVyc2lvbiIsYigpfTA9PWUmJmIoKX19dmFyIGs9YS5sb2FkZXJzdGF0 dXMuTkVXLGw9ITEsbT0hMSxuLHE9YyxqPW5ldyBoLmV2ZW50ZGlzcGF0Y2hlcjth LmV4dGVuZCh0aGlzLGopO3RoaXMuc2V0dXBQbHVnaW5zPWZ1bmN0aW9uKGIsZSxj KXt2YXIgZj17bGVuZ3RoOjAscGx1Z2luczp7fX0sZD0wLGs9e30saD1nLmdldFBs dWdpbnMoKSxsO2ZvcihsIGluIGUucGx1Z2lucyl7dmFyIGo9YS5nZXRQbHVnaW5O YW1lKGwpLG09aFtqXSxCPW0uZ2V0Rmxhc2hQYXRoKCksCm49bS5nZXRKUygpLHE9 bS5nZXRVUkwoKTtCJiYoZi5wbHVnaW5zW0JdPWEuZXh0ZW5kKHt9LGUucGx1Z2lu c1tsXSksZi5wbHVnaW5zW0JdLnBsdWdpbm1vZGU9bS5nZXRQbHVnaW5tb2RlKCks Zi5sZW5ndGgrKyk7dHJ5e2lmKG4mJmUucGx1Z2lucyYmZS5wbHVnaW5zW3FdKXt2 YXIgdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt2LmlkPWIuaWQrIl8i K2o7di5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3Yuc3R5bGUudG9wPTA7di5z dHlsZS56SW5kZXg9ZCsxMDtrW2pdPW0uZ2V0TmV3SW5zdGFuY2UoYixhLmV4dGVu ZCh7fSxlLnBsdWdpbnNbcV0pLHYpO2QrKztiLm9uUmVhZHkoYyhrW2pdLHYsITAp KTtiLm9uUmVzaXplKGMoa1tqXSx2KSl9fWNhdGNoKEMpe2EubG9nKCJFUlJPUjog RmFpbGVkIHRvIGxvYWQgIitqKyIuIil9fWIucGx1Z2lucz1rO3JldHVybiBmfTt0 aGlzLmxvYWQ9ZnVuY3Rpb24oKXtpZighKGEuZXhpc3RzKGMpJiYib2JqZWN0IiE9 YS50eXBlT2YoYykpKXtrPQphLmxvYWRlcnN0YXR1cy5MT0FESU5HO2Zvcih2YXIg YiBpbiBjKWlmKGEuZXhpc3RzKGIpKXt2YXIgZD1nLmFkZFBsdWdpbihiKTtkLmFk ZEV2ZW50TGlzdGVuZXIoaC5DT01QTEVURSxlKTtkLmFkZEV2ZW50TGlzdGVuZXIo aC5FUlJPUixmKX1kPWcuZ2V0UGx1Z2lucygpO2ZvcihiIGluIGQpZFtiXS5sb2Fk KCl9ZSgpfTt2YXIgZj10aGlzLnBsdWdpbkZhaWxlZD1mdW5jdGlvbigpe218fCht PSEwLG49IkZpbGUgbm90IGZvdW5kIixiKCkpfTt0aGlzLmdldFN0YXR1cz1mdW5j dGlvbigpe3JldHVybiBrfX19KGp3cGxheWVyKSxmdW5jdGlvbihkKXtkLnBsYXls aXN0PWZ1bmN0aW9uKGEpe3ZhciBoPVtdO2lmKCJhcnJheSI9PWQudXRpbHMudHlw ZU9mKGEpKWZvcih2YXIgZz0wO2c8YS5sZW5ndGg7ZysrKWgucHVzaChuZXcgZC5w bGF5bGlzdC5pdGVtKGFbZ10pKTtlbHNlIGgucHVzaChuZXcgZC5wbGF5bGlzdC5p dGVtKGEpKTtyZXR1cm4gaH19KGp3cGxheWVyKSxmdW5jdGlvbihkKXt2YXIgYT0K ZC5pdGVtPWZ1bmN0aW9uKGgpe3ZhciBnPWp3cGxheWVyLnV0aWxzLGM9Zy5leHRl bmQoe30sYS5kZWZhdWx0cyxoKTtjLnRyYWNrcz1nLmV4aXN0cyhoLnRyYWNrcyk/ aC50cmFja3M6W107MD09Yy5zb3VyY2VzLmxlbmd0aCYmKGMuc291cmNlcz1bbmV3 IGQuc291cmNlKGMpXSk7Zm9yKHZhciBiPTA7YjxjLnNvdXJjZXMubGVuZ3RoO2Ir Kyl7dmFyIGU9Yy5zb3VyY2VzW2JdWyJkZWZhdWx0Il07Yy5zb3VyY2VzW2JdWyJk ZWZhdWx0Il09ZT8idHJ1ZSI9PWUudG9TdHJpbmcoKTohMTtjLnNvdXJjZXNbYl09 bmV3IGQuc291cmNlKGMuc291cmNlc1tiXSl9aWYoYy5jYXB0aW9ucyYmIWcuZXhp c3RzKGgudHJhY2tzKSl7Zm9yKGg9MDtoPGMuY2FwdGlvbnMubGVuZ3RoO2grKylj LnRyYWNrcy5wdXNoKGMuY2FwdGlvbnNbaF0pO2RlbGV0ZSBjLmNhcHRpb25zfWZv cihiPTA7YjxjLnRyYWNrcy5sZW5ndGg7YisrKWMudHJhY2tzW2JdPW5ldyBkLnRy YWNrKGMudHJhY2tzW2JdKTtyZXR1cm4gY307CmEuZGVmYXVsdHM9e2Rlc2NyaXB0 aW9uOiIiLGltYWdlOiIiLG1lZGlhaWQ6IiIsdGl0bGU6IiIsc291cmNlczpbXSx0 cmFja3M6W119fShqd3BsYXllci5wbGF5bGlzdCksZnVuY3Rpb24oZCl7dmFyIGE9 andwbGF5ZXIudXRpbHMsaD17ZmlsZTp2b2lkIDAsbGFiZWw6dm9pZCAwLHR5cGU6 dm9pZCAwLCJkZWZhdWx0Ijp2b2lkIDB9O2Quc291cmNlPWZ1bmN0aW9uKGQpe3Zh ciBjPWEuZXh0ZW5kKHt9LGgpLGI7Zm9yKGIgaW4gaClhLmV4aXN0cyhkW2JdKSYm KGNbYl09ZFtiXSxkZWxldGUgZFtiXSk7Yy50eXBlJiYwPGMudHlwZS5pbmRleE9m KCIvIikmJihjLnR5cGU9YS5leHRlbnNpb25tYXAubWltZVR5cGUoYy50eXBlKSk7 Im0zdTgiPT1jLnR5cGUmJihjLnR5cGU9ImhscyIpOyJzbWlsIj09Yy50eXBlJiYo Yy50eXBlPSJydG1wIik7cmV0dXJuIGN9fShqd3BsYXllci5wbGF5bGlzdCksZnVu Y3Rpb24oZCl7dmFyIGE9andwbGF5ZXIudXRpbHMsaD17ZmlsZTp2b2lkIDAsbGFi ZWw6dm9pZCAwLApraW5kOiJjYXB0aW9ucyIsImRlZmF1bHQiOiExfTtkLnRyYWNr PWZ1bmN0aW9uKGQpe3ZhciBjPWEuZXh0ZW5kKHt9LGgpO2R8fChkPXt9KTtmb3Io dmFyIGIgaW4gaClhLmV4aXN0cyhkW2JdKSYmKGNbYl09ZFtiXSxkZWxldGUgZFti XSk7cmV0dXJuIGN9fShqd3BsYXllci5wbGF5bGlzdCksZnVuY3Rpb24oZCl7dmFy IGE9ZC51dGlscyxoPWQuZXZlbnRzLGc9ZG9jdW1lbnQsYz1kLmVtYmVkPWZ1bmN0 aW9uKGIpe2Z1bmN0aW9uIGUoYSl7bChuLHArYS5tZXNzYWdlKX1mdW5jdGlvbiBr KCl7bChuLHArIk5vIHBsYXlhYmxlIHNvdXJjZXMgZm91bmQiKX1mdW5jdGlvbiBs KGIsZSl7aWYobS5mYWxsYmFjayl7dmFyIGM9Yi5zdHlsZTtjLmJhY2tncm91bmRD b2xvcj0iIzAwMCI7Yy5jb2xvcj0iI0ZGRiI7Yy53aWR0aD1hLnN0eWxlRGltZW5z aW9uKG0ud2lkdGgpO2MuaGVpZ2h0PWEuc3R5bGVEaW1lbnNpb24obS5oZWlnaHQp O2MuZGlzcGxheT0idGFibGUiO2Mub3BhY2l0eT0xO3ZhciBjPQpkb2N1bWVudC5j cmVhdGVFbGVtZW50KCJwIiksZD1jLnN0eWxlO2QudmVydGljYWxBbGlnbj0ibWlk ZGxlIjtkLnRleHRBbGlnbj0iY2VudGVyIjtkLmRpc3BsYXk9InRhYmxlLWNlbGwi O2QuZm9udD0iMTVweC8yMHB4IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYi O2MuaW5uZXJIVE1MPWUucmVwbGFjZSgiOiIsIjpceDNjYnJceDNlIik7Yi5pbm5l ckhUTUw9IiI7Yi5hcHBlbmRDaGlsZChjKX19dmFyIG09bmV3IGMuY29uZmlnKGIu Y29uZmlnKSxuLHEsaixmPW0ud2lkdGgscj1tLmhlaWdodCxwPSJFcnJvciBsb2Fk aW5nIHBsYXllcjogIixzPWQucGx1Z2lucy5sb2FkUGx1Z2lucyhiLmlkLG0ucGx1 Z2lucyk7bS5mYWxsYmFja0RpdiYmKGo9bS5mYWxsYmFja0RpdixkZWxldGUgbS5m YWxsYmFja0Rpdik7bS5pZD1iLmlkO3E9Zy5nZXRFbGVtZW50QnlJZChiLmlkKTtu PWcuY3JlYXRlRWxlbWVudCgiZGl2Iik7bi5pZD1xLmlkO24uc3R5bGUud2lkdGg9 MDxmLnRvU3RyaW5nKCkuaW5kZXhPZigiJSIpPwpmOmYrInB4IjtuLnN0eWxlLmhl aWdodD0wPHIudG9TdHJpbmcoKS5pbmRleE9mKCIlIik/cjpyKyJweCI7cS5wYXJl bnROb2RlLnJlcGxhY2VDaGlsZChuLHEpO2QuZW1iZWQuZXJyb3JTY3JlZW49bDtz LmFkZEV2ZW50TGlzdGVuZXIoaC5DT01QTEVURSxmdW5jdGlvbigpe2lmKCJhcnJh eSI9PWEudHlwZU9mKG0ucGxheWxpc3QpJiYyPm0ucGxheWxpc3QubGVuZ3RoJiYo MD09bS5wbGF5bGlzdC5sZW5ndGh8fCFtLnBsYXlsaXN0WzBdLnNvdXJjZXN8fDA9 PW0ucGxheWxpc3RbMF0uc291cmNlcy5sZW5ndGgpKWsoKTtlbHNlIGlmKHMuZ2V0 U3RhdHVzKCk9PWEubG9hZGVyc3RhdHVzLkNPTVBMRVRFKXtmb3IodmFyIGQ9MDtk PG0ubW9kZXMubGVuZ3RoO2QrKylpZihtLm1vZGVzW2RdLnR5cGUmJmNbbS5tb2Rl c1tkXS50eXBlXSl7dmFyIGY9YS5leHRlbmQoe30sbSksZz1uZXcgY1ttLm1vZGVz W2RdLnR5cGVdKG4sbS5tb2Rlc1tkXSxmLHMsYik7aWYoZy5zdXBwb3J0c0NvbmZp ZygpKXtnLmFkZEV2ZW50TGlzdGVuZXIoaC5FUlJPUiwKZSk7Zy5lbWJlZCgpO2Q9 YjtmPWYuZXZlbnRzO2c9dm9pZCAwO2ZvcihnIGluIGYpImZ1bmN0aW9uIj09dHlw ZW9mIGRbZ10mJmRbZ10uY2FsbChkLGZbZ10pO3JldHVybiBifX1tLmZhbGxiYWNr PyhhLmxvZygiTm8gc3VpdGFibGUgcGxheWVycyBmb3VuZCBhbmQgZmFsbGJhY2sg ZW5hYmxlZCIpLG5ldyBjLmRvd25sb2FkKG4sbSxrKSk6KGEubG9nKCJObyBzdWl0 YWJsZSBwbGF5ZXJzIGZvdW5kIGFuZCBmYWxsYmFjayBkaXNhYmxlZCIpLG4ucGFy ZW50Tm9kZS5yZXBsYWNlQ2hpbGQoaixuKSl9fSk7cy5hZGRFdmVudExpc3RlbmVy KGguRVJST1IsZnVuY3Rpb24oYSl7bChuLCJDb3VsZCBub3QgbG9hZCBwbHVnaW5z OiAiK2EubWVzc2FnZSl9KTtzLmxvYWQoKTtyZXR1cm4gYn19KGp3cGxheWVyKSxm dW5jdGlvbihkKXtmdW5jdGlvbiBhKGEpe2lmKGEucGxheWxpc3QpZm9yKHZhciBl PTA7ZTxhLnBsYXlsaXN0Lmxlbmd0aDtlKyspYS5wbGF5bGlzdFtlXT1uZXcgYyhh LnBsYXlsaXN0W2VdKTsKZWxzZXt2YXIgZT17fSxkO2ZvcihkIGluIGMuZGVmYXVs dHMpaChhLGUsZCk7ZS5zb3VyY2VzfHwoYS5sZXZlbHM/KGUuc291cmNlcz1hLmxl dmVscyxkZWxldGUgYS5sZXZlbHMpOihkPXt9LGgoYSxkLCJmaWxlIiksaChhLGQs InR5cGUiKSxlLnNvdXJjZXM9ZC5maWxlP1tkXTpbXSkpO2EucGxheWxpc3Q9W25l dyBjKGUpXX19ZnVuY3Rpb24gaChhLGUsYyl7Zy5leGlzdHMoYVtjXSkmJihlW2Nd PWFbY10sZGVsZXRlIGFbY10pfXZhciBnPWQudXRpbHMsYz1kLnBsYXlsaXN0Lml0 ZW07KGQuZW1iZWQuY29uZmlnPWZ1bmN0aW9uKGIpe3ZhciBlPXtmYWxsYmFjazoh MCxoZWlnaHQ6MjcwLHByaW1hcnk6Imh0bWw1Iix3aWR0aDo0ODAsYmFzZTpiLmJh c2U/Yi5iYXNlOmcuZ2V0U2NyaXB0UGF0aCgiandwbGF5ZXIuanMiKX07Yj1nLmV4 dGVuZChlLGQuZGVmYXVsdHMsYik7dmFyIGU9e3R5cGU6Imh0bWw1IixzcmM6Yi5i YXNlKyJqd3BsYXllci5odG1sNS5qcyJ9LGM9e3R5cGU6ImZsYXNoIiwKc3JjOmIu YmFzZSsiandwbGF5ZXIuZmxhc2guc3dmIn07Yi5tb2Rlcz0iZmxhc2giPT1iLnBy aW1hcnk/W2MsZV06W2UsY107Yi5saXN0YmFyJiYoYi5wbGF5bGlzdHNpemU9Yi5s aXN0YmFyLnNpemUsYi5wbGF5bGlzdHBvc2l0aW9uPWIubGlzdGJhci5wb3NpdGlv bik7Yi5mbGFzaHBsYXllciYmKGMuc3JjPWIuZmxhc2hwbGF5ZXIpO2IuaHRtbDVw bGF5ZXImJihlLnNyYz1iLmh0bWw1cGxheWVyKTthKGIpO3JldHVybiBifSkuYWRk Q29uZmlnPWZ1bmN0aW9uKGIsYyl7YShjKTtyZXR1cm4gZy5leHRlbmQoYixjKX19 KGp3cGxheWVyKSxmdW5jdGlvbihkKXt2YXIgYT1kLnV0aWxzLGg9ZG9jdW1lbnQ7 ZC5lbWJlZC5kb3dubG9hZD1mdW5jdGlvbihkLGMsYil7ZnVuY3Rpb24gZShhLGIp e2Zvcih2YXIgYz1oLnF1ZXJ5U2VsZWN0b3JBbGwoYSksZT0wO2U8Yy5sZW5ndGg7 ZSsrKWZvcih2YXIgZCBpbiBiKWNbZV0uc3R5bGVbZF09YltkXX1mdW5jdGlvbiBr KGEsYixjKXthPWguY3JlYXRlRWxlbWVudChhKTsKYiYmKGEuY2xhc3NOYW1lPSJq d2Rvd25sb2FkIitiKTtjJiZjLmFwcGVuZENoaWxkKGEpO3JldHVybiBhfXZhciBs PWEuZXh0ZW5kKHt9LGMpLG0sbj1sLndpZHRoP2wud2lkdGg6NDgwLHE9bC5oZWln aHQ/bC5oZWlnaHQ6MzIwLGo7Yz1jLmxvZ28/Yy5sb2dvOntwcmVmaXg6YS5yZXBv KCksZmlsZToibG9nby5wbmciLG1hcmdpbjoxMH07dmFyIGYscjtyPWwucGxheWxp c3Q7dmFyIHAscyxsPVsibXA0IiwiYWFjIiwibXAzIl07aWYociYmci5sZW5ndGgp e3A9clswXTtzPXAuc291cmNlcztmb3Iocj0wO3I8cy5sZW5ndGg7cisrKXt2YXIg dT1zW3JdLHQ9dS50eXBlP3UudHlwZTphLmV4dGVuc2lvbm1hcC5leHRUeXBlKGEu ZXh0ZW5zaW9uKHUuZmlsZSkpO2lmKHUuZmlsZSlmb3IociBpbiBsKXQ9PWxbcl0/ KG09dS5maWxlLGo9cC5pbWFnZSk6YS5pc1lvdVR1YmUodS5maWxlKSYmKGY9dS5m aWxlKX1tPyhiPW0sZCYmKG09aygiYSIsImRpc3BsYXkiLGQpLGsoImRpdiIsImlj b24iLAptKSxrKCJkaXYiLCJsb2dvIixtKSxiJiZtLnNldEF0dHJpYnV0ZSgiaHJl ZiIsYS5nZXRBYnNvbHV0ZVBhdGgoYikpKSxiPSIjIitkLmlkKyIgLmp3ZG93bmxv YWQiLGQuc3R5bGUud2lkdGg9IiIsZC5zdHlsZS5oZWlnaHQ9IiIsZShiKyJkaXNw bGF5Iix7d2lkdGg6YS5zdHlsZURpbWVuc2lvbihNYXRoLm1heCgzMjAsbikpLGhl aWdodDphLnN0eWxlRGltZW5zaW9uKE1hdGgubWF4KDE4MCxxKSksYmFja2dyb3Vu ZDoiYmxhY2sgY2VudGVyIG5vLXJlcGVhdCAiKyhqPyJ1cmwoIitqKyIpIjoiIiks YmFja2dyb3VuZFNpemU6ImNvbnRhaW4iLHBvc2l0aW9uOiJyZWxhdGl2ZSIsYm9y ZGVyOiJub25lIixkaXNwbGF5OiJibG9jayJ9KSxlKGIrImRpc3BsYXkgZGl2Iix7 cG9zaXRpb246ImFic29sdXRlIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn0p LGUoYisibG9nbyIse3RvcDpjLm1hcmdpbisicHgiLHJpZ2h0OmMubWFyZ2luKyJw eCIsYmFja2dyb3VuZDoidG9wIHJpZ2h0IG5vLXJlcGVhdCB1cmwoIisKYy5wcmVm aXgrYy5maWxlKyIpIn0pLGUoYisiaWNvbiIse2JhY2tncm91bmQ6ImNlbnRlciBu by1yZXBlYXQgdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FB QUFOU1VoRVVnQUFBRHdBQUFBOENBWUFBQUE2L05seUFBQUFHWFJGV0hSVGIyWjBk MkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBZ05KUkVGVWVOcnMy OGxxd2tBWUIvQ1pxTlZERGoycjZGTjQxUWVJeThGZStnajZCTDI3NVEwOHU5RmJU OFpkd1Zmb3RTQllFUFVreEZPb2tzNEVLaUpkYUR1VGpNbjN3V0JPMFYvK3N5U1I4 U05TcVZSS0lSOHFhWEhremxxUzlqQ2Z6eldjVENZcDloRjVvKzU5c1Zqc2lSemNl Z1Nja0Z6Y2pUK3J1TjgwVGVTbEFqQ0FBWHpkSlNHUEZYUnBBQU1Zd0FDR1pRa1Nk aEc0V0N6ZWhNTmhxVjZ2RzZ2VlNyaXJLVkV3NjZZb1NxRGI3Y3FsVWlsRThKakhk L3kxTVFlZlZ6cWREbWlhSnBmTFpXSGdYTUhuOEY2dkoxY3FsVkFrRXNHdUFuODNK NGdBZDJSWnltUXlnWDYvTDFlclZRdCs5WlBXYitDRHdjQ0MyelhHSmFld2wvRGhj SGhLM0RWaitLZktack1XdkZhcmNZTkxvbUF2NGFQUlNGWlZsVGxjU1BBNWZEd2VX L0JvTklxRm5LVjUzSnZuY2prTG5zL24vY0xkUys5Mk83UllMTGdzS2Z2OS90OFhs RG40ZUR5aXcrSEE5Snl6MmV5dDAra1kyKzNXRkM1aGx1ZWowSGE3elFRcTlQUHdk RHExRXQxc05zeC9uRkJnQ3FXSjhvQUsxYVVwdE5WcWNZV2V3RTRuYWhmVTBZUW5r NG50VUVmR01JVTJtMDFIb0xhQ0tiVFJhRGdLdGFWTGs5dEJZYUJjRS82QXJ0ZHI0 Ulo1VEI2L2RDKzlpSWUvV2dBTVlBRERwQVVKQXhqQUFBWXdnR0ZaZ29TL0F0Tk5U RjdaMmJMMEJZUEJWM0p3NXhGd3dXY1l4Z3RCUDVPa0U4aTlHN2FXR09PQ3J1dmF1 d0FEQUxNTE1FYktmNFNkQUFBQUFFbEZUa1N1UW1DQykifSkpOgpmPyhjPWYsZD1r KCJlbWJlZCIsIiIsZCksZC5zcmM9Imh0dHA6Ly93d3cueW91dHViZS5jb20vdi8i Ky92Wz1cL10oXHcqKXxcLyhcdyspJHxeKFx3KykkL2kuZXhlYyhjKS5zbGljZSgx KS5qb2luKCIiKSxkLnR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNo IixkLndpZHRoPW4sZC5oZWlnaHQ9cSk6YigpfX19KGp3cGxheWVyKSxmdW5jdGlv bihkKXt2YXIgYT1kLnV0aWxzLGg9ZC5ldmVudHMsZz17fTsoZC5lbWJlZC5mbGFz aD1mdW5jdGlvbihjLGIsZSxrLGwpe2Z1bmN0aW9uIG0oYSxiLGMpe3ZhciBlPWRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInBhcmFtIik7ZS5zZXRBdHRyaWJ1dGUoIm5h bWUiLGIpO2Uuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsYyk7YS5hcHBlbmRDaGlsZChl KX1mdW5jdGlvbiBuKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oKXt0cnl7YyYmZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQobC5pZCsiX3dyYXBwZXIiKS5hcHBlbmRDaGls ZChiKTt2YXIgZT0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobC5pZCkuZ2V0UGx1 Z2luQ29uZmlnKCJkaXNwbGF5Iik7ImZ1bmN0aW9uIj09dHlwZW9mIGEucmVzaXpl JiZhLnJlc2l6ZShlLndpZHRoLGUuaGVpZ2h0KTtiLnN0eWxlLmxlZnQ9ZS54O2Iu c3R5bGUudG9wPWUuaH1jYXRjaChkKXt9fX1mdW5jdGlvbiBxKGIpe2lmKCFiKXJl dHVybnt9O3ZhciBjPXt9LGU9W10sZDtmb3IoZCBpbiBiKXt2YXIgZj1hLmdldFBs dWdpbk5hbWUoZCksZz1iW2RdO2UucHVzaChkKTtmb3IodmFyIGsgaW4gZyljW2Yr Ii4iK2tdPWdba119Yy5wbHVnaW5zPWUuam9pbigiLCIpO3JldHVybiBjfXZhciBq PW5ldyBkLmV2ZW50cy5ldmVudGRpc3BhdGNoZXIsZj1hLmZsYXNoVmVyc2lvbigp O2EuZXh0ZW5kKHRoaXMsaik7dGhpcy5lbWJlZD1mdW5jdGlvbigpe2UuaWQ9bC5p ZDtpZigxMD5mKXJldHVybiBqLnNlbmRFdmVudChoLkVSUk9SLHttZXNzYWdlOiJG bGFzaCB2ZXJzaW9uIG11c3QgYmUgMTAuMCBvciBncmVhdGVyIn0pLAohMTt2YXIg ZCxwPWEuZXh0ZW5kKHt9LGUpO2MuaWQrIl93cmFwcGVyIj09Yy5wYXJlbnROb2Rl LmlkP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGMuaWQrIl93cmFwcGVyIik6KGQ9 ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5pZD1jLmlkKyJfd3JhcHBl ciIsZC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLGQuc3R5bGUud2lkdGg9YS5z dHlsZURpbWVuc2lvbihwLndpZHRoKSxkLnN0eWxlLmhlaWdodD1hLnN0eWxlRGlt ZW5zaW9uKHAuaGVpZ2h0KSxjLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGQsYyks ZC5hcHBlbmRDaGlsZChjKSk7ZD1rLnNldHVwUGx1Z2lucyhsLHAsbik7MDxkLmxl bmd0aD9hLmV4dGVuZChwLHEoZC5wbHVnaW5zKSk6ZGVsZXRlIHAucGx1Z2luczsi dW5kZWZpbmVkIiE9dHlwZW9mIHBbImRvY2sucG9zaXRpb24iXSYmImZhbHNlIj09 cFsiZG9jay5wb3NpdGlvbiJdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSYmKHAu ZG9jaz1wWyJkb2NrLnBvc2l0aW9uIl0sCmRlbGV0ZSBwWyJkb2NrLnBvc2l0aW9u Il0pO2Q9cC53bW9kZT9wLndtb2RlOnAuaGVpZ2h0JiY0MD49cC5oZWlnaHQ/InRy YW5zcGFyZW50Ijoib3BhcXVlIjtmb3IodmFyIHM9ImhlaWdodCB3aWR0aCBtb2Rl cyBldmVudHMgcHJpbWFyeSBiYXNlIGZhbGxiYWNrIHZvbHVtZSIuc3BsaXQoIiAi KSx1PTA7dTxzLmxlbmd0aDt1KyspZGVsZXRlIHBbc1t1XV07dmFyIHM9YS5nZXRD b29raWVzKCksdDtmb3IodCBpbiBzKSJ1bmRlZmluZWQiPT10eXBlb2YgcFt0XSYm KHBbdF09c1t0XSk7dD13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoIi8i KTt0LnNwbGljZSh0Lmxlbmd0aC0xLDEpO3Q9dC5qb2luKCIvIik7cC5iYXNlPXQr Ii8iO2dbYy5pZF09cDthLmlzSUUoKT8ocD0nXHgzY29iamVjdCBjbGFzc2lkXHgz ZCJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiICIg d2lkdGhceDNkIjEwMCUiIGhlaWdodFx4M2QiMTAwJSIgaWRceDNkIicrYy5pZCsK JyIgbmFtZVx4M2QiJytjLmlkKyciIHRhYmluZGV4XHgzZDAiIlx4M2UnLHArPSdc eDNjcGFyYW0gbmFtZVx4M2QibW92aWUiIHZhbHVlXHgzZCInK2Iuc3JjKyciXHgz ZScscCs9J1x4M2NwYXJhbSBuYW1lXHgzZCJhbGxvd2Z1bGxzY3JlZW4iIHZhbHVl XHgzZCJ0cnVlIlx4M2VceDNjcGFyYW0gbmFtZVx4M2QiYWxsb3dzY3JpcHRhY2Nl c3MiIHZhbHVlXHgzZCJhbHdheXMiXHgzZScscCs9J1x4M2NwYXJhbSBuYW1lXHgz ZCJzZWFtbGVzc3RhYmJpbmciIHZhbHVlXHgzZCJ0cnVlIlx4M2UnLHArPSdceDNj cGFyYW0gbmFtZVx4M2Qid21vZGUiIHZhbHVlXHgzZCInK2QrJyJceDNlJyxwKz0n XHgzY3BhcmFtIG5hbWVceDNkImJnY29sb3IiIHZhbHVlXHgzZCIjMDAwMDAwIlx4 M2UnLHArPSJceDNjL29iamVjdFx4M2UiLGMub3V0ZXJIVE1MPXAscD1kb2N1bWVu dC5nZXRFbGVtZW50QnlJZChjLmlkKSk6KHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgib2JqZWN0IikscC5zZXRBdHRyaWJ1dGUoInR5cGUiLAoiYXBwbGljYXRpb24v eC1zaG9ja3dhdmUtZmxhc2giKSxwLnNldEF0dHJpYnV0ZSgiZGF0YSIsYi5zcmMp LHAuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIjEwMCUiKSxwLnNldEF0dHJpYnV0ZSgi aGVpZ2h0IiwiMTAwJSIpLHAuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIiwiIzAwMDAw MCIpLHAuc2V0QXR0cmlidXRlKCJpZCIsYy5pZCkscC5zZXRBdHRyaWJ1dGUoIm5h bWUiLGMuaWQpLHAuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsMCksbShwLCJhbGxv d2Z1bGxzY3JlZW4iLCJ0cnVlIiksbShwLCJhbGxvd3NjcmlwdGFjY2VzcyIsImFs d2F5cyIpLG0ocCwic2VhbWxlc3N0YWJiaW5nIiwidHJ1ZSIpLG0ocCwid21vZGUi LGQpLGMucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQocCxjKSk7bC5jb250YWluZXI9 cDtsLnNldFBsYXllcihwLCJmbGFzaCIpfTt0aGlzLnN1cHBvcnRzQ29uZmlnPWZ1 bmN0aW9uKCl7aWYoZilpZihlKXtpZigic3RyaW5nIj09YS50eXBlT2YoZS5wbGF5 bGlzdCkpcmV0dXJuITA7CnRyeXt2YXIgYj1lLnBsYXlsaXN0WzBdLnNvdXJjZXM7 aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBiKXJldHVybiEwO2Zvcih2YXIgYz0wO2M8 Yi5sZW5ndGg7YysrKXt2YXIgZDtpZihkPWJbY10uZmlsZSl7dmFyIGc9YltjXS5m aWxlLGs9YltjXS50eXBlO2lmKGEuaXNZb3VUdWJlKGcpfHxhLmlzUnRtcChnLGsp fHwiaGxzIj09aylkPSEwO2Vsc2V7dmFyIGg9YS5leHRlbnNpb25tYXBbaz9rOmEu ZXh0ZW5zaW9uKGcpXTtkPSFoPyExOiEhaC5mbGFzaH19aWYoZClyZXR1cm4hMH19 Y2F0Y2goail7fX1lbHNlIHJldHVybiEwO3JldHVybiExfX0pLmdldFZhcnM9ZnVu Y3Rpb24oYSl7cmV0dXJuIGdbYV19fShqd3BsYXllciksZnVuY3Rpb24oZCl7dmFy IGE9ZC51dGlscyxoPWEuZXh0ZW5zaW9ubWFwLGc9ZC5ldmVudHM7ZC5lbWJlZC5o dG1sNT1mdW5jdGlvbihjLGIsZSxrLGwpe2Z1bmN0aW9uIG0oYSxiLGQpe3JldHVy biBmdW5jdGlvbigpe3RyeXt2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIj IisKYy5pZCsiIC5qd21haW4iKTtkJiZlLmFwcGVuZENoaWxkKGIpOyJmdW5jdGlv biI9PXR5cGVvZiBhLnJlc2l6ZSYmKGEucmVzaXplKGUuY2xpZW50V2lkdGgsZS5j bGllbnRIZWlnaHQpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXthLnJlc2l6ZShlLmNs aWVudFdpZHRoLGUuY2xpZW50SGVpZ2h0KX0sNDAwKSk7Yi5sZWZ0PWUuc3R5bGUu bGVmdDtiLnRvcD1lLnN0eWxlLnRvcH1jYXRjaChnKXt9fX1mdW5jdGlvbiBuKGEp e3Euc2VuZEV2ZW50KGEudHlwZSx7bWVzc2FnZToiSFRNTDUgcGxheWVyIG5vdCBm b3VuZCJ9KX12YXIgcT10aGlzLGo9bmV3IGcuZXZlbnRkaXNwYXRjaGVyO2EuZXh0 ZW5kKHEsaik7cS5lbWJlZD1mdW5jdGlvbigpe2lmKGQuaHRtbDUpe2suc2V0dXBQ bHVnaW5zKGwsZSxtKTtjLmlubmVySFRNTD0iIjt2YXIgZj1kLnV0aWxzLmV4dGVu ZCh7fSxlKTtkZWxldGUgZi52b2x1bWU7Zj1uZXcgZC5odG1sNS5wbGF5ZXIoZik7 bC5jb250YWluZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobC5pZCk7Cmwuc2V0 UGxheWVyKGYsImh0bWw1Iil9ZWxzZSBmPW5ldyBhLnNjcmlwdGxvYWRlcihiLnNy YyksZi5hZGRFdmVudExpc3RlbmVyKGcuRVJST1IsbiksZi5hZGRFdmVudExpc3Rl bmVyKGcuQ09NUExFVEUscS5lbWJlZCksZi5sb2FkKCl9O3Euc3VwcG9ydHNDb25m aWc9ZnVuY3Rpb24oKXtpZihkLnZpZC5jYW5QbGF5VHlwZSl0cnl7aWYoInN0cmlu ZyI9PWEudHlwZU9mKGUucGxheWxpc3QpKXJldHVybiEwO2Zvcih2YXIgYj1lLnBs YXlsaXN0WzBdLnNvdXJjZXMsYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZzt2YXIg az1iW2NdLmZpbGUsaj1iW2NdLnR5cGU7aWYobnVsbCE9PW5hdmlnYXRvci51c2Vy QWdlbnQubWF0Y2goL0JsYWNrQmVycnkvaSl8fGEuaXNBbmRyb2lkKCkmJigibTN1 Ij09YS5leHRlbnNpb24oayl8fCJtM3U4Ij09YS5leHRlbnNpb24oaykpfHxhLmlz UnRtcChrLGopKWc9ITE7ZWxzZXt2YXIgbD1oW2o/ajphLmV4dGVuc2lvbihrKV0s bTtpZighbHx8bC5mbGFzaCYmCiFsLmh0bWw1KW09ITE7ZWxzZXt2YXIgbj1sLmh0 bWw1LHE9ZC52aWQ7aWYobil0cnl7bT1xLmNhblBsYXlUeXBlKG4pPyEwOiExfWNh dGNoKHope209ITF9ZWxzZSBtPSEwfWc9bX1pZihnKXJldHVybiEwfX1jYXRjaChB KXt9cmV0dXJuITF9fX0oandwbGF5ZXIpLGZ1bmN0aW9uKGQpe3ZhciBhPWQuZW1i ZWQsaD1kLnV0aWxzLGc9aC5leHRlbmQoZnVuY3Rpb24oYyl7dmFyIGI9aC5yZXBv KCksZT1jLmNvbmZpZyxnPWUucGx1Z2lucyxsPWUuYW5hbHl0aWNzLG09Yisiandw c3J2LmpzIixuPWIrInNoYXJpbmcuanMiLHE9YisicmVsYXRlZC5qcyIsaj1iKyJn YXByby5qcyIsZj0obmV3IGQudXRpbHMua2V5KGQua2V5KSkuZWRpdGlvbigpLGc9 Zz9nOnt9OyJhZHMiPT1mJiZlLmFkdmVydGlzaW5nJiYoZS5hZHZlcnRpc2luZy5j bGllbnQubWF0Y2goIi5qcyR8LnN3ZiQiKT9nW2UuYWR2ZXJ0aXNpbmcuY2xpZW50 XT1lLmFkdmVydGlzaW5nOmdbYitlLmFkdmVydGlzaW5nLmNsaWVudCsKKCJmbGFz aCI9PWUucHJpbWFyeT8iLnN3ZiI6Ii5qcyIpXT1lLmFkdmVydGlzaW5nKTtkZWxl dGUgZS5hZHZlcnRpc2luZztlLmtleT1kLmtleTtlLmFuYWx5dGljcyYmKGUuYW5h bHl0aWNzLmNsaWVudCYmZS5hbmFseXRpY3MuY2xpZW50Lm1hdGNoKCIuanMkfC5z d2YkIikpJiYobT1lLmFuYWx5dGljcy5jbGllbnQpO2RlbGV0ZSBlLmFuYWx5dGlj cztpZigiZnJlZSI9PWZ8fCFsfHwhMSE9PWwuZW5hYmxlZClnW21dPWw/bDp7fTtk ZWxldGUgZy5zaGFyaW5nO2RlbGV0ZSBnLnJlbGF0ZWQ7aWYoInByZW1pdW0iPT1m fHwiYWRzIj09ZillLnNoYXJpbmcmJihlLnNoYXJpbmcuY2xpZW50JiZlLnNoYXJp bmcuY2xpZW50Lm1hdGNoKCIuanMkfC5zd2YkIikmJihuPWUuc2hhcmluZy5jbGll bnQpLGdbbl09ZS5zaGFyaW5nKSxlLnJlbGF0ZWQmJihlLnJlbGF0ZWQuY2xpZW50 JiZlLnJlbGF0ZWQuY2xpZW50Lm1hdGNoKCIuanMkfC5zd2YkIikmJihxPWUucmVs YXRlZC5jbGllbnQpLGdbcV09CmUucmVsYXRlZCksZS5nYSYmKGUuZ2EuY2xpZW50 JiZlLmdhLmNsaWVudC5tYXRjaCgiLmpzJHwuc3dmJCIpJiYoaj1lLmdhLmNsaWVu dCksZ1tqXT1lLmdhKSxlLnNraW4mJihlLnNraW49ZS5za2luLnJlcGxhY2UoL14o YmVlbGRlbnxiZWtsZXxmaXZlfGdsb3d8bW9kaWV1c3xyb3VuZHN0ZXJ8c3Rvcm10 cm9vcGVyfHZhcG9yKSQvaSxoLnJlcG8oKSsic2tpbnMvJDEueG1sIikudG9Mb3dl ckNhc2UoKSk7ZS5wbHVnaW5zPWc7cmV0dXJuIG5ldyBhKGMpfSxhKTtkLmVtYmVk PWd9KGp3cGxheWVyKSxmdW5jdGlvbihkKXt2YXIgYT1bXSxoPWQudXRpbHMsZz1k LmV2ZW50cyxjPWcuc3RhdGUsYj1kb2N1bWVudCxlPWQuYXBpPWZ1bmN0aW9uKGEp e2Z1bmN0aW9uIGwoYSxiKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGIoYSxj KX19ZnVuY3Rpb24gbShhLGIpe3BbYV18fChwW2FdPVtdLHEoZy5KV1BMQVlFUl9Q TEFZRVJfU1RBVEUsZnVuY3Rpb24oYil7dmFyIGM9Yi5uZXdzdGF0ZTsKYj1iLm9s ZHN0YXRlO2lmKGM9PWEpe3ZhciBlPXBbY107aWYoZSlmb3IodmFyIGQ9MDtkPGUu bGVuZ3RoO2QrKykiZnVuY3Rpb24iPT10eXBlb2YgZVtkXSYmZVtkXS5jYWxsKHRo aXMse29sZHN0YXRlOmIsbmV3c3RhdGU6Y30pfX0pKTtwW2FdLnB1c2goYik7cmV0 dXJuIGZ9ZnVuY3Rpb24gbihhLGIpe3RyeXthLmp3QWRkRXZlbnRMaXN0ZW5lcihi LCdmdW5jdGlvbihkYXQpIHsgandwbGF5ZXIoIicrZi5pZCsnIikuZGlzcGF0Y2hF dmVudCgiJytiKyciLCBkYXQpOyB9Jyl9Y2F0Y2goYyl7aC5sb2coIkNvdWxkIG5v dCBhZGQgaW50ZXJuYWwgbGlzdGVuZXIiKX19ZnVuY3Rpb24gcShhLGIpe3JbYV18 fChyW2FdPVtdLHMmJnUmJm4ocyxhKSk7clthXS5wdXNoKGIpO3JldHVybiBmfWZ1 bmN0aW9uIGooKXtpZih1KXtmb3IodmFyIGE9YXJndW1lbnRzWzBdLGI9W10sYz0x O2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYi5wdXNoKGFyZ3VtZW50c1tjXSk7aWYo InVuZGVmaW5lZCIhPXR5cGVvZiBzJiYKImZ1bmN0aW9uIj09dHlwZW9mIHNbYV0p c3dpdGNoKGIubGVuZ3RoKXtjYXNlIDQ6cmV0dXJuIHNbYV0oYlswXSxiWzFdLGJb Ml0sYlszXSk7Y2FzZSAzOnJldHVybiBzW2FdKGJbMF0sYlsxXSxiWzJdKTtjYXNl IDI6cmV0dXJuIHNbYV0oYlswXSxiWzFdKTtjYXNlIDE6cmV0dXJuIHNbYV0oYlsw XSk7ZGVmYXVsdDpyZXR1cm4gc1thXSgpfXJldHVybiBudWxsfXQucHVzaChhcmd1 bWVudHMpfXZhciBmPXRoaXMscj17fSxwPXt9LHM9dm9pZCAwLHU9ITEsdD1bXSx3 PXZvaWQgMCx4PXt9LHk9e307Zi5jb250YWluZXI9YTtmLmlkPWEuaWQ7Zi5nZXRC dWZmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gaigiandHZXRCdWZmZXIiKX07Zi5nZXRD b250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gZi5jb250YWluZXJ9O2YuYWRkQnV0 dG9uPWZ1bmN0aW9uKGEsYixjLGUpe3RyeXt5W2VdPWMsaigiandEb2NrQWRkQnV0 dG9uIixhLGIsImp3cGxheWVyKCciK2YuaWQrIicpLmNhbGxiYWNrKCciK2UrCiIn KSIsZSl9Y2F0Y2goZCl7aC5sb2coIkNvdWxkIG5vdCBhZGQgZG9jayBidXR0b24i K2QubWVzc2FnZSl9fTtmLnJlbW92ZUJ1dHRvbj1mdW5jdGlvbihhKXtqKCJqd0Rv Y2tSZW1vdmVCdXR0b24iLGEpfTtmLmNhbGxiYWNrPWZ1bmN0aW9uKGEpe2lmKHlb YV0peVthXSgpfTtmLmZvcmNlU3RhdGU9ZnVuY3Rpb24oYSl7aigiandGb3JjZVN0 YXRlIixhKTtyZXR1cm4gZn07Zi5yZWxlYXNlU3RhdGU9ZnVuY3Rpb24oKXtyZXR1 cm4gaigiandSZWxlYXNlU3RhdGUiKX07Zi5nZXREdXJhdGlvbj1mdW5jdGlvbigp e3JldHVybiBqKCJqd0dldER1cmF0aW9uIil9O2YuZ2V0RnVsbHNjcmVlbj1mdW5j dGlvbigpe3JldHVybiBqKCJqd0dldEZ1bGxzY3JlZW4iKX07Zi5nZXRTdHJldGNo aW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGooImp3R2V0U3RyZXRjaGluZyIpfTtmLmdl dEhlaWdodD1mdW5jdGlvbigpe3JldHVybiBqKCJqd0dldEhlaWdodCIpfTtmLmdl dExvY2tTdGF0ZT1mdW5jdGlvbigpe3JldHVybiBqKCJqd0dldExvY2tTdGF0ZSIp fTsKZi5nZXRNZXRhPWZ1bmN0aW9uKCl7cmV0dXJuIGYuZ2V0SXRlbU1ldGEoKX07 Zi5nZXRNdXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGooImp3R2V0TXV0ZSIpfTtmLmdl dFBsYXlsaXN0PWZ1bmN0aW9uKCl7dmFyIGE9aigiandHZXRQbGF5bGlzdCIpOyJm bGFzaCI9PWYucmVuZGVyaW5nTW9kZSYmaC5kZWVwUmVwbGFjZUtleU5hbWUoYSxb Il9fZG90X18iLCJfX3NwY19fIiwiX19kc2hfXyIsIl9fZGVmYXVsdF9fIl0sWyIu IiwiICIsIi0iLCJkZWZhdWx0Il0pO3JldHVybiBhfTtmLmdldFBsYXlsaXN0SXRl bT1mdW5jdGlvbihhKXtoLmV4aXN0cyhhKXx8KGE9Zi5nZXRDdXJyZW50SXRlbSgp KTtyZXR1cm4gZi5nZXRQbGF5bGlzdCgpW2FdfTtmLmdldFBvc2l0aW9uPWZ1bmN0 aW9uKCl7cmV0dXJuIGooImp3R2V0UG9zaXRpb24iKX07Zi5nZXRSZW5kZXJpbmdN b2RlPWZ1bmN0aW9uKCl7cmV0dXJuIGYucmVuZGVyaW5nTW9kZX07Zi5nZXRTdGF0 ZT1mdW5jdGlvbigpe3JldHVybiBqKCJqd0dldFN0YXRlIil9OwpmLmdldFZvbHVt ZT1mdW5jdGlvbigpe3JldHVybiBqKCJqd0dldFZvbHVtZSIpfTtmLmdldFdpZHRo PWZ1bmN0aW9uKCl7cmV0dXJuIGooImp3R2V0V2lkdGgiKX07Zi5zZXRGdWxsc2Ny ZWVuPWZ1bmN0aW9uKGEpe2guZXhpc3RzKGEpP2ooImp3U2V0RnVsbHNjcmVlbiIs YSk6aigiandTZXRGdWxsc2NyZWVuIiwhaigiandHZXRGdWxsc2NyZWVuIikpO3Jl dHVybiBmfTtmLnNldFN0cmV0Y2hpbmc9ZnVuY3Rpb24oYSl7aigiandTZXRTdHJl dGNoaW5nIixhKTtyZXR1cm4gZn07Zi5zZXRNdXRlPWZ1bmN0aW9uKGEpe2guZXhp c3RzKGEpP2ooImp3U2V0TXV0ZSIsYSk6aigiandTZXRNdXRlIiwhaigiandHZXRN dXRlIikpO3JldHVybiBmfTtmLmxvY2s9ZnVuY3Rpb24oKXtyZXR1cm4gZn07Zi51 bmxvY2s9ZnVuY3Rpb24oKXtyZXR1cm4gZn07Zi5sb2FkPWZ1bmN0aW9uKGEpe2oo Imp3TG9hZCIsYSk7cmV0dXJuIGZ9O2YucGxheWxpc3RJdGVtPWZ1bmN0aW9uKGEp e2ooImp3UGxheWxpc3RJdGVtIiwKcGFyc2VJbnQoYSkpO3JldHVybiBmfTtmLnBs YXlsaXN0UHJldj1mdW5jdGlvbigpe2ooImp3UGxheWxpc3RQcmV2Iik7cmV0dXJu IGZ9O2YucGxheWxpc3ROZXh0PWZ1bmN0aW9uKCl7aigiandQbGF5bGlzdE5leHQi KTtyZXR1cm4gZn07Zi5yZXNpemU9ZnVuY3Rpb24oYSxjKXtpZigiZmxhc2giIT1m LnJlbmRlcmluZ01vZGUpaigiandSZXNpemUiLGEsYyk7ZWxzZXt2YXIgZT1iLmdl dEVsZW1lbnRCeUlkKGYuaWQrIl93cmFwcGVyIik7ZSYmKGUuc3R5bGUud2lkdGg9 aC5zdHlsZURpbWVuc2lvbihhKSxlLnN0eWxlLmhlaWdodD1oLnN0eWxlRGltZW5z aW9uKGMpKX1yZXR1cm4gZn07Zi5wbGF5PWZ1bmN0aW9uKGEpeyJ1bmRlZmluZWQi PT10eXBlb2YgYT8oYT1mLmdldFN0YXRlKCksYT09Yy5QTEFZSU5HfHxhPT1jLkJV RkZFUklORz9qKCJqd1BhdXNlIik6aigiandQbGF5IikpOmooImp3UGxheSIsYSk7 cmV0dXJuIGZ9O2YucGF1c2U9ZnVuY3Rpb24oYSl7InVuZGVmaW5lZCI9PQp0eXBl b2YgYT8oYT1mLmdldFN0YXRlKCksYT09Yy5QTEFZSU5HfHxhPT1jLkJVRkZFUklO Rz9qKCJqd1BhdXNlIik6aigiandQbGF5IikpOmooImp3UGF1c2UiLGEpO3JldHVy biBmfTtmLnN0b3A9ZnVuY3Rpb24oKXtqKCJqd1N0b3AiKTtyZXR1cm4gZn07Zi5z ZWVrPWZ1bmN0aW9uKGEpe2ooImp3U2VlayIsYSk7cmV0dXJuIGZ9O2Yuc2V0Vm9s dW1lPWZ1bmN0aW9uKGEpe2ooImp3U2V0Vm9sdW1lIixhKTtyZXR1cm4gZn07Zi5s b2FkSW5zdHJlYW09ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdz1uZXcgZS5pbnN0cmVh bSh0aGlzLHMsYSxiKX07Zi5nZXRRdWFsaXR5TGV2ZWxzPWZ1bmN0aW9uKCl7cmV0 dXJuIGooImp3R2V0UXVhbGl0eUxldmVscyIpfTtmLmdldEN1cnJlbnRRdWFsaXR5 PWZ1bmN0aW9uKCl7cmV0dXJuIGooImp3R2V0Q3VycmVudFF1YWxpdHkiKX07Zi5z ZXRDdXJyZW50UXVhbGl0eT1mdW5jdGlvbihhKXtqKCJqd1NldEN1cnJlbnRRdWFs aXR5IixhKX07Zi5nZXRDYXB0aW9uc0xpc3Q9CmZ1bmN0aW9uKCl7cmV0dXJuIGoo Imp3R2V0Q2FwdGlvbnNMaXN0Iil9O2YuZ2V0Q3VycmVudENhcHRpb25zPWZ1bmN0 aW9uKCl7cmV0dXJuIGooImp3R2V0Q3VycmVudENhcHRpb25zIil9O2Yuc2V0Q3Vy cmVudENhcHRpb25zPWZ1bmN0aW9uKGEpe2ooImp3U2V0Q3VycmVudENhcHRpb25z IixhKX07Zi5nZXRDb250cm9scz1mdW5jdGlvbigpe3JldHVybiBqKCJqd0dldENv bnRyb2xzIil9O2YuZ2V0U2FmZVJlZ2lvbj1mdW5jdGlvbigpe3JldHVybiBqKCJq d0dldFNhZmVSZWdpb24iKX07Zi5zZXRDb250cm9scz1mdW5jdGlvbihhKXtqKCJq d1NldENvbnRyb2xzIixhKX07Zi5kZXN0cm95UGxheWVyPWZ1bmN0aW9uKCl7aigi andQbGF5ZXJEZXN0cm95Iil9O3ZhciB6PXtvbkJ1ZmZlckNoYW5nZTpnLkpXUExB WUVSX01FRElBX0JVRkZFUixvbkJ1ZmZlckZ1bGw6Zy5KV1BMQVlFUl9NRURJQV9C VUZGRVJfRlVMTCxvbkVycm9yOmcuSldQTEFZRVJfRVJST1Isb25GdWxsc2NyZWVu OmcuSldQTEFZRVJfRlVMTFNDUkVFTiwKb25NZXRhOmcuSldQTEFZRVJfTUVESUFf TUVUQSxvbk11dGU6Zy5KV1BMQVlFUl9NRURJQV9NVVRFLG9uUGxheWxpc3Q6Zy5K V1BMQVlFUl9QTEFZTElTVF9MT0FERUQsb25QbGF5bGlzdEl0ZW06Zy5KV1BMQVlF Ul9QTEFZTElTVF9JVEVNLG9uUGxheWxpc3RDb21wbGV0ZTpnLkpXUExBWUVSX1BM QVlMSVNUX0NPTVBMRVRFLG9uUmVhZHk6Zy5BUElfUkVBRFksb25SZXNpemU6Zy5K V1BMQVlFUl9SRVNJWkUsb25Db21wbGV0ZTpnLkpXUExBWUVSX01FRElBX0NPTVBM RVRFLG9uU2VlazpnLkpXUExBWUVSX01FRElBX1NFRUssb25UaW1lOmcuSldQTEFZ RVJfTUVESUFfVElNRSxvblZvbHVtZTpnLkpXUExBWUVSX01FRElBX1ZPTFVNRSxv bkJlZm9yZVBsYXk6Zy5KV1BMQVlFUl9NRURJQV9CRUZPUkVQTEFZLG9uQmVmb3Jl Q29tcGxldGU6Zy5KV1BMQVlFUl9NRURJQV9CRUZPUkVDT01QTEVURSxvbkRpc3Bs YXlDbGljazpnLkpXUExBWUVSX0RJU1BMQVlfQ0xJQ0ssb25Db250cm9sczpnLkpX UExBWUVSX0NPTlRST0xTLApvblF1YWxpdHlMZXZlbHM6Zy5KV1BMQVlFUl9NRURJ QV9MRVZFTFMsb25RdWFsaXR5Q2hhbmdlOmcuSldQTEFZRVJfTUVESUFfTEVWRUxf Q0hBTkdFRCxvbkNhcHRpb25zTGlzdDpnLkpXUExBWUVSX0NBUFRJT05TX0xJU1Qs b25DYXB0aW9uc0NoYW5nZTpnLkpXUExBWUVSX0NBUFRJT05TX0NIQU5HRUR9O2gu Zm9yZWFjaCh6LGZ1bmN0aW9uKGEpe2ZbYV09bCh6W2FdLHEpfSk7dmFyIEE9e29u QnVmZmVyOmMuQlVGRkVSSU5HLG9uUGF1c2U6Yy5QQVVTRUQsb25QbGF5OmMuUExB WUlORyxvbklkbGU6Yy5JRExFfTtoLmZvcmVhY2goQSxmdW5jdGlvbihhKXtmW2Fd PWwoQVthXSxtKX0pO2YucmVtb3ZlPWZ1bmN0aW9uKCl7aWYoIXUpdGhyb3ciQ2Fu bm90IGNhbGwgcmVtb3ZlKCkgYmVmb3JlIHBsYXllciBpcyByZWFkeSI7dD1bXTtl LmRlc3Ryb3lQbGF5ZXIodGhpcy5pZCl9O2Yuc2V0dXA9ZnVuY3Rpb24oYSl7aWYo ZC5lbWJlZCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChmLmlkKTsKYyYmKGEuZmFs bGJhY2tEaXY9Yyk7Yz1mO3Q9W107ZS5kZXN0cm95UGxheWVyKGMuaWQpO2M9ZChm LmlkKTtjLmNvbmZpZz1hO3JldHVybiBuZXcgZC5lbWJlZChjKX1yZXR1cm4gZn07 Zi5yZWdpc3RlclBsdWdpbj1mdW5jdGlvbihhLGIsYyxlKXtkLnBsdWdpbnMucmVn aXN0ZXJQbHVnaW4oYSxiLGMsZSl9O2Yuc2V0UGxheWVyPWZ1bmN0aW9uKGEsYil7 cz1hO2YucmVuZGVyaW5nTW9kZT1ifTtmLmRldGFjaE1lZGlhPWZ1bmN0aW9uKCl7 aWYoImh0bWw1Ij09Zi5yZW5kZXJpbmdNb2RlKXJldHVybiBqKCJqd0RldGFjaE1l ZGlhIil9O2YuYXR0YWNoTWVkaWE9ZnVuY3Rpb24oYSl7aWYoImh0bWw1Ij09Zi5y ZW5kZXJpbmdNb2RlKXJldHVybiBqKCJqd0F0dGFjaE1lZGlhIixhKX07Zi5kaXNw YXRjaEV2ZW50PWZ1bmN0aW9uKGEsYil7aWYoclthXSlmb3IodmFyIGM9aC50cmFu c2xhdGVFdmVudFJlc3BvbnNlKGEsYiksZT0wO2U8clthXS5sZW5ndGg7ZSsrKWlm KCJmdW5jdGlvbiI9PQp0eXBlb2YgclthXVtlXSl0cnl7clthXVtlXS5jYWxsKHRo aXMsYyl9Y2F0Y2goZCl7aC5sb2coIlRoZXJlIHdhcyBhbiBlcnJvciBjYWxsaW5n IGJhY2sgYW4gZXZlbnQgaGFuZGxlciIpfX07Zi5kaXNwYXRjaEluc3RyZWFtRXZl bnQ9ZnVuY3Rpb24oYSl7dyYmdy5kaXNwYXRjaEV2ZW50KGEsYXJndW1lbnRzKX07 Zi5jYWxsSW50ZXJuYWw9ajtmLnBsYXllclJlYWR5PWZ1bmN0aW9uKGEpe3U9ITA7 c3x8Zi5zZXRQbGF5ZXIoYi5nZXRFbGVtZW50QnlJZChhLmlkKSk7Zi5jb250YWlu ZXI9Yi5nZXRFbGVtZW50QnlJZChmLmlkKTtoLmZvcmVhY2gocixmdW5jdGlvbihh KXtuKHMsYSl9KTtxKGcuSldQTEFZRVJfUExBWUxJU1RfSVRFTSxmdW5jdGlvbigp e3g9e319KTtxKGcuSldQTEFZRVJfTUVESUFfTUVUQSxmdW5jdGlvbihhKXtoLmV4 dGVuZCh4LGEubWV0YWRhdGEpfSk7Zm9yKGYuZGlzcGF0Y2hFdmVudChnLkFQSV9S RUFEWSk7MDx0Lmxlbmd0aDspai5hcHBseSh0aGlzLHQuc2hpZnQoKSl9OwpmLmdl dEl0ZW1NZXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHh9O2YuZ2V0Q3VycmVudEl0ZW09 ZnVuY3Rpb24oKXtyZXR1cm4gaigiandHZXRQbGF5bGlzdEluZGV4Iil9O3JldHVy biBmfTtlLnNlbGVjdFBsYXllcj1mdW5jdGlvbihjKXt2YXIgZDtoLmV4aXN0cyhj KXx8KGM9MCk7Yy5ub2RlVHlwZT9kPWM6InN0cmluZyI9PXR5cGVvZiBjJiYoZD1i LmdldEVsZW1lbnRCeUlkKGMpKTtyZXR1cm4gZD8oYz1lLnBsYXllckJ5SWQoZC5p ZCkpP2M6ZS5hZGRQbGF5ZXIobmV3IGUoZCkpOiJudW1iZXIiPT10eXBlb2YgYz9h W2NdOm51bGx9O2UucGxheWVyQnlJZD1mdW5jdGlvbihiKXtmb3IodmFyIGM9MDtj PGEubGVuZ3RoO2MrKylpZihhW2NdLmlkPT1iKXJldHVybiBhW2NdO3JldHVybiBu dWxsfTtlLmFkZFBsYXllcj1mdW5jdGlvbihiKXtmb3IodmFyIGM9MDtjPGEubGVu Z3RoO2MrKylpZihhW2NdPT1iKXJldHVybiBiO2EucHVzaChiKTtyZXR1cm4gYn07 ZS5kZXN0cm95UGxheWVyPWZ1bmN0aW9uKGMpe2Zvcih2YXIgZT0KLTEsZCxnPTA7 ZzxhLmxlbmd0aDtnKyspYVtnXS5pZD09YyYmKGU9ZyxkPWFbZ10pOzA8PWUmJihj PWQuaWQsZz1iLmdldEVsZW1lbnRCeUlkKGMrKCJmbGFzaCI9PWQucmVuZGVyaW5n TW9kZT8iX3dyYXBwZXIiOiIiKSksaC5jbGVhckNzcyYmaC5jbGVhckNzcygiIyIr YyksZyYmKCJodG1sNSI9PWQucmVuZGVyaW5nTW9kZSYmZC5kZXN0cm95UGxheWVy KCksZD1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuaWQ9YyxnLnBhcmVudE5vZGUu cmVwbGFjZUNoaWxkKGQsZykpLGEuc3BsaWNlKGUsMSkpO3JldHVybiBudWxsfTtk LnBsYXllclJlYWR5PWZ1bmN0aW9uKGEpe3ZhciBiPWQuYXBpLnBsYXllckJ5SWQo YS5pZCk7Yj9iLnBsYXllclJlYWR5KGEpOmQuYXBpLnNlbGVjdFBsYXllcihhLmlk KS5wbGF5ZXJSZWFkeShhKX19KGp3cGxheWVyKSxmdW5jdGlvbihkKXtkLmFwaS5p bnN0cmVhbT1mdW5jdGlvbihhLGQsZyxjKXt0aGlzLnBsYXk9ZnVuY3Rpb24oYSl7 ZC5qd0luc3RyZWFtUGxheShhKX07CnRoaXMucGF1c2U9ZnVuY3Rpb24oYSl7ZC5q d0luc3RyZWFtUGF1c2UoYSl9O3RoaXMuZGVzdHJveT1mdW5jdGlvbigpe2QuandJ bnN0cmVhbURlc3Ryb3koKX07YS5jYWxsSW50ZXJuYWwoImp3TG9hZEluc3RyZWFt IixnLGM/Yzp7fSl9fShqd3BsYXllciksZnVuY3Rpb24oZCl7dmFyIGE9ZC5hcGks aD1hLnNlbGVjdFBsYXllcjthLnNlbGVjdFBsYXllcj1mdW5jdGlvbihhKXtyZXR1 cm4oYT1oKGEpKT9hOntyZWdpc3RlclBsdWdpbjpmdW5jdGlvbihhLGIsZSl7ZC5w bHVnaW5zLnJlZ2lzdGVyUGx1Z2luKGEsYixlKX19fX0oandwbGF5ZXIpKTs= ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=search_bg1.jpg Content-Type: image/jpeg; name=search_bg1.jpg Content-Location: http://ege.edu.ru/common/img/img_2013/search_bg1.jpg Content-Transfer-Encoding: Base64 /9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/ 4QNUaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49 Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRh IHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29y ZSA1LjMtYzAwNyAxLjE0NDEwOSwgMjAxMS8wOS8yMC0xODowOToxMCAgICAgICAg Ij4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAy LzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9 IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxu czp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6 c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJj ZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMu MDIwMTExMDEyLm0uMjU4IDIwMTEvMTAvMTI6MjE6MDA6MDApICAoV2luZG93cyki IHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzgwRUNCRkY0RDJFMTFFM0I3MDY5 M0ZFMTMxQ0YwOTUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzgwRUNDMDA0 RDJFMTFFM0I3MDY5M0ZFMTMxQ0YwOTUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RS ZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDODBFQ0JGRDREMkUxMUUzQjcwNjkzRkUx MzFDRjA5NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDODBFQ0JGRTREMkUx MUUzQjcwNjkzRkUxMzFDRjA5NSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6 UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9iZQBk wAAAAAH/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQECAgICAgICAgICAgMDAwMDAwMDAwMBAQEBAQEBAgEBAgICAQICAwMDAwMD AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//AABEI AA8ADgMBEQACEQEDEQH/xABiAAEBAQAAAAAAAAAAAAAAAAAFBwoBAQEBAAAAAAAA AAAAAAAAAAABAhAAAgMBAAIDAQAAAAAAAAAAAwUCBAYBEhMAFAcVEQADAAICAwAA AAAAAAAAAAAAAREhUTFBYZFC/9oADAMBAAIRAxEAPwDZbkcfltpnlus2CFNqn+ir 8aXjaJdTczSFtTmSWXWDYCsQU0c1LvaXpDEXZmBMpuSsEKSWm2nFwRJPIggWQY09 xirLNtNIh1dFUvsDa3INBqrCTK6gqA7j3dYmBE7YtTy9nC/QJAPs849n8j6Y8CUM qvuHZXsrr3aGveZMP7NTM3EF5WZ2K0UDef13SZ+NMz+9AnLkaXakp2ukIaPT9lP4 u0JoklXB21TZjmg6Emi/FdTooMrd0u0NS1355+iq9RQZQX1dRG9Fy8o6bXVIBkGV jrOmxnIfJygTxHq4v0Sej//Z ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=2018.png Content-Type: image/png; name=2018.png Content-Location: http://ege.edu.ru/common/upload/img/2018.png Content-Transfer-Encoding: Base64 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 ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=top100.js Content-Type: application/javascript; name=top100.js Content-Location: http://counter.rambler.ru/top100.jcn?2679311 Content-Transfer-Encoding: Base64 KGZ1bmN0aW9uKCl7dmFyIGcsYWE9YWF8fHt9LGg9dGhpcztmdW5jdGlvbiBsKGEp e3JldHVybiB2b2lkIDAhPT1hfWZ1bmN0aW9uIG4oKXt9ZnVuY3Rpb24gcChhKXth LkI9ZnVuY3Rpb24oKXtyZXR1cm4gYS5rYj9hLmtiOmEua2I9bmV3IGF9fQpmdW5j dGlvbiBiYShhKXt2YXIgYj10eXBlb2YgYTtpZigib2JqZWN0Ij09YilpZihhKXtp ZihhIGluc3RhbmNlb2YgQXJyYXkpcmV0dXJuImFycmF5IjtpZihhIGluc3RhbmNl b2YgT2JqZWN0KXJldHVybiBiO3ZhciBjPU9iamVjdC5wcm90b3R5cGUudG9TdHJp bmcuY2FsbChhKTtpZigiW29iamVjdCBXaW5kb3ddIj09YylyZXR1cm4ib2JqZWN0 IjtpZigiW29iamVjdCBBcnJheV0iPT1jfHwibnVtYmVyIj09dHlwZW9mIGEubGVu Z3RoJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEuc3BsaWNlJiYidW5kZWZpbmVkIiE9 dHlwZW9mIGEucHJvcGVydHlJc0VudW1lcmFibGUmJiFhLnByb3BlcnR5SXNFbnVt ZXJhYmxlKCJzcGxpY2UiKSlyZXR1cm4iYXJyYXkiO2lmKCJbb2JqZWN0IEZ1bmN0 aW9uXSI9PWN8fCJ1bmRlZmluZWQiIT10eXBlb2YgYS5jYWxsJiYidW5kZWZpbmVk IiE9dHlwZW9mIGEucHJvcGVydHlJc0VudW1lcmFibGUmJiFhLnByb3BlcnR5SXNF bnVtZXJhYmxlKCJjYWxsIikpcmV0dXJuImZ1bmN0aW9uIn1lbHNlIHJldHVybiJu dWxsIjsKZWxzZSBpZigiZnVuY3Rpb24iPT1iJiYidW5kZWZpbmVkIj09dHlwZW9m IGEuY2FsbClyZXR1cm4ib2JqZWN0IjtyZXR1cm4gYn1mdW5jdGlvbiBxKGEpe3Jl dHVybiJhcnJheSI9PWJhKGEpfWZ1bmN0aW9uIGNhKGEpe3ZhciBiPWJhKGEpO3Jl dHVybiJhcnJheSI9PWJ8fCJvYmplY3QiPT1iJiYibnVtYmVyIj09dHlwZW9mIGEu bGVuZ3RofWZ1bmN0aW9uIHQoYSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhfWZ1 bmN0aW9uIHUoYSl7cmV0dXJuImZ1bmN0aW9uIj09YmEoYSl9dmFyIGRhPSJjbG9z dXJlX3VpZF8iKygxRTkqTWF0aC5yYW5kb20oKT4+PjApLGVhPTA7ZnVuY3Rpb24g ZmEoYSxiLGMpe3JldHVybiBhLmNhbGwuYXBwbHkoYS5iaW5kLGFyZ3VtZW50cyl9 CmZ1bmN0aW9uIGdhKGEsYixjKXtpZighYSl0aHJvdyBFcnJvcigpO2lmKDI8YXJn dW1lbnRzLmxlbmd0aCl7dmFyIGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwo YXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3ZhciBjPUFycmF5LnByb3Rv dHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7QXJyYXkucHJvdG90eXBlLnVuc2hp ZnQuYXBwbHkoYyxkKTtyZXR1cm4gYS5hcHBseShiLGMpfX1yZXR1cm4gZnVuY3Rp b24oKXtyZXR1cm4gYS5hcHBseShiLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHYoYSxi LGMpe3Y9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQmJi0xIT1GdW5jdGlvbi5wcm90 b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoIm5hdGl2ZSBjb2RlIik/ZmE6 Z2E7cmV0dXJuIHYuYXBwbHkobnVsbCxhcmd1bWVudHMpfXZhciB3PURhdGUubm93 fHxmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX07CmZ1bmN0aW9uIHgoYSxiKXtm dW5jdGlvbiBjKCl7fWMucHJvdG90eXBlPWIucHJvdG90eXBlO2EuZGM9Yi5wcm90 b3R5cGU7YS5wcm90b3R5cGU9bmV3IGM7YS5wcm90b3R5cGUuY29uc3RydWN0b3I9 YTthLm9jPWZ1bmN0aW9uKGEsYyxmKXtmb3IodmFyIGs9QXJyYXkoYXJndW1lbnRz Lmxlbmd0aC0yKSxtPTI7bTxhcmd1bWVudHMubGVuZ3RoO20rKylrW20tMl09YXJn dW1lbnRzW21dO3JldHVybiBiLnByb3RvdHlwZVtjXS5hcHBseShhLGspfX07dmFy IGhhPXt9O2Z1bmN0aW9uIGlhKCl7fWlhLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9u KGEsYixjKXtoLm5hdmlnYXRvci5zZW5kQmVhY29uKGEsYik/Yy5XYSgpOmMuZXJy b3IoKX07ZnVuY3Rpb24gamEoKXt0aGlzLmI9dGhpcy5hPXZvaWQgMH1qYS5wcm90 b3R5cGUuc2VuZD1mdW5jdGlvbihhLGIpe3RoaXMuYT1uZXcgSW1hZ2U7dGhpcy5h Lm9ubG9hZD12KHRoaXMuZix0aGlzLGIuV2EpO3RoaXMuYS5vbmVycm9yPXYodGhp cy5jLHRoaXMsYi5lcnJvcik7dGhpcy5hLm9uYWJvcnQ9dih0aGlzLmMsdGhpcyxi LmVycm9yKTt0aGlzLmEuc3JjPWE7dGhpcy5iPWguc2V0VGltZW91dCh2KHRoaXMu Yyx0aGlzLGIuZXJyb3IpLGthKX07ZnVuY3Rpb24gbGEoYSl7YS5iJiYoaC5jbGVh clRpbWVvdXQoYS5iKSxhLmI9bnVsbCl9ZnVuY3Rpb24gb2EoYSl7YS5hLnNyYz0i IjthLmEub25sb2FkPWZ1bmN0aW9uKCl7fTthLmEub25hYm9ydD1mdW5jdGlvbigp e307YS5hLm9uZXJyb3I9ZnVuY3Rpb24oKXt9fWphLnByb3RvdHlwZS5mPWZ1bmN0 aW9uKGEpe2xhKHRoaXMpO2EoKX07amEucHJvdG90eXBlLmM9ZnVuY3Rpb24oYSl7 b2EodGhpcyk7bGEodGhpcyk7YSgpfTt5LmE9e307eS5hLnFjPS9pUGFkfGlQaG9u ZXxpUG9kLy50ZXN0KGgubmF2aWdhdG9yLnVzZXJBZ2VudCkmJiFoLmxjO3kuYS5p PXt9O3kuYS5pLnFiPSExO3kuYS5pLndiPSJTaWx2ZXJsaWdodCBQbHVnLUluIjt5 LmEuaS5uYT0iYXBwbGljYXRpb24veC1zaWx2ZXJsaWdodCI7eS5hLmkudmI9W3ku YS5pLm5hLHkuYS5pLm5hKyItMiIseS5hLmkubmErIi0yLWIyIix5LmEuaS5uYSsi LTItYjEiXTt5LmEuaS5zYj0iQWdDb250cm9sLkFnQ29udHJvbCI7eS5hLmkuamE9 ITE7eS5hLmkuc2E9IiI7CnkuYS5pLlpiPWZ1bmN0aW9uKCl7dmFyIGE9aC5uYXZp Z2F0b3I7aWYoYS5wbHVnaW5zJiZhLnBsdWdpbnMubGVuZ3RoKXt2YXIgYj1hLnBs dWdpbnNbeS5hLmkud2JdO2ImJih5LmEuaS5qYT0hMCxiLmRlc2NyaXB0aW9uJiYo eS5hLmkuc2E9eS5hLmkuUWEoYi5kZXNjcmlwdGlvbikpKX1lbHNlIGlmKGEubWlt ZVR5cGVzJiZhLm1pbWVUeXBlcy5sZW5ndGgpZm9yKHZhciBjPXkuYS5pLnZiLGI9 MDtiPGMubGVuZ3RoO2IrKyl7dmFyIGQ9YS5taW1lVHlwZXNbY1tiXV07aWYoZCYm ZC5lbmFibGVkUGx1Z2luKXt5LmEuaS5qYT0hIWQuZW5hYmxlZFBsdWdpbjt5LmEu aS5qYSYmKHkuYS5pLnNhPXkuYS5pLlFhKGQuZW5hYmxlZFBsdWdpbi5kZXNjcmlw dGlvbikpO2JyZWFrfX1lbHNle2E9WzAsMCwwLDBdO3RyeXtjPW5ldyBBY3RpdmVY T2JqZWN0KHkuYS5pLnNiKTt5LmEuaS5qYT0hMDtmb3IoYj0wO2I8YS5sZW5ndGg7 YisrKXtmb3IodmFyIGU9MCxmPTEwNDg1NzUsaz0wO2U8ZjspZD0KYVtiXT1lKyhm LWU+PjEpLGMuSXNWZXJzaW9uU3VwcG9ydGVkKGEuam9pbigiLiIpKT8oaz1kLGU9 ZCsxKTpmPWQ7YVtiXT1rfXkuYS5pLnNhPXkuYS5pLlFhKGEuam9pbigiLiIpKX1j YXRjaChtKXt9fX07eS5hLmkuUWE9ZnVuY3Rpb24oYSl7cmV0dXJuIjEuMC4zMDIy Ni4yIj09YT8iMi4wLjMwMjI2LjIiOmF9O3kuYS5pLnFifHx5LmEuaS5aYigpO3ku YS5pLmhjPXkuYS5pLmphO3kuYS5pLlZFUlNJT049eS5hLmkuc2E7eS5qPXt9Owp5 LmouZWM9ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIGE7aWYoIm9iamVjdCI9PT1i KWlmKGEpe2lmKGEgaW5zdGFuY2VvZiBBcnJheSlyZXR1cm4iYXJyYXkiO2lmKGEg aW5zdGFuY2VvZiBPYmplY3QpcmV0dXJuIGI7dmFyIGM9T2JqZWN0LnByb3RvdHlw ZS50b1N0cmluZy5jYWxsKGEpO2lmKCJbb2JqZWN0IFdpbmRvd10iPT09YylyZXR1 cm4ib2JqZWN0IjtpZigiW29iamVjdCBBcnJheV0iPT09Y3x8Im51bWJlciI9PT10 eXBlb2YgYS5sZW5ndGgmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEuc3BsaWNlJiYi dW5kZWZpbmVkIiE9PXR5cGVvZiBhLnByb3BlcnR5SXNFbnVtZXJhYmxlJiYhYS5w cm9wZXJ0eUlzRW51bWVyYWJsZSgic3BsaWNlIikpcmV0dXJuImFycmF5IjtpZigi W29iamVjdCBGdW5jdGlvbl0iPT09Y3x8InVuZGVmaW5lZCIhPT10eXBlb2YgYS5j YWxsJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLnByb3BlcnR5SXNFbnVtZXJhYmxl JiYhYS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgiY2FsbCIpKXJldHVybiJmdW5jdGlv biJ9ZWxzZSByZXR1cm4ibnVsbCI7ZWxzZSBpZigiZnVuY3Rpb24iPT09CmImJiJ1 bmRlZmluZWQiPT09dHlwZW9mIGEuY2FsbClyZXR1cm4ib2JqZWN0IjtyZXR1cm4g Yn07eS5qLiRiPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhO3JldHVybiJvYmpl Y3QiPT1iJiZudWxsIT1hfHwiZnVuY3Rpb24iPT1ifTt5LmouaXNBcnJheT1mdW5j dGlvbihhKXtyZXR1cm4iYXJyYXkiPT09eS5qLmVjKGEpfTt5Lkc9e307eS5HLmJj PWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJcdTA0MTJcdTA0NGIgXHUwNDNkXHUw NDM1IFx1MDQzY1x1MDQzZVx1MDQzNlx1MDQzNVx1MDQ0Mlx1MDQzNSBcdTA0Mzhc dTA0NDFcdTA0M2ZcdTA0M2VcdTA0M2JcdTA0NGNcdTA0MzdcdTA0M2VcdTA0MzJc dTA0MzBcdTA0NDJcdTA0NGMgXHUwNDNjXHUwNDM1XHUwNDQyXHUwNDNlXHUwNDM0 IHN5bmNVc2VySWQuXG5cdTA0MWVcdTA0MzEgXHUwNDM4XHUwNDQxXHUwNDNmXHUw NDNlXHUwNDNiXHUwNDRjXHUwNDM3XHUwNDNlXHUwNDMyXHUwNDMwXHUwNDNkXHUw NDM4XHUwNDM4IFx1MDQ0ZFx1MDQ0Mlx1MDQzZVx1MDQzM1x1MDQzZSBcdTA0M2Nc dTA0MzVcdTA0NDJcdTA0M2VcdTA0MzRcdTA0MzAgXHUwNDNmXHUwNDNlXHUwNDQ3 XHUwNDM4XHUwNDQyXHUwNDMwXHUwNDM5XHUwNDQyXHUwNDM1IFx1MDQzMiBcdTA0 MzRcdTA0M2VcdTA0M2FcdTA0NDNcdTA0M2NcdTA0MzVcdTA0M2RcdTA0NDJcdTA0 MzBcdTA0NDZcdTA0MzhcdTA0MzggaHR0cDovL3RvcDEwMC5yYW1ibGVyLnJ1L2Rv Yy9ndWlkZS1yYW1ibGVyLXRvcDEwMC5wZGYiKX07CnkuRy5sb2c9ZnVuY3Rpb24o KXtpZihoLmNvbnNvbGUpe3ZhciBhPW5ldyBEYXRlO2NvbnNvbGUubG9nKFthLmdl dEhvdXJzKCksYS5nZXRNaW51dGVzKCksYS5nZXRTZWNvbmRzKCksYS5nZXRNaWxs aXNlY29uZHMoKV0uam9pbigiOiIpKyJcdCIsQXJyYXkucHJvdG90eXBlLnNsaWNl LmNhbGwoYXJndW1lbnRzKS5qb2luKCIgIikpfX07dmFyIHBhPSExO2Z1bmN0aW9u IHooKXt2YXIgYT12b2lkIDA7cGE/YT17WDohMCxhYzohMH06YT0hMDtyZXR1cm4g YX10cnl7dmFyIHFhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmRlZmlu ZVByb3BlcnR5KHt9LCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7cGE9ITB9fSk7 aC5hZGRFdmVudExpc3RlbmVyJiZoLmFkZEV2ZW50TGlzdGVuZXIoInRlc3RQYXNz aXZlRXZlbnRzIixudWxsLHFhKX1jYXRjaChhKXt9O3kudj17fTt5LnYuWGE9ZnVu Y3Rpb24oYSxiKXtmdW5jdGlvbiBjKCl7ZT1oLnNldFRpbWVvdXQoZCwxRTMpO2Eu YXBwbHkobnVsbCxrKX1mdW5jdGlvbiBkKCl7ZT1udWxsO2YmJihmPSExLGMoKSl9 YiYmKGE9dihhLGIpKTt2YXIgZT1udWxsLGY9ITEsaz1bXTtyZXR1cm4gZnVuY3Rp b24oYSl7az1hcmd1bWVudHM7ZT9mPSEwOmMoKX19O3kuZj17fTt5LmYueGE9ZnVu Y3Rpb24oKXtyZXR1cm4gTWF0aC5yb3VuZCgyMTQ3NDgzNjQ3Kk1hdGgucmFuZG9t KCkpfTt5LmYudHJ1bmM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHwxO3JldHVybihh L2M+PjApKmN9O3kuZi5sYj1mdW5jdGlvbihhKXtyZXR1cm4ibnVtYmVyIj09dHlw ZW9mIGEmJiFoLmlzTmFOKGEpJiZoLmlzRmluaXRlKGEpfTt5LmYud2E9ZnVuY3Rp b24oYSl7cmV0dXJuIHkuZi5sYihhKSYmMDxhfTtmdW5jdGlvbiByYShhLGIpe3Ro aXMuYj1hO3RoaXMuYT1ifXJhLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigp e3JldHVybiB0aGlzLmIrIngiK3RoaXMuYX07eS5iYj17fTtmdW5jdGlvbiBzYShh LGIpe3RoaXMuYT1hO3RoaXMuYj1ifTtmdW5jdGlvbiBBKCl7dGhpcy5jPXRoaXMu Yj0wO3RoaXMuYT1bXX1BLnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKGEpe3Jl dHVybiB0aGlzLmFbdGhpcy5jKytdPWF9O0EucHJvdG90eXBlLmlhPWZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuQygpP251bGw6dGhpcy5hW3RoaXMuYisrXX07QS5wcm90 b3R5cGUuTD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFbdGhpcy5iXX07QS5wcm90 b3R5cGUuQz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmI+PXRoaXMuY307ZnVuY3Rp b24gdGEoYSxiKXt0aGlzLmM9YTt0aGlzLmY9Ynx8dWE7dGhpcy5iPSExO3RoaXMu YT12b2lkIDB9dmFyIHVhPTFFMzt0YS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24o KXt0aGlzLmI9ITA7dGhpcy5hfHx2YSh0aGlzKX07dGEucHJvdG90eXBlLmc9ZnVu Y3Rpb24oKXt0aGlzLmImJih0aGlzLmEmJndhKHRoaXMpLHRoaXMuYygpLHRoaXMu YiYmdmEodGhpcykpfTtmdW5jdGlvbiB2YShhKXthLmE9aC5zZXRUaW1lb3V0KHYo YS5nLGEpLGEuZil9ZnVuY3Rpb24gd2EoYSl7YS5hJiYoaC5jbGVhclRpbWVvdXQo YS5hKSxhLmE9bnVsbCl9O3kuZz17fTt5LmcueWI9MDt5LmcuR2E9ImtyYWtlbl91 aWRfcHJvcGVydHlfIit5LmYueGEoKTt5LmcuWWI9ZnVuY3Rpb24oYSl7cmV0dXJu ISFhW3kuZy5HYV19O3kuZy5YYj1mdW5jdGlvbihhKXt5LmcuWWIoYSl8fChhW3ku Zy5HYV09Kyt5LmcueWIpO3JldHVybiBhW3kuZy5HYV19O3kuaD17fTt5LmguY2M9 ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9e30sZD0wO2Q8YS5sZW5ndGg7KXt2 YXIgZT1hW2QrK10sZjtmPWU7dmFyIGs9dm9pZCAwO2Y9az15LmouJGIoZik/Im8i K3kuZy5YYihmKToodHlwZW9mIGYpLmNoYXJBdCgwKStmO2NbZl18fChjW2ZdPSEw LGIucHVzaChlKSl9cmV0dXJuIGJ9O3kuaC5tYXA9ZnVuY3Rpb24oYSxiLGMpe2lm KEFycmF5LnByb3RvdHlwZS5tYXApcmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAu Y2FsbChhLGIsYyk7Zm9yKHZhciBkPVtdLGU9YXJyYXkubGVuZ3RoLGY9MDtmPGU7 KytmKWRbZl09Yi5jYWxsKGMsYVtmXSxmLGEpO3JldHVybiBkfTt5LmguaW5jbHVk ZXM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubGVuZ3RoO2ZvcihjPWN8fDA7Yzxk OysrYylpZihhW2NdPT09YilyZXR1cm4hMDtyZXR1cm4hMX07ZnVuY3Rpb24geGEo YSxiLGMpe3RoaXMuZj1jO3RoaXMuYz1hO3RoaXMuZz1iO3RoaXMuYj0wO3RoaXMu YT1udWxsfXhhLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXt2YXIgYTswPHRoaXMu Yj8odGhpcy5iLS0sYT10aGlzLmEsdGhpcy5hPWEubmV4dCxhLm5leHQ9bnVsbCk6 YT10aGlzLmMoKTtyZXR1cm4gYX07ZnVuY3Rpb24geWEoYSxiKXthLmcoYik7YS5i PGEuZiYmKGEuYisrLGIubmV4dD1hLmEsYS5hPWIpfTtmdW5jdGlvbiBCKGEpe2lm KEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKUVycm9yLmNhcHR1cmVTdGFja1RyYWNl KHRoaXMsQik7ZWxzZXt2YXIgYj1FcnJvcigpLnN0YWNrO2ImJih0aGlzLnN0YWNr PWIpfWEmJih0aGlzLm1lc3NhZ2U9U3RyaW5nKGEpKX14KEIsRXJyb3IpO0IucHJv dG90eXBlLm5hbWU9IkN1c3RvbUVycm9yIjtmdW5jdGlvbiB6YShhLGIsYyxkLGUp e3RoaXMucmVzZXQoYSxiLGMsZCxlKX16YS5wcm90b3R5cGUuYT1udWxsO3ZhciBB YT0wO3phLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbihhLGIsYyxkLGUpeyJudW1i ZXIiPT10eXBlb2YgZXx8QWErKztkfHx3KCk7dGhpcy5iPWI7ZGVsZXRlIHRoaXMu YX07ZnVuY3Rpb24gQmEoKXswIT1DYSYmKHRoaXNbZGFdfHwodGhpc1tkYV09Kytl YSkpO3RoaXMuST10aGlzLkk7dGhpcy5hYj10aGlzLmFifXZhciBDYT0wO0JhLnBy b3RvdHlwZS5JPSExO3ZhciBEYTtmdW5jdGlvbiBFYShhLGIpe3RoaXMudHlwZT1h O3RoaXMuYT10aGlzLnRhcmdldD1ifUVhLnByb3RvdHlwZS5jPWZ1bmN0aW9uKCl7 fTt2YXIgRmE9ImNsb3N1cmVfbGlzdGVuYWJsZV8iKygxRTYqTWF0aC5yYW5kb20o KXwwKSxHYT0wO2Z1bmN0aW9uIEhhKGEsYixjLGQsZSl7dGhpcy5saXN0ZW5lcj1h O3RoaXMuYT1udWxsO3RoaXMuc3JjPWI7dGhpcy50eXBlPWM7dGhpcy5YPSEhZDt0 aGlzLnZhPWU7KytHYTt0aGlzLmFhPXRoaXMucmE9ITF9ZnVuY3Rpb24gSWEoYSl7 YS5hYT0hMDthLmxpc3RlbmVyPW51bGw7YS5hPW51bGw7YS5zcmM9bnVsbDthLnZh PW51bGx9O2Z1bmN0aW9uIEphKGEpe3ZhciBiPVtdO0thKG5ldyBMYSxhLGIpO3Jl dHVybiBiLmpvaW4oIiIpfWZ1bmN0aW9uIExhKCl7fQpmdW5jdGlvbiBLYShhLGIs Yyl7aWYobnVsbD09YiljLnB1c2goIm51bGwiKTtlbHNle2lmKCJvYmplY3QiPT10 eXBlb2YgYil7aWYocShiKSl7dmFyIGQ9YjtiPWQubGVuZ3RoO2MucHVzaCgiWyIp O2Zvcih2YXIgZT0iIixmPTA7ZjxiO2YrKyljLnB1c2goZSksS2EoYSxkW2ZdLGMp LGU9IiwiO2MucHVzaCgiXSIpO3JldHVybn1pZihiIGluc3RhbmNlb2YgU3RyaW5n fHxiIGluc3RhbmNlb2YgTnVtYmVyfHxiIGluc3RhbmNlb2YgQm9vbGVhbiliPWIu dmFsdWVPZigpO2Vsc2V7Yy5wdXNoKCJ7Iik7ZT0iIjtmb3IoZCBpbiBiKU9iamVj dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGQpJiYoZj1iW2RdLCJm dW5jdGlvbiIhPXR5cGVvZiBmJiYoYy5wdXNoKGUpLE1hKGQsYyksYy5wdXNoKCI6 IiksS2EoYSxmLGMpLGU9IiwiKSk7Yy5wdXNoKCJ9Iik7cmV0dXJufX1zd2l0Y2go dHlwZW9mIGIpe2Nhc2UgInN0cmluZyI6TWEoYixjKTticmVhaztjYXNlICJudW1i ZXIiOmMucHVzaChpc0Zpbml0ZShiKSYmCiFpc05hTihiKT9TdHJpbmcoYik6Im51 bGwiKTticmVhaztjYXNlICJib29sZWFuIjpjLnB1c2goU3RyaW5nKGIpKTticmVh aztjYXNlICJmdW5jdGlvbiI6Yy5wdXNoKCJudWxsIik7YnJlYWs7ZGVmYXVsdDp0 aHJvdyBFcnJvcigiVW5rbm93biB0eXBlOiAiK3R5cGVvZiBiKTt9fX12YXIgTmE9 eyciJzonXFwiJywiXFwiOiJcXFxcIiwiLyI6IlxcLyIsIlxiIjoiXFxiIiwiXGYi OiJcXGYiLCJcbiI6IlxcbiIsIlxyIjoiXFxyIiwiXHQiOiJcXHQiLCJceDBCIjoi XFx1MDAwYiJ9LE9hPS9cdWZmZmYvLnRlc3QoIlx1ZmZmZiIpPy9bXFxcIlx4MDAt XHgxZlx4N2YtXHVmZmZmXS9nOi9bXFxcIlx4MDAtXHgxZlx4N2YtXHhmZl0vZzsK ZnVuY3Rpb24gTWEoYSxiKXtiLnB1c2goJyInLGEucmVwbGFjZShPYSxmdW5jdGlv bihhKXt2YXIgYj1OYVthXTtifHwoYj0iXFx1IisoYS5jaGFyQ29kZUF0KDApfDY1 NTM2KS50b1N0cmluZygxNikuc3Vic3RyKDEpLE5hW2FdPWIpO3JldHVybiBifSks JyInKX07ZnVuY3Rpb24gUGEoYSxiKXt0aGlzLmI9YTt0aGlzLmE9Yn1nPVBhLnBy b3RvdHlwZTtnLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQYSh0aGlzLmIs dGhpcy5hKX07Zy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiIoIit0aGlzLmIr IiB4ICIrdGhpcy5hKyIpIn07Zy5WYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmIq dGhpcy5hfTtnLkM9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5WYigpfTtnLmNlaWw9 ZnVuY3Rpb24oKXt0aGlzLmI9TWF0aC5jZWlsKHRoaXMuYik7dGhpcy5hPU1hdGgu Y2VpbCh0aGlzLmEpO3JldHVybiB0aGlzfTtnLmZsb29yPWZ1bmN0aW9uKCl7dGhp cy5iPU1hdGguZmxvb3IodGhpcy5iKTt0aGlzLmE9TWF0aC5mbG9vcih0aGlzLmEp O3JldHVybiB0aGlzfTtnLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy5iPU1hdGgucm91 bmQodGhpcy5iKTt0aGlzLmE9TWF0aC5yb3VuZCh0aGlzLmEpO3JldHVybiB0aGlz fTtmdW5jdGlvbiBRYShhLGIpe2Zvcih2YXIgYyBpbiBhKWIuY2FsbCh2b2lkIDAs YVtjXSxjLGEpfWZ1bmN0aW9uIFJhKGEpe3ZhciBiPVtdLGM9MCxkO2ZvcihkIGlu IGEpYltjKytdPWFbZF07cmV0dXJuIGJ9ZnVuY3Rpb24gU2EoYSl7dmFyIGI9W10s Yz0wLGQ7Zm9yKGQgaW4gYSliW2MrK109ZDtyZXR1cm4gYn1mdW5jdGlvbiBUYShh KXtyZXR1cm4gbnVsbCE9PWEmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gYX12YXIgVWE9 ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVy dHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIu c3BsaXQoIiAiKTsKZnVuY3Rpb24gVmEoYSxiKXtmb3IodmFyIGMsZCxlPTE7ZTxh cmd1bWVudHMubGVuZ3RoO2UrKyl7ZD1hcmd1bWVudHNbZV07Zm9yKGMgaW4gZClh W2NdPWRbY107Zm9yKHZhciBmPTA7ZjxVYS5sZW5ndGg7ZisrKWM9VWFbZl0sT2Jq ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsYykmJihhW2NdPWRb Y10pfX07ZnVuY3Rpb24gV2EoYSl7YS5wcm90b3R5cGUudGhlbj1hLnByb3RvdHlw ZS50aGVuO2EucHJvdG90eXBlLiRnb29nX1RoZW5hYmxlPSEwfWZ1bmN0aW9uIFhh KGEpe2lmKCFhKXJldHVybiExO3RyeXtyZXR1cm4hIWEuJGdvb2dfVGhlbmFibGV9 Y2F0Y2goYil7cmV0dXJuITF9fTtmdW5jdGlvbiBZYShhKXtZYVsiICJdKGEpO3Jl dHVybiBhfVlhWyIgIl09bjtmdW5jdGlvbiBaYShhKXt0aGlzLmE9YX12YXIgJGE9 L1xzKjtccyovO2c9WmEucHJvdG90eXBlO2cuc2V0PWZ1bmN0aW9uKGEsYixjLGQs ZSxmKXtpZigvWzs9XHNdLy50ZXN0KGEpKXRocm93IEVycm9yKCdJbnZhbGlkIGNv b2tpZSBuYW1lICInK2ErJyInKTtpZigvWztcclxuXS8udGVzdChiKSl0aHJvdyBF cnJvcignSW52YWxpZCBjb29raWUgdmFsdWUgIicrYisnIicpO2woYyl8fChjPS0x KTtlPWU/Ijtkb21haW49IitlOiIiO2Q9ZD8iO3BhdGg9IitkOiIiO2Y9Zj8iO3Nl Y3VyZSI6IiI7Yz0wPmM/IiI6MD09Yz8iO2V4cGlyZXM9IisobmV3IERhdGUoMTk3 MCwxLDEpKS50b1VUQ1N0cmluZygpOiI7ZXhwaXJlcz0iKyhuZXcgRGF0ZSh3KCkr MUUzKmMpKS50b1VUQ1N0cmluZygpO3RoaXMuYS5jb29raWU9YSsiPSIrYitlK2Qr YytmfTsKZy5nZXQ9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YSsiPSIsZD0odGhp cy5hLmNvb2tpZXx8IiIpLnNwbGl0KCRhKSxlPTAsZjtmPWRbZV07ZSsrKXtpZigw PT1mLmxhc3RJbmRleE9mKGMsMCkpcmV0dXJuIGYuc3Vic3RyKGMubGVuZ3RoKTtp ZihmPT1hKXJldHVybiIifXJldHVybiBifTtnLnJlbW92ZT1mdW5jdGlvbihhLGIs Yyl7dmFyIGQ9bCh0aGlzLmdldChhKSk7dGhpcy5zZXQoYSwiIiwwLGIsYyk7cmV0 dXJuIGR9O2cuUj1mdW5jdGlvbigpe3JldHVybiBhYih0aGlzKS5rZXlzfTtnLlM9 ZnVuY3Rpb24oKXtyZXR1cm4gYWIodGhpcykudmFsdWVzfTtnLkM9ZnVuY3Rpb24o KXtyZXR1cm4hdGhpcy5hLmNvb2tpZX07Zy5jbGVhcj1mdW5jdGlvbigpe2Zvcih2 YXIgYT1hYih0aGlzKS5rZXlzLGI9YS5sZW5ndGgtMTswPD1iO2ItLSl0aGlzLnJl bW92ZShhW2JdKX07CmZ1bmN0aW9uIGFiKGEpe2E9KGEuYS5jb29raWV8fCIiKS5z cGxpdCgkYSk7Zm9yKHZhciBiPVtdLGM9W10sZCxlLGY9MDtlPWFbZl07ZisrKWQ9 ZS5pbmRleE9mKCI9IiksLTE9PWQ/KGIucHVzaCgiIiksYy5wdXNoKGUpKTooYi5w dXNoKGUuc3Vic3RyaW5nKDAsZCkpLGMucHVzaChlLnN1YnN0cmluZyhkKzEpKSk7 cmV0dXJue2tleXM6Yix2YWx1ZXM6Y319dmFyIGJiPW5ldyBaYShkb2N1bWVudCk7 YmIuYj0zOTUwO2Z1bmN0aW9uIGNiKCl7fWNiLnByb3RvdHlwZS5hPW51bGw7ZnVu Y3Rpb24gZGIoYSl7dmFyIGI7KGI9YS5hKXx8KGI9e30sZWIoYSkmJihiWzBdPSEw LGJbMV09ITApLGI9YS5hPWIpO3JldHVybiBifTtmdW5jdGlvbiBmYihhLGIpe2Zv cih2YXIgYz1hLnNwbGl0KCIlcyIpLGQ9IiIsZT1BcnJheS5wcm90b3R5cGUuc2xp Y2UuY2FsbChhcmd1bWVudHMsMSk7ZS5sZW5ndGgmJjE8Yy5sZW5ndGg7KWQrPWMu c2hpZnQoKStlLnNoaWZ0KCk7cmV0dXJuIGQrYy5qb2luKCIlcyIpfXZhciBnYj1T dHJpbmcucHJvdG90eXBlLnRyaW0/ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHJpbSgp fTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9eW1xzXHhhMF0rfFtcc1x4 YTBdKyQvZywiIil9O2Z1bmN0aW9uIGhiKGEsYil7cmV0dXJuIGE8Yj8tMTphPmI/ MTowfTtmdW5jdGlvbiBDKGEpe3RoaXMuYj1bXTt0aGlzLmY9W107dGhpcy5hPXt9 O3RoaXMuaD10aGlzLmM9MDt0aGlzLmc9YXx8ITF9Zz1DLnByb3RvdHlwZTtnLkM9 ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuYyYmMD09PXRoaXMuaH07Zy5jbG9u ZT1mdW5jdGlvbigpe2Zvcih2YXIgYT1uZXcgQyh0aGlzLmcpLGI9dGhpcy5mLmNv bmNhdCgpLGM9dGhpcy5iLmNvbmNhdCgpLGQ9MCxlPWIubGVuZ3RoO2Q8ZTsrK2Qp YS5KKGJbZF0sdGhpcy5hW2JbZF1dKTtkPTA7Zm9yKGU9Yy5sZW5ndGg7ZDxlOysr ZClhLnNldChjW2RdLHRoaXMuYVtjW2RdXSk7cmV0dXJuIGF9O2cuZ2V0PWZ1bmN0 aW9uKGEsYil7YT1pYih0aGlzLGEpO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhh c093blByb3BlcnR5LmNhbGwodGhpcy5hLGEpP3RoaXMuYVthXTpifTsKZy5zZXQ9 ZnVuY3Rpb24oYSxiKXthPWliKHRoaXMsYSk7T2JqZWN0LnByb3RvdHlwZS5oYXNP d25Qcm9wZXJ0eS5jYWxsKHRoaXMuYSxhKXx8KHRoaXMuYysrLHRoaXMuYi5wdXNo KGEpKTt0aGlzLmFbYV09Yn07Zy5yZW1vdmU9ZnVuY3Rpb24oYSl7YT1pYih0aGlz LGEpO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlz LmEsYSkpe2RlbGV0ZSB0aGlzLmFbYV07Zm9yKHZhciBiPVtdLGM9MCxkPXRoaXMu Yi5sZW5ndGg7YzxkOysrYyl0aGlzLmJbY10hPT1hJiZiLnB1c2godGhpcy5iW2Nd KTt0aGlzLmI9Yjt0aGlzLmM9Yi5sZW5ndGh9fTtnLko9ZnVuY3Rpb24oYSxiKXth PWliKHRoaXMsYSk7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxs KHRoaXMuYSxhKXx8KHRoaXMuaCsrLHRoaXMuZi5wdXNoKGEpKTt0aGlzLmFbYV09 Yn07CmcudG9TdHJpbmc9ZnVuY3Rpb24oKXtpZih0aGlzLkMoKSlyZXR1cm4iIjtm b3IodmFyIGE9W10sYj10aGlzLmYuY29uY2F0KCkuY29uY2F0KHRoaXMuYi5jb25j YXQoKSksYz12b2lkIDAsZD12b2lkIDAsYz0iIixlPTAsZj1iLmxlbmd0aDtlPGY7 KytlKWM9YltlXSxkPXRoaXMuZ2V0KGMpLGM9ZW5jb2RlVVJJQ29tcG9uZW50KFN0 cmluZyhjKSksIiIhPT1kJiYoYys9Ij0iK2VuY29kZVVSSUNvbXBvbmVudChTdHJp bmcoZCkpKSxhLnB1c2goYyk7cmV0dXJuIGEuam9pbigiJiIpfTtmdW5jdGlvbiBp YihhLGIpe3ZhciBjPVN0cmluZyhiKTthLmcmJihjPWMudG9Mb3dlckNhc2UoKSk7 cmV0dXJuIGN9dmFyIEQ9Qy5wcm90b3R5cGU7RC5zZXQ9RC5zZXQ7RC5nZXQ9RC5n ZXQ7RC5zZXRNZXRhPUQuSjtELnJlbW92ZT1ELnJlbW92ZTtELmlzRW1wdHk9RC5D O0QudG9TdHJpbmc9RC50b1N0cmluZzt5LmRhPXt9O3kuZGEuT2E9ZnVuY3Rpb24o KXt2YXIgYT1uZXcgQzthLkooImV0IiwidWlkIik7cmV0dXJuIGF9O3kuST17fTt5 Lkkub2I9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEMsYztmb3IoYyBpbiBhKWEuaGFz T3duUHJvcGVydHkoYykmJmIuc2V0KGMsYVtjXSk7cmV0dXJuIGJ9O3kuY2E9e307 eS5jYS5PYT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgQzthPXkuSS5vYihhKTtiLkoo ImV0IiwiY3YiKTtiLnNldCgiY3YiLGEudG9TdHJpbmcoKSk7cmV0dXJuIGJ9O2Z1 bmN0aW9uIGpiKGEsYil7Yi51bnNoaWZ0KGEpO0IuY2FsbCh0aGlzLGZiLmFwcGx5 KG51bGwsYikpO2Iuc2hpZnQoKX14KGpiLEIpO2piLnByb3RvdHlwZS5uYW1lPSJB c3NlcnRpb25FcnJvciI7ZnVuY3Rpb24ga2IoYSxiKXt0aHJvdyBuZXcgamIoIkZh aWx1cmUiKyhhPyI6ICIrYToiIiksQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwo YXJndW1lbnRzLDEpKTt9O3ZhciBFPUFycmF5LnByb3RvdHlwZS5pbmRleE9mP2Z1 bmN0aW9uKGEsYixjKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2Fs bChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjKXtjPW51bGw9PWM/MDowPmM/TWF0aC5t YXgoMCxhLmxlbmd0aCtjKTpjO2lmKHQoYSkpcmV0dXJuIHQoYikmJjE9PWIubGVu Z3RoP2EuaW5kZXhPZihiLGMpOi0xO2Zvcig7YzxhLmxlbmd0aDtjKyspaWYoYyBp biBhJiZhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX0sbGI9QXJyYXkucHJvdG90 eXBlLmZvckVhY2g/ZnVuY3Rpb24oYSxiLGMpe0FycmF5LnByb3RvdHlwZS5mb3JF YWNoLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPWEubGVu Z3RoLGU9dChhKT9hLnNwbGl0KCIiKTphLGY9MDtmPGQ7ZisrKWYgaW4gZSYmYi5j YWxsKGMsZVtmXSxmLGEpfSxtYj1BcnJheS5wcm90b3R5cGUuZmlsdGVyP2Z1bmN0 aW9uKGEsYixjKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKGEs CmIsYyl9OmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9YS5sZW5ndGgsZT1bXSxm PTAsaz10KGEpP2Euc3BsaXQoIiIpOmEsbT0wO208ZDttKyspaWYobSBpbiBrKXt2 YXIgcj1rW21dO2IuY2FsbChjLHIsbSxhKSYmKGVbZisrXT1yKX1yZXR1cm4gZX0s bmI9QXJyYXkucHJvdG90eXBlLnNvbWU/ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBB cnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMp e2Zvcih2YXIgZD1hLmxlbmd0aCxlPXQoYSk/YS5zcGxpdCgiIik6YSxmPTA7Zjxk O2YrKylpZihmIGluIGUmJmIuY2FsbChjLGVbZl0sZixhKSlyZXR1cm4hMDtyZXR1 cm4hMX07CmZ1bmN0aW9uIG9iKGEsYil7dmFyIGM7YTp7Yz1hLmxlbmd0aDtmb3Io dmFyIGQ9dChhKT9hLnNwbGl0KCIiKTphLGU9MDtlPGM7ZSsrKWlmKGUgaW4gZCYm Yi5jYWxsKHZvaWQgMCxkW2VdLGUsYSkpe2M9ZTticmVhayBhfWM9LTF9cmV0dXJu IDA+Yz9udWxsOnQoYSk/YS5jaGFyQXQoYyk6YVtjXX1mdW5jdGlvbiBwYihhLGIp e3ZhciBjPUUoYSxiKSxkOyhkPTA8PWMpJiZBcnJheS5wcm90b3R5cGUuc3BsaWNl LmNhbGwoYSxjLDEpO3JldHVybiBkfWZ1bmN0aW9uIHFiKGEpe3JldHVybiBBcnJh eS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KEFycmF5LnByb3RvdHlwZSxhcmd1bWVu dHMpfWZ1bmN0aW9uIHJiKGEpe2Zvcih2YXIgYj1bXSxjPTA7YzxhO2MrKyliW2Nd PTA7cmV0dXJuIGJ9O2Z1bmN0aW9uIHNiKCl7dGhpcy5hPVtdfXNiLnByb3RvdHlw ZS5yZW1vdmU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmEsYj1hLmxlbmd0aCxjPWFb MF07aWYoMCE9PWIpe2lmKDE9PT1iKXtpZighcShhKSlmb3IoYj1hLmxlbmd0aC0x OzA8PWI7Yi0tKWRlbGV0ZSBhW2JdO2EubGVuZ3RoPTB9ZWxzZXthWzBdPWEucG9w KCk7Zm9yKHZhciBhPTAsYj10aGlzLmEsZD1iLmxlbmd0aCxlPXZvaWQgMCxmPXZv aWQgMCxlPXZvaWQgMCxrPWJbYV07YTxkPj4xOyl7ZT0yKmErMTtmPTIqYSsyO2U9 ZjxkJiZiW2ZdLmE8YltlXS5hP2Y6ZTtpZihiW2VdLmE+ay5hKWJyZWFrO2JbYV09 YltlXTthPWV9YlthXT1rfXJldHVybiBjLmJ9fTtzYi5wcm90b3R5cGUuTD1mdW5j dGlvbigpe3JldHVybiAwPT09dGhpcy5hLmxlbmd0aD92b2lkIDA6dGhpcy5hWzBd LmJ9O3NiLnByb3RvdHlwZS5DPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PXRoaXMuYS5s ZW5ndGh9O2Z1bmN0aW9uIHRiKCl7dGhpcy5hPW5ldyBzYn10Yi5wcm90b3R5cGUu ZW5xdWV1ZT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuYTtjLmEucHVzaChuZXcg c2EoYSxiKSk7Zm9yKHZhciBkPWMuYS5sZW5ndGgtMSxjPWMuYSxlPWNbZF0sZj12 b2lkIDA7MDxkOylpZihmPWQtMT4+MSxjW2ZdLmE+ZS5hKWNbZF09Y1tmXSxkPWY7 ZWxzZSBicmVhaztjW2RdPWV9O3RiLnByb3RvdHlwZS5pYT1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLmEucmVtb3ZlKCl9O3RiLnByb3RvdHlwZS5MPWZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuYS5MKCl9O3RiLnByb3RvdHlwZS5DPWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuYS5DKCl9O2Z1bmN0aW9uIHViKCl7dGhpcy5iPXRoaXMuYT1udWxs fXZhciB3Yj1uZXcgeGEoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHZifSxmdW5jdGlv bihhKXthLnJlc2V0KCl9LDEwMCk7dWIucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlv bigpe3ZhciBhPW51bGw7dGhpcy5hJiYoYT10aGlzLmEsdGhpcy5hPXRoaXMuYS5u ZXh0LHRoaXMuYXx8KHRoaXMuYj1udWxsKSxhLm5leHQ9bnVsbCk7cmV0dXJuIGF9 O2Z1bmN0aW9uIHZiKCl7dGhpcy5uZXh0PXRoaXMuYj10aGlzLmE9bnVsbH12Yi5w cm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5hPWE7dGhpcy5iPWI7dGhp cy5uZXh0PW51bGx9O3ZiLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMu bmV4dD10aGlzLmI9dGhpcy5hPW51bGx9O2Z1bmN0aW9uIHhiKGEpe3RoaXMuc3Jj PWE7dGhpcy5BPXt9O3RoaXMuYT0wfWZ1bmN0aW9uIHliKGEsYixjLGQsZSl7dmFy IGY9Yi50b1N0cmluZygpO2I9YS5BW2ZdO2J8fChiPWEuQVtmXT1bXSxhLmErKyk7 dmFyIGs9emIoYixjLGQsZSk7LTE8az8oYT1iW2tdLGEucmE9ITEpOihhPW5ldyBI YShjLGEuc3JjLGYsISFkLGUpLGEucmE9ITEsYi5wdXNoKGEpKTtyZXR1cm4gYX14 Yi5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGEsYixjLGQpe2E9YS50b1N0cmlu ZygpO2lmKCEoYSBpbiB0aGlzLkEpKXJldHVybiExO3ZhciBlPXRoaXMuQVthXTti PXpiKGUsYixjLGQpO3JldHVybi0xPGI/KElhKGVbYl0pLEFycmF5LnByb3RvdHlw ZS5zcGxpY2UuY2FsbChlLGIsMSksMD09ZS5sZW5ndGgmJihkZWxldGUgdGhpcy5B W2FdLHRoaXMuYS0tKSwhMCk6ITF9OwpmdW5jdGlvbiBBYihhLGIpe3ZhciBjPWIu dHlwZTtjIGluIGEuQSYmcGIoYS5BW2NdLGIpJiYoSWEoYiksMD09YS5BW2NdLmxl bmd0aCYmKGRlbGV0ZSBhLkFbY10sYS5hLS0pKX1mdW5jdGlvbiB6YihhLGIsYyxk KXtmb3IodmFyIGU9MDtlPGEubGVuZ3RoOysrZSl7dmFyIGY9YVtlXTtpZighZi5h YSYmZi5saXN0ZW5lcj09YiYmZi5YPT0hIWMmJmYudmE9PWQpcmV0dXJuIGV9cmV0 dXJuLTF9O2Z1bmN0aW9uIEJiKGEsYil7dGhpcy5hPWwoYSk/YTowO3RoaXMuSD1s KGIpP2I6MH1nPUJiLnByb3RvdHlwZTtnLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJu IG5ldyBCYih0aGlzLmEsdGhpcy5IKX07Zy50b1N0cmluZz1mdW5jdGlvbigpe3Jl dHVybiIoIit0aGlzLmErIiwgIit0aGlzLkgrIikifTtnLmNlaWw9ZnVuY3Rpb24o KXt0aGlzLmE9TWF0aC5jZWlsKHRoaXMuYSk7dGhpcy5IPU1hdGguY2VpbCh0aGlz LkgpO3JldHVybiB0aGlzfTtnLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy5hPU1hdGgu Zmxvb3IodGhpcy5hKTt0aGlzLkg9TWF0aC5mbG9vcih0aGlzLkgpO3JldHVybiB0 aGlzfTtnLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy5hPU1hdGgucm91bmQodGhpcy5h KTt0aGlzLkg9TWF0aC5yb3VuZCh0aGlzLkgpO3JldHVybiB0aGlzfTt2YXIgQ2I7 ZnVuY3Rpb24gRGIoKXt9eChEYixjYik7ZnVuY3Rpb24gRWIoYSl7cmV0dXJuKGE9 ZWIoYSkpP25ldyBBY3RpdmVYT2JqZWN0KGEpOm5ldyBYTUxIdHRwUmVxdWVzdH1m dW5jdGlvbiBlYihhKXtpZighYS5iJiYidW5kZWZpbmVkIj09dHlwZW9mIFhNTEh0 dHBSZXF1ZXN0JiYidW5kZWZpbmVkIiE9dHlwZW9mIEFjdGl2ZVhPYmplY3Qpe2Zv cih2YXIgYj1bIk1TWE1MMi5YTUxIVFRQLjYuMCIsIk1TWE1MMi5YTUxIVFRQLjMu MCIsIk1TWE1MMi5YTUxIVFRQIiwiTWljcm9zb2Z0LlhNTEhUVFAiXSxjPTA7Yzxi Lmxlbmd0aDtjKyspe3ZhciBkPWJbY107dHJ5e3JldHVybiBuZXcgQWN0aXZlWE9i amVjdChkKSxhLmI9ZH1jYXRjaChlKXt9fXRocm93IEVycm9yKCJDb3VsZCBub3Qg Y3JlYXRlIEFjdGl2ZVhPYmplY3QuIEFjdGl2ZVggbWlnaHQgYmUgZGlzYWJsZWQs IG9yIE1TWE1MIG1pZ2h0IG5vdCBiZSBpbnN0YWxsZWQiKTt9cmV0dXJuIGEuYn1D Yj1uZXcgRGI7ZnVuY3Rpb24gRmIoYSxiKXt0aGlzLmI9e307dGhpcy5hPVtdO3Ro aXMuYz0wO3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg7aWYoMTxjKXtpZihjJTIpdGhy b3cgRXJyb3IoIlVuZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzIik7Zm9yKHZhciBk PTA7ZDxjO2QrPTIpdGhpcy5zZXQoYXJndW1lbnRzW2RdLGFyZ3VtZW50c1tkKzFd KX1lbHNlIGlmKGEpe2EgaW5zdGFuY2VvZiBGYj8oYz1hLlIoKSxkPWEuUygpKToo Yz1TYShhKSxkPVJhKGEpKTtmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyl0aGlz LnNldChjW2VdLGRbZV0pfX1nPUZiLnByb3RvdHlwZTtnLlM9ZnVuY3Rpb24oKXtH Yih0aGlzKTtmb3IodmFyIGE9W10sYj0wO2I8dGhpcy5hLmxlbmd0aDtiKyspYS5w dXNoKHRoaXMuYlt0aGlzLmFbYl1dKTtyZXR1cm4gYX07Zy5SPWZ1bmN0aW9uKCl7 R2IodGhpcyk7cmV0dXJuIHRoaXMuYS5jb25jYXQoKX07Zy5DPWZ1bmN0aW9uKCl7 cmV0dXJuIDA9PXRoaXMuY307CmcuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmI9e307 dGhpcy5jPXRoaXMuYS5sZW5ndGg9MH07Zy5yZW1vdmU9ZnVuY3Rpb24oYSl7cmV0 dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmIs YSk/KGRlbGV0ZSB0aGlzLmJbYV0sdGhpcy5jLS0sdGhpcy5hLmxlbmd0aD4yKnRo aXMuYyYmR2IodGhpcyksITApOiExfTtmdW5jdGlvbiBHYihhKXtpZihhLmMhPWEu YS5sZW5ndGgpe2Zvcih2YXIgYj0wLGM9MDtiPGEuYS5sZW5ndGg7KXt2YXIgZD1h LmFbYl07T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEuYixk KSYmKGEuYVtjKytdPWQpO2IrK31hLmEubGVuZ3RoPWN9aWYoYS5jIT1hLmEubGVu Z3RoKXtmb3IodmFyIGU9e30sYz1iPTA7YjxhLmEubGVuZ3RoOylkPWEuYVtiXSxP YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxkKXx8KGEuYVtj KytdPWQsZVtkXT0xKSxiKys7YS5hLmxlbmd0aD1jfX0KZy5nZXQ9ZnVuY3Rpb24o YSxiKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxs KHRoaXMuYixhKT90aGlzLmJbYV06Yn07Zy5zZXQ9ZnVuY3Rpb24oYSxiKXtPYmpl Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5iLGEpfHwodGhp cy5jKyssdGhpcy5hLnB1c2goYSkpO3RoaXMuYlthXT1ifTtnLmZvckVhY2g9ZnVu Y3Rpb24oYSxiKXtmb3IodmFyIGM9dGhpcy5SKCksZD0wO2Q8Yy5sZW5ndGg7ZCsr KXt2YXIgZT1jW2RdLGY9dGhpcy5nZXQoZSk7YS5jYWxsKGIsZixlLHRoaXMpfX07 Zy5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgRmIodGhpcyl9O2Z1bmN0aW9u IEhiKGEpe2lmKGEuUyYmImZ1bmN0aW9uIj09dHlwZW9mIGEuUylyZXR1cm4gYS5T KCk7aWYodChhKSlyZXR1cm4gYS5zcGxpdCgiIik7aWYoY2EoYSkpe2Zvcih2YXIg Yj1bXSxjPWEubGVuZ3RoLGQ9MDtkPGM7ZCsrKWIucHVzaChhW2RdKTtyZXR1cm4g Yn1yZXR1cm4gUmEoYSl9CmZ1bmN0aW9uIEliKGEsYil7aWYoYS5mb3JFYWNoJiYi ZnVuY3Rpb24iPT10eXBlb2YgYS5mb3JFYWNoKWEuZm9yRWFjaChiLHZvaWQgMCk7 ZWxzZSBpZihjYShhKXx8dChhKSlsYihhLGIsdm9pZCAwKTtlbHNle3ZhciBjO2lm KGEuUiYmImZ1bmN0aW9uIj09dHlwZW9mIGEuUiljPWEuUigpO2Vsc2UgaWYoYS5T JiYiZnVuY3Rpb24iPT10eXBlb2YgYS5TKWM9dm9pZCAwO2Vsc2UgaWYoY2EoYSl8 fHQoYSkpe2M9W107Zm9yKHZhciBkPWEubGVuZ3RoLGU9MDtlPGQ7ZSsrKWMucHVz aChlKX1lbHNlIGM9U2EoYSk7Zm9yKHZhciBkPUhiKGEpLGU9ZC5sZW5ndGgsZj0w O2Y8ZTtmKyspYi5jYWxsKHZvaWQgMCxkW2ZdLGMmJmNbZl0sYSl9fTt2YXIgSmI9 L14oPzooW146Lz8jLl0rKTopPyg/OlwvXC8oPzooW14vPyNdKilAKT8oW14vIz9d Kj8pKD86OihbMC05XSspKT8oPz1bLyM/XXwkKSk/KFtePyNdKyk/KD86XD8oW14j XSopKT8oPzojKC4qKSk/JC87dmFyIEtiPSExLEY9IiI7ZnVuY3Rpb24gTGIoYSl7 YT1hLm1hdGNoKC9bXGRdKy9nKTtpZighYSlyZXR1cm4iIjthLmxlbmd0aD0zO3Jl dHVybiBhLmpvaW4oIi4iKX0KKGZ1bmN0aW9uKCl7aWYobmF2aWdhdG9yLnBsdWdp bnMmJm5hdmlnYXRvci5wbHVnaW5zLmxlbmd0aCl7dmFyIGE9bmF2aWdhdG9yLnBs dWdpbnNbIlNob2Nrd2F2ZSBGbGFzaCJdO2lmKGEmJihLYj0hMCxhLmRlc2NyaXB0 aW9uKSl7Rj1MYihhLmRlc2NyaXB0aW9uKTtyZXR1cm59aWYobmF2aWdhdG9yLnBs dWdpbnNbIlNob2Nrd2F2ZSBGbGFzaCAyLjAiXSl7S2I9ITA7Rj0iMi4wLjAuMTEi O3JldHVybn19aWYobmF2aWdhdG9yLm1pbWVUeXBlcyYmbmF2aWdhdG9yLm1pbWVU eXBlcy5sZW5ndGgmJihhPW5hdmlnYXRvci5taW1lVHlwZXNbImFwcGxpY2F0aW9u L3gtc2hvY2t3YXZlLWZsYXNoIl0sS2I9ISFhJiZhLmVuYWJsZWRQbHVnaW4pKXtG PUxiKGEuZW5hYmxlZFBsdWdpbi5kZXNjcmlwdGlvbik7cmV0dXJufXRyeXt2YXIg Yj1uZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxh c2guNyIpO0tiPSEwO0Y9TGIoYi5HZXRWYXJpYWJsZSgiJHZlcnNpb24iKSk7CnJl dHVybn1jYXRjaChjKXt9dHJ5e2I9bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2 ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLjYiKTtLYj0hMDtGPSI2LjAuMjEiO3JldHVy bn1jYXRjaChjKXt9dHJ5e2I9bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZs YXNoLlNob2Nrd2F2ZUZsYXNoIiksS2I9ITAsRj1MYihiLkdldFZhcmlhYmxlKCIk dmVyc2lvbiIpKX1jYXRjaChjKXt9fSkoKTt2YXIgTWI9Rjt2YXIgTmI7YTp7dmFy IE9iPWgubmF2aWdhdG9yO2lmKE9iKXt2YXIgUGI9T2IudXNlckFnZW50O2lmKFBi KXtOYj1QYjticmVhayBhfX1OYj0iIn1mdW5jdGlvbiBHKGEpe3JldHVybi0xIT1O Yi5pbmRleE9mKGEpfTtmdW5jdGlvbiBRYihhKXtoLnNldFRpbWVvdXQoZnVuY3Rp b24oKXt0aHJvdyBhO30sMCl9dmFyIFJiOwpmdW5jdGlvbiBTYigpe3ZhciBhPWgu TWVzc2FnZUNoYW5uZWw7InVuZGVmaW5lZCI9PT10eXBlb2YgYSYmInVuZGVmaW5l ZCIhPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucG9zdE1lc3NhZ2UmJndpbmRvdy5h ZGRFdmVudExpc3RlbmVyJiYhRygiUHJlc3RvIikmJihhPWZ1bmN0aW9uKCl7dmFy IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSUZSQU1FIik7YS5zdHlsZS5kaXNw bGF5PSJub25lIjthLnNyYz0iIjtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBw ZW5kQ2hpbGQoYSk7dmFyIGI9YS5jb250ZW50V2luZG93LGE9Yi5kb2N1bWVudDth Lm9wZW4oKTthLndyaXRlKCIiKTthLmNsb3NlKCk7dmFyIGM9ImNhbGxJbW1lZGlh dGUiK01hdGgucmFuZG9tKCksZD0iZmlsZToiPT1iLmxvY2F0aW9uLnByb3RvY29s PyIqIjpiLmxvY2F0aW9uLnByb3RvY29sKyIvLyIrYi5sb2NhdGlvbi5ob3N0LGE9 dihmdW5jdGlvbihhKXtpZigoIioiPT1kfHxhLm9yaWdpbj09ZCkmJmEuZGF0YT09 CmMpdGhpcy5wb3J0MS5vbm1lc3NhZ2UoKX0sdGhpcyk7Yi5hZGRFdmVudExpc3Rl bmVyKCJtZXNzYWdlIixhLCExKTt0aGlzLnBvcnQxPXt9O3RoaXMucG9ydDI9e3Bv c3RNZXNzYWdlOmZ1bmN0aW9uKCl7Yi5wb3N0TWVzc2FnZShjLGQpfX19KTtpZigi dW5kZWZpbmVkIiE9PXR5cGVvZiBhJiYhRygiVHJpZGVudCIpJiYhRygiTVNJRSIp KXt2YXIgYj1uZXcgYSxjPXt9LGQ9YztiLnBvcnQxLm9ubWVzc2FnZT1mdW5jdGlv bigpe2lmKGwoYy5uZXh0KSl7Yz1jLm5leHQ7dmFyIGE9Yy5oYjtjLmhiPW51bGw7 YSgpfX07cmV0dXJuIGZ1bmN0aW9uKGEpe2QubmV4dD17aGI6YX07ZD1kLm5leHQ7 Yi5wb3J0Mi5wb3N0TWVzc2FnZSgwKX19cmV0dXJuInVuZGVmaW5lZCIhPT10eXBl b2YgZG9jdW1lbnQmJiJvbnJlYWR5c3RhdGVjaGFuZ2UiaW4gZG9jdW1lbnQuY3Jl YXRlRWxlbWVudCgiU0NSSVBUIik/ZnVuY3Rpb24oYSl7dmFyIGI9ZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgiU0NSSVBUIik7CmIub25yZWFkeXN0YXRlY2hhbmdlPWZ1 bmN0aW9uKCl7Yi5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDtiLnBhcmVudE5vZGUu cmVtb3ZlQ2hpbGQoYik7Yj1udWxsO2EoKTthPW51bGx9O2RvY3VtZW50LmRvY3Vt ZW50RWxlbWVudC5hcHBlbmRDaGlsZChiKX06ZnVuY3Rpb24oYSl7aC5zZXRUaW1l b3V0KGEsMCl9fTtmdW5jdGlvbiBUYihhLGIpe1VifHxWYigpO1difHwoVWIoKSxX Yj0hMCk7dmFyIGM9WGIsZD13Yi5nZXQoKTtkLnNldChhLGIpO2MuYj9jLmIubmV4 dD1kOmMuYT1kO2MuYj1kfXZhciBVYjtmdW5jdGlvbiBWYigpe2lmKGguUHJvbWlz ZSYmaC5Qcm9taXNlLnJlc29sdmUpe3ZhciBhPWguUHJvbWlzZS5yZXNvbHZlKHZv aWQgMCk7VWI9ZnVuY3Rpb24oKXthLnRoZW4oWWIpfX1lbHNlIFViPWZ1bmN0aW9u KCl7dmFyIGE9WWI7IXUoaC5zZXRJbW1lZGlhdGUpfHxoLldpbmRvdyYmaC5XaW5k b3cucHJvdG90eXBlJiYhRygiRWRnZSIpJiZoLldpbmRvdy5wcm90b3R5cGUuc2V0 SW1tZWRpYXRlPT1oLnNldEltbWVkaWF0ZT8oUmJ8fChSYj1TYigpKSxSYihhKSk6 aC5zZXRJbW1lZGlhdGUoYSl9fXZhciBXYj0hMSxYYj1uZXcgdWI7CmZ1bmN0aW9u IFliKCl7Zm9yKHZhciBhPW51bGw7YT1YYi5yZW1vdmUoKTspe3RyeXthLmEuY2Fs bChhLmIpfWNhdGNoKGIpe1FiKGIpfXlhKHdiLGEpfVdiPSExfTtmdW5jdGlvbiBI KGEsYil7dGhpcy5hPVpiO3RoaXMuaj12b2lkIDA7dGhpcy5jPXRoaXMuYj10aGlz LmY9bnVsbDt0aGlzLmc9dGhpcy5oPSExO2lmKGEhPW4pdHJ5e3ZhciBjPXRoaXM7 YS5jYWxsKGIsZnVuY3Rpb24oYSl7JGIoYyxhYyxhKX0sZnVuY3Rpb24oYSl7dHJ5 e2lmKGEgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBhO3Rocm93IEVycm9yKCJQcm9t aXNlIHJlamVjdGVkLiIpO31jYXRjaChiKXt9JGIoYyxKLGEpfSl9Y2F0Y2goZCl7 JGIodGhpcyxKLGQpfX12YXIgWmI9MCxhYz0yLEo9MztmdW5jdGlvbiBiYygpe3Ro aXMubmV4dD10aGlzLmNvbnRleHQ9dGhpcy5iPXRoaXMuYz10aGlzLmE9bnVsbDt0 aGlzLmY9ITF9YmMucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5jb250 ZXh0PXRoaXMuYj10aGlzLmM9dGhpcy5hPW51bGw7dGhpcy5mPSExfTt2YXIgY2M9 bmV3IHhhKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBiY30sZnVuY3Rpb24oYSl7YS5y ZXNldCgpfSwxMDApOwpmdW5jdGlvbiBkYyhhLGIsYyl7dmFyIGQ9Y2MuZ2V0KCk7 ZC5jPWE7ZC5iPWI7ZC5jb250ZXh0PWM7cmV0dXJuIGR9SC5wcm90b3R5cGUudGhl bj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGVjKHRoaXMsdShhKT9hOm51bGwsdShi KT9iOm51bGwsYyl9O1dhKEgpO2Z1bmN0aW9uIGZjKGEsYil7YS5ifHxhLmEhPWFj JiZhLmEhPUp8fGdjKGEpO2EuYz9hLmMubmV4dD1iOmEuYj1iO2EuYz1ifWZ1bmN0 aW9uIGVjKGEsYixjLGQpe3ZhciBlPWRjKG51bGwsbnVsbCxudWxsKTtlLmE9bmV3 IEgoZnVuY3Rpb24oYSxrKXtlLmM9Yj9mdW5jdGlvbihjKXt0cnl7dmFyIGU9Yi5j YWxsKGQsYyk7YShlKX1jYXRjaChJKXtrKEkpfX06YTtlLmI9Yz9mdW5jdGlvbihi KXt0cnl7dmFyIGU9Yy5jYWxsKGQsYik7YShlKX1jYXRjaChJKXtrKEkpfX06a30p O2UuYS5mPWE7ZmMoYSxlKTtyZXR1cm4gZS5hfUgucHJvdG90eXBlLnM9ZnVuY3Rp b24oYSl7dGhpcy5hPVpiOyRiKHRoaXMsYWMsYSl9OwpILnByb3RvdHlwZS52PWZ1 bmN0aW9uKGEpe3RoaXMuYT1aYjskYih0aGlzLEosYSl9O2Z1bmN0aW9uICRiKGEs YixjKXtpZihhLmE9PVpiKXthPT1jJiYoYj1KLGM9bmV3IFR5cGVFcnJvcigiUHJv bWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGYiKSk7YS5hPTE7dmFyIGQ7YTp7 dmFyIGU9YyxmPWEucyxrPWEudjtpZihlIGluc3RhbmNlb2YgSClmYyhlLGRjKGZ8 fG4sa3x8bnVsbCxhKSksZD0hMDtlbHNlIGlmKFhhKGUpKWUudGhlbihmLGssYSks ZD0hMDtlbHNle3ZhciBtPXR5cGVvZiBlO2lmKCJvYmplY3QiPT1tJiZudWxsIT1l fHwiZnVuY3Rpb24iPT1tKXRyeXt2YXIgcj1lLnRoZW47aWYodShyKSl7aGMoZSxy LGYsayxhKTtkPSEwO2JyZWFrIGF9fWNhdGNoKEkpe2suY2FsbChhLEkpO2Q9ITA7 YnJlYWsgYX1kPSExfX1kfHwoYS5qPWMsYS5hPWIsYS5mPW51bGwsZ2MoYSksYiE9 Snx8aWMoYSxjKSl9fQpmdW5jdGlvbiBoYyhhLGIsYyxkLGUpe2Z1bmN0aW9uIGYo YSl7bXx8KG09ITAsZC5jYWxsKGUsYSkpfWZ1bmN0aW9uIGsoYSl7bXx8KG09ITAs Yy5jYWxsKGUsYSkpfXZhciBtPSExO3RyeXtiLmNhbGwoYSxrLGYpfWNhdGNoKHIp e2Yocil9fWZ1bmN0aW9uIGdjKGEpe2EuaHx8KGEuaD0hMCxUYihhLm0sYSkpfWZ1 bmN0aW9uIGpjKGEpe3ZhciBiPW51bGw7YS5iJiYoYj1hLmIsYS5iPWIubmV4dCxi Lm5leHQ9bnVsbCk7YS5ifHwoYS5jPW51bGwpO3JldHVybiBifQpILnByb3RvdHlw ZS5tPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPW51bGw7YT1qYyh0aGlzKTspe3ZhciBi PXRoaXMuYSxjPXRoaXMuajtpZihiPT1KJiZhLmImJiFhLmYpZm9yKHZhciBkPXZv aWQgMCxkPXRoaXM7ZCYmZC5nO2Q9ZC5mKWQuZz0hMTtpZihhLmEpYS5hLmY9bnVs bCxrYyhhLGIsYyk7ZWxzZSB0cnl7YS5mP2EuYy5jYWxsKGEuY29udGV4dCk6a2Mo YSxiLGMpfWNhdGNoKGUpe21jLmNhbGwobnVsbCxlKX15YShjYyxhKX10aGlzLmg9 ITF9O2Z1bmN0aW9uIGtjKGEsYixjKXtiPT1hYz9hLmMuY2FsbChhLmNvbnRleHQs Yyk6YS5iJiZhLmIuY2FsbChhLmNvbnRleHQsYyl9ZnVuY3Rpb24gaWMoYSxiKXth Lmc9ITA7VGIoZnVuY3Rpb24oKXthLmcmJm1jLmNhbGwobnVsbCxiKX0pfXZhciBt Yz1RYjtmdW5jdGlvbiBuYyhhKXtCYS5jYWxsKHRoaXMpO3RoaXMuaD0xO3RoaXMu Zj1bXTt0aGlzLmM9MDt0aGlzLmE9W107dGhpcy5iPXt9O3RoaXMuaj1Cb29sZWFu KGEpfXgobmMsQmEpO2Z1bmN0aW9uIG9jKGEsYixjKXt2YXIgZD1mdW5jdDtpZihi PWEuYltiXSl7dmFyIGU9YS5hO2lmKGI9b2IoYixmdW5jdGlvbihhKXtyZXR1cm4g ZVthKzFdPT1kJiZlW2ErMl09PWN9KSlyZXR1cm4gYS5nKGIpfXJldHVybiExfW5j LnByb3RvdHlwZS5nPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYVthXTtpZihiKXt2 YXIgYz10aGlzLmJbYl07MCE9dGhpcy5jPyh0aGlzLmYucHVzaChhKSx0aGlzLmFb YSsxXT1uKTooYyYmcGIoYyxhKSxkZWxldGUgdGhpcy5hW2FdLGRlbGV0ZSB0aGlz LmFbYSsxXSxkZWxldGUgdGhpcy5hW2ErMl0pfXJldHVybiEhYn07Cm5jLnByb3Rv dHlwZS5tPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5iW2FdO2lmKGMpe2Zvcih2 YXIgZD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTEpLGU9MSxmPWFyZ3VtZW50cy5s ZW5ndGg7ZTxmO2UrKylkW2UtMV09YXJndW1lbnRzW2VdO2lmKHRoaXMuailmb3Io ZT0wO2U8Yy5sZW5ndGg7ZSsrKXt2YXIgaz1jW2VdO3BjKHRoaXMuYVtrKzFdLHRo aXMuYVtrKzJdLGQpfWVsc2V7dGhpcy5jKys7dHJ5e2ZvcihlPTAsZj1jLmxlbmd0 aDtlPGY7ZSsrKWs9Y1tlXSx0aGlzLmFbaysxXS5hcHBseSh0aGlzLmFbaysyXSxk KX1maW5hbGx5e2lmKHRoaXMuYy0tLDA8dGhpcy5mLmxlbmd0aCYmMD09dGhpcy5j KWZvcig7Yz10aGlzLmYucG9wKCk7KXRoaXMuZyhjKX19cmV0dXJuIDAhPWV9cmV0 dXJuITF9O2Z1bmN0aW9uIHBjKGEsYixjKXtUYihmdW5jdGlvbigpe2EuYXBwbHko YixjKX0pfQpuYy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oYSl7aWYoYSl7dmFy IGI9dGhpcy5iW2FdO2ImJihsYihiLHRoaXMuZyx0aGlzKSxkZWxldGUgdGhpcy5i W2FdKX1lbHNlIHRoaXMuYS5sZW5ndGg9MCx0aGlzLmI9e319O3ZhciBxYz1HKCJP cGVyYSIpfHxHKCJPUFIiKSxLPUcoIlRyaWRlbnQiKXx8RygiTVNJRSIpLHJjPUco IkVkZ2UiKSxzYz1HKCJHZWNrbyIpJiYhKC0xIT1OYi50b0xvd2VyQ2FzZSgpLmlu ZGV4T2YoIndlYmtpdCIpJiYhRygiRWRnZSIpKSYmIShHKCJUcmlkZW50Iil8fEco Ik1TSUUiKSkmJiFHKCJFZGdlIiksdGM9LTEhPU5iLnRvTG93ZXJDYXNlKCkuaW5k ZXhPZigid2Via2l0IikmJiFHKCJFZGdlIiksdWM9dGMmJkcoIk1vYmlsZSIpO2Z1 bmN0aW9uIHZjKCl7dmFyIGE9aC5kb2N1bWVudDtyZXR1cm4gYT9hLmRvY3VtZW50 TW9kZTp2b2lkIDB9dmFyIHdjOwphOnt2YXIgeGM9IiIseWM9ZnVuY3Rpb24oKXt2 YXIgYT1OYjtpZihzYylyZXR1cm4vcnZcOihbXlwpO10rKShcKXw7KS8uZXhlYyhh KTtpZihyYylyZXR1cm4vRWRnZVwvKFtcZFwuXSspLy5leGVjKGEpO2lmKEspcmV0 dXJuL1xiKD86TVNJRXxydilbOiBdKFteXCk7XSspKFwpfDspLy5leGVjKGEpO2lm KHRjKXJldHVybi9XZWJLaXRcLyhcUyspLy5leGVjKGEpO2lmKHFjKXJldHVybi8o PzpWZXJzaW9uKVsgXC9dPyhcUyspLy5leGVjKGEpfSgpO3ljJiYoeGM9eWM/eWNb MV06IiIpO2lmKEspe3ZhciB6Yz12YygpO2lmKG51bGwhPXpjJiZ6Yz5wYXJzZUZs b2F0KHhjKSl7d2M9U3RyaW5nKHpjKTticmVhayBhfX13Yz14Y312YXIgQWM9e307 CmZ1bmN0aW9uIEwoYSl7dmFyIGI7aWYoIShiPUFjW2FdKSl7Yj0wO2Zvcih2YXIg Yz1nYihTdHJpbmcod2MpKS5zcGxpdCgiLiIpLGQ9Z2IoU3RyaW5nKGEpKS5zcGxp dCgiLiIpLGU9TWF0aC5tYXgoYy5sZW5ndGgsZC5sZW5ndGgpLGY9MDswPT1iJiZm PGU7ZisrKXt2YXIgaz1jW2ZdfHwiIixtPWRbZl18fCIiLHI9UmVnRXhwKCIoXFxk KikoXFxEKikiLCJnIiksST1SZWdFeHAoIihcXGQqKShcXEQqKSIsImciKTtkb3t2 YXIgbWE9ci5leGVjKGspfHxbIiIsIiIsIiJdLG5hPUkuZXhlYyhtKXx8WyIiLCIi LCIiXTtpZigwPT1tYVswXS5sZW5ndGgmJjA9PW5hWzBdLmxlbmd0aClicmVhazti PWhiKDA9PW1hWzFdLmxlbmd0aD8wOnBhcnNlSW50KG1hWzFdLDEwKSwwPT1uYVsx XS5sZW5ndGg/MDpwYXJzZUludChuYVsxXSwxMCkpfHxoYigwPT1tYVsyXS5sZW5n dGgsMD09bmFbMl0ubGVuZ3RoKXx8aGIobWFbMl0sbmFbMl0pfXdoaWxlKDA9PWIp fWI9QWNbYV09MDw9Yn1yZXR1cm4gYn0KdmFyIEJjPWguZG9jdW1lbnQsQ2M9QmMm Jks/dmMoKXx8KCJDU1MxQ29tcGF0Ij09QmMuY29tcGF0TW9kZT9wYXJzZUludCh3 YywxMCk6NSk6dm9pZCAwO3kuYj17fTt5LmIucmI9ITE7eS5iLiRhPSExO3kuYi5B Yj15LmIucmJ8fHkuYi4kYTt5LmIuQ2E9ITE7eS5iLnhiPXtwYjoiYSJ9Owp5LmIu cmVhZHk9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2N8fChjPSEwLHkuYi5DYT0h MCxhKCkpfXZhciBjPSExO3kuYi5DYSYmYSgpO2lmKGRvY3VtZW50LmFkZEV2ZW50 TGlzdGVuZXIpZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExv YWRlZCIsZnVuY3Rpb24oKXtiKCl9LCExKTtlbHNlIGlmKGRvY3VtZW50LmF0dGFj aEV2ZW50KXtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwmJndp bmRvdz09d2luZG93LnRvcCl7dmFyIGQ9ZnVuY3Rpb24oKXtpZighYyYmZG9jdW1l bnQuYm9keSl0cnl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJs ZWZ0IiksYigpfWNhdGNoKGEpe3NldFRpbWVvdXQoZCwwKX19O2QoKX1kb2N1bWVu dC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixmdW5jdGlvbigpeyJj b21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlJiZiKCl9KX13aW5kb3cuYWRk RXZlbnRMaXN0ZW5lcj93aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsCmIs ITEpOndpbmRvdy5hdHRhY2hFdmVudCYmd2luZG93LmF0dGFjaEV2ZW50KCJvbmxv YWQiLGIpfTt5LmIucmVhZHkoZnVuY3Rpb24oKXt5LmIuQ2E9ITB9KTt5LmIuUD1m dW5jdGlvbihhKXtyZXR1cm4gdChhKT9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChh KTphfTt5LmIuZ2V0RWxlbWVudHNCeVRhZ05hbWU9ZnVuY3Rpb24oYSl7YT1hLnRv VXBwZXJDYXNlKCk7cmV0dXJuIGguZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h bWUoYSl9O3kuYi5OYT1mdW5jdGlvbigpe3ZhciBhPWguZG9jdW1lbnQuYm9keSxi PWguZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGE9bWIoW2Euc2Nyb2xsSGVpZ2h0 LGIuc2Nyb2xsSGVpZ2h0LGEub2Zmc2V0SGVpZ2h0LGIub2Zmc2V0SGVpZ2h0LGEu Y2xpZW50SGVpZ2h0LGIuY2xpZW50SGVpZ2h0XSxmdW5jdGlvbihhKXtyZXR1cm4g YT8hMDohMX0pO3JldHVybiBNYXRoLm1heC5hcHBseShudWxsLGEpfTsKeS5iLmpi PWZ1bmN0aW9uKGEpe2E9YXx8aDt2YXIgYj1hLmRvY3VtZW50O2lmKHRjJiYhdWMp e2woYS5pbm5lckhlaWdodCl8fChhPWgpO3ZhciBiPWEuaW5uZXJIZWlnaHQsYz1h LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQ7YT09YS50b3Am JmM8YiYmKGItPTE1KTtyZXR1cm4gbmV3IHJhKGEuaW5uZXJXaWR0aCxiKX1hPXku Yi5JYihiKT9iLmRvY3VtZW50RWxlbWVudDpiLmJvZHk7cmV0dXJuIG5ldyByYShh LmNsaWVudFdpZHRoLGEuY2xpZW50SGVpZ2h0KX07eS5iLkliPWZ1bmN0aW9uKGEp e3JldHVybiB5LmIuQWI/eS5iLiRhOiJDU1MxQ29tcGF0Ij09YS5jb21wYXRNb2Rl fTtmdW5jdGlvbiBEYygpe3RoaXMuYT1bXTtoLnNldFRpbWVvdXQodihmdW5jdGlv bigpe0VjKHRoaXMpfSx0aGlzKSwwKX1wKERjKTtmdW5jdGlvbiBFYyhhKXtmb3Io dmFyIGI9eS5iLmdldEVsZW1lbnRzQnlUYWdOYW1lKHkuYi54Yi5wYiksYz1bXSxk PTAsZT1iLmxlbmd0aDtkPGU7KytkKWMucHVzaChiW2RdKTtiPXkuaC5tYXAoYyxm dW5jdGlvbihhKXtyZXR1cm4gYS5ocmVmfSk7YS5hPXkuaC5jYyhiKX07ZnVuY3Rp b24gRmMoYSl7dGhpcy5mPWE7dGhpcy5iPXRoaXMuYz10aGlzLmE9bnVsbH1mdW5j dGlvbiBHYyhhLGIpe3RoaXMubmFtZT1hO3RoaXMudmFsdWU9Yn1HYy5wcm90b3R5 cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfTt2YXIgSGM9 bmV3IEdjKCJTRVZFUkUiLDFFMyksSWM9bmV3IEdjKCJDT05GSUciLDcwMCksSmM9 bmV3IEdjKCJGSU5FIiw1MDApO2Z1bmN0aW9uIEtjKGEpe2lmKGEuYylyZXR1cm4g YS5jO2lmKGEuYSlyZXR1cm4gS2MoYS5hKTtrYigiUm9vdCBsb2dnZXIgaGFzIG5v IGxldmVsIHNldC4iKTtyZXR1cm4gbnVsbH0KRmMucHJvdG90eXBlLmxvZz1mdW5j dGlvbihhLGIsYyl7aWYoYS52YWx1ZT49S2ModGhpcykudmFsdWUpZm9yKHUoYikm JihiPWIoKSksYT1uZXcgemEoYSxTdHJpbmcoYiksdGhpcy5mKSxjJiYoYS5hPWMp LGM9ImxvZzoiK2EuYixoLmNvbnNvbGUmJihoLmNvbnNvbGUudGltZVN0YW1wP2gu Y29uc29sZS50aW1lU3RhbXAoYyk6aC5jb25zb2xlLm1hcmtUaW1lbGluZSYmaC5j b25zb2xlLm1hcmtUaW1lbGluZShjKSksaC5tc1dyaXRlUHJvZmlsZXJNYXJrJiZo Lm1zV3JpdGVQcm9maWxlck1hcmsoYyksYz10aGlzO2M7KWM9Yy5hfTt2YXIgTGM9 e30sTWM9bnVsbDsKZnVuY3Rpb24gTmMoYSl7TWN8fChNYz1uZXcgRmMoIiIpLExj WyIiXT1NYyxNYy5jPUljKTt2YXIgYjtpZighKGI9TGNbYV0pKXtiPW5ldyBGYyhh KTt2YXIgYz1hLmxhc3RJbmRleE9mKCIuIiksZD1hLnN1YnN0cihjKzEpLGM9TmMo YS5zdWJzdHIoMCxjKSk7Yy5ifHwoYy5iPXt9KTtjLmJbZF09YjtiLmE9YztMY1th XT1ifXJldHVybiBifTshc2MmJiFLfHxLJiY5PD1OdW1iZXIoQ2MpfHxzYyYmTCgi MS45LjEiKTtLJiZMKCI5Iik7ZnVuY3Rpb24gT2MoYSxiKXtRYShiLGZ1bmN0aW9u KGIsZCl7InN0eWxlIj09ZD9hLnN0eWxlLmNzc1RleHQ9YjoiY2xhc3MiPT1kP2Eu Y2xhc3NOYW1lPWI6ImZvciI9PWQ/YS5odG1sRm9yPWI6UGMuaGFzT3duUHJvcGVy dHkoZCk/YS5zZXRBdHRyaWJ1dGUoUGNbZF0sYik6MD09ZC5sYXN0SW5kZXhPZigi YXJpYS0iLDApfHwwPT1kLmxhc3RJbmRleE9mKCJkYXRhLSIsMCk/YS5zZXRBdHRy aWJ1dGUoZCxiKTphW2RdPWJ9KX12YXIgUGM9e2NlbGxwYWRkaW5nOiJjZWxsUGFk ZGluZyIsY2VsbHNwYWNpbmc6ImNlbGxTcGFjaW5nIixjb2xzcGFuOiJjb2xTcGFu IixmcmFtZWJvcmRlcjoiZnJhbWVCb3JkZXIiLGhlaWdodDoiaGVpZ2h0IixtYXhs ZW5ndGg6Im1heExlbmd0aCIsbm9uY2U6Im5vbmNlIixyb2xlOiJyb2xlIixyb3dz cGFuOiJyb3dTcGFuIix0eXBlOiJ0eXBlIix1c2VtYXA6InVzZU1hcCIsdmFsaWdu OiJ2QWxpZ24iLHdpZHRoOiJ3aWR0aCJ9OwpmdW5jdGlvbiBRYyhhKXthPWEuZG9j dW1lbnQ7YT0iQ1NTMUNvbXBhdCI9PWEuY29tcGF0TW9kZT9hLmRvY3VtZW50RWxl bWVudDphLmJvZHk7cmV0dXJuIG5ldyBQYShhLmNsaWVudFdpZHRoLGEuY2xpZW50 SGVpZ2h0KX1mdW5jdGlvbiBSYyhhKXtyZXR1cm4gYS5wYXJlbnRXaW5kb3d8fGEu ZGVmYXVsdFZpZXd9ZnVuY3Rpb24gU2MoYSl7dGhpcy5hPWF8fGguZG9jdW1lbnR8 fGRvY3VtZW50fVNjLnByb3RvdHlwZS5QPWZ1bmN0aW9uKGEpe3JldHVybiB0KGEp P3RoaXMuYS5nZXRFbGVtZW50QnlJZChhKTphfTtTYy5wcm90b3R5cGUuamI9ZnVu Y3Rpb24oYSl7cmV0dXJuIFFjKGF8fFJjKHRoaXMuYSl8fHdpbmRvdyl9OwpTYy5w cm90b3R5cGUuTmE9ZnVuY3Rpb24oKXt2YXIgYTthOnt2YXIgYj1SYyh0aGlzLmEp LGM9Yi5kb2N1bWVudDthPTA7aWYoYyl7YT1jLmJvZHk7dmFyIGQ9Yy5kb2N1bWVu dEVsZW1lbnQ7aWYoIWR8fCFhKXthPTA7YnJlYWsgYX1iPVFjKGIpLmE7aWYoIkNT UzFDb21wYXQiPT1jLmNvbXBhdE1vZGUmJmQuc2Nyb2xsSGVpZ2h0KWE9ZC5zY3Jv bGxIZWlnaHQhPWI/ZC5zY3JvbGxIZWlnaHQ6ZC5vZmZzZXRIZWlnaHQ7ZWxzZXt2 YXIgYz1kLnNjcm9sbEhlaWdodCxlPWQub2Zmc2V0SGVpZ2h0O2QuY2xpZW50SGVp Z2h0IT1lJiYoYz1hLnNjcm9sbEhlaWdodCxlPWEub2Zmc2V0SGVpZ2h0KTthPWM+ Yj9jPmU/YzplOmM8ZT9jOmV9fX1yZXR1cm4gYX07ClNjLnByb3RvdHlwZS5jb250 YWlucz1mdW5jdGlvbihhLGIpe2lmKCFhfHwhYilyZXR1cm4hMTtpZihhLmNvbnRh aW5zJiYxPT1iLm5vZGVUeXBlKXJldHVybiBhPT1ifHxhLmNvbnRhaW5zKGIpO2lm KCJ1bmRlZmluZWQiIT10eXBlb2YgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbily ZXR1cm4gYT09Ynx8Qm9vbGVhbihhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIp JjE2KTtmb3IoO2ImJmEhPWI7KWI9Yi5wYXJlbnROb2RlO3JldHVybiBiPT1hfTtm dW5jdGlvbiBUYygpe3RoaXMuYj1uZXcgQzt0aGlzLmE9dm9pZCAwO3ZhciBhPXRo aXMuYjthLkooImV0IiwicHYiKTthLnNldCgiYnMiLHkuYi5qYigpKTthLnNldCgi Y2UiLG5hdmlnYXRvci5jb29raWVFbmFibGVkPzE6MCk7dmFyIGI9aC5kb2N1bWVu dDtiJiYoYS5zZXQoInJmIixiLnJlZmVycmVyfHwiIiksYS5zZXQoImVuIixiLmNo YXJhY3RlclNldHx8Yi5jaGFyc2V0fHwiIiksYS5zZXQoInB0IixiLnRpdGxlLnN1 YnN0cmluZygwLDI1NSkpKTtpZihiPWguc2NyZWVuKWEuc2V0KCJzciIsYi53aWR0 aCsieCIrYi5oZWlnaHQpLGEuc2V0KCJjZCIsYi5jb2xvckRlcHRoKyItYml0Iik7 aWYoYj1oLm5hdmlnYXRvcilhLnNldCgibGEiLGIubGFuZ3VhZ2V8fGIuYnJvd3Nl ckxhbmd1YWdlfHwiIiksYS5zZXQoImphIixiLmphdmFFbmFibGVkKCk/MTowKSxh LnNldCgiYWNuIixiLmFwcENvZGVOYW1lKSxhLnNldCgiYW4iLGIuYXBwTmFtZSks YS5zZXQoInBsIixiLnBsYXRmb3JtKTsKYS5zZXQoInR6IiwobmV3IERhdGUpLmdl dFRpbWV6b25lT2Zmc2V0KCkpO2Euc2V0KCJmdiIsVWMoKSk7YS5zZXQoInN2Iix5 LmEuaS5WRVJTSU9OKTthLnNldCgibHYiLFZjKHRoaXMpKX0KZnVuY3Rpb24gV2Mo YSxiLGMsZCl7dmFyIGU9YS5iLmNsb25lKCksZjtpZihmPWIuWWEpZj1oLmxvY2F0 aW9uLmhhc2guc3BsaXQoIiMiKVsxXSxmPXkuYi5QKGYpP251bGw6ZjtlLnNldCgi cHQiLGRvY3VtZW50LnRpdGxlLnN1YnN0cmluZygwLDI1NSkpO3ZhciBrO2lmKGs9 Yi5EKXt2YXIgbTthOntrPWIuRDtmb3IobSBpbiBrKXttPSExO2JyZWFrIGF9bT0h MH1rPSFtfWsmJihtPXkuSS5vYihiLkQpLGUuc2V0KCJjdiIsbS50b1N0cmluZygp KSk7cShiLmhhKSYmYi5oYS5sZW5ndGgmJihhPWEuYyhiLmhhKSxlLnNldCgiY2gi LEphKGEpKSk7ZiYmZS5zZXQoImhhc2giLGYpOyhjfHwwPT1jKSYmZS5zZXQoImxl IixjKTsoYi56YXx8ZCkmJmUuc2V0KCJ1cmwiLGR8fGIuemEpO3JldHVybiBlfQpm dW5jdGlvbiBWYyhhKXtpZighYS5hKXthLmE9YmIuZ2V0KCJsYXN0X3Zpc2l0Iik7 Zm9yKHZhciBiPVsiLyIsaC5kb2N1bWVudC5wYXRobmFtZV0sYz0wLGQ9Yi5sZW5n dGg7YzxkOysrYyliYi5yZW1vdmUoImxhc3RfdmlzaXQiLGJbY10pO2I9bmV3IERh dGU7Yj1iLmdldFRpbWUoKSs2RTQqYi5nZXRUaW1lem9uZU9mZnNldCgpKyI6OiIr Yi5nZXRUaW1lKCk7Yz0iLiIraC5kb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZS5z cGxpdCgid3d3LiIpLnBvcCgpO2JiLnNldCgibGFzdF92aXNpdCIsYiw4NjRFNSwi LyIsYyl9cmV0dXJuIGEuYXx8IiJ9VGMucHJvdG90eXBlLmM9ZnVuY3Rpb24oYSl7 Zm9yKHZhciBiPVtdLGM9MCxkPWEubGVuZ3RoO2M8ZDsrK2MpYi5wdXNoKGFbY10u c3Vic3RyaW5nKDAsMjU1KSk7cmV0dXJuIGJ9OwpmdW5jdGlvbiBVYygpe3ZhciBh PU1iLm1hdGNoKC9bXGRdKy9nKTtpZighYXx8IWEubGVuZ3RoKXJldHVybiIiO2Eu bGVuZ3RoPTM7cmV0dXJuIGFbMF0rIi4iK2FbMV0rIiByIithWzJdfVRjLnByb3Rv dHlwZS5jPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTAsZD1hLmxlbmd0aDtj PGQ7KytjKWIucHVzaChhW2NdLnN1YnN0cmluZygwLDI1NSkpO3JldHVybiBifTt2 YXIgWGM9IUt8fDk8PU51bWJlcihDYyksWWM9SyYmIUwoIjkiKTshdGN8fEwoIjUy OCIpO3NjJiZMKCIxLjliIil8fEsmJkwoIjgiKXx8cWMmJkwoIjkuNSIpfHx0YyYm TCgiNTI4Iik7c2MmJiFMKCI4Iil8fEsmJkwoIjkiKTtmdW5jdGlvbiBaYyhhLGIp e0VhLmNhbGwodGhpcyxhP2EudHlwZToiIik7dGhpcy5hPXRoaXMudGFyZ2V0PW51 bGw7dGhpcy5rZXlDb2RlPXRoaXMuYnV0dG9uPXRoaXMuc2NyZWVuWT10aGlzLnNj cmVlblg9MDt0aGlzLm1ldGFLZXk9dGhpcy5zaGlmdEtleT10aGlzLmN0cmxLZXk9 ITE7dGhpcy5iPXRoaXMuc3RhdGU9bnVsbDtpZihhKXt0aGlzLnR5cGU9YS50eXBl O3ZhciBjPWEuY2hhbmdlZFRvdWNoZXM/YS5jaGFuZ2VkVG91Y2hlc1swXTpudWxs O3RoaXMudGFyZ2V0PWEudGFyZ2V0fHxhLnNyY0VsZW1lbnQ7dGhpcy5hPWI7dmFy IGQ9YS5yZWxhdGVkVGFyZ2V0O2lmKGQmJnNjKXRyeXtZYShkLm5vZGVOYW1lKX1j YXRjaChlKXt9bnVsbD09PWM/KHRoaXMuc2NyZWVuWD1hLnNjcmVlblh8fDAsdGhp cy5zY3JlZW5ZPWEuc2NyZWVuWXx8MCk6KHRoaXMuc2NyZWVuWD1jLnNjcmVlblh8 fDAsdGhpcy5zY3JlZW5ZPWMuc2NyZWVuWXx8MCk7dGhpcy5idXR0b249YS5idXR0 b247dGhpcy5rZXlDb2RlPQphLmtleUNvZGV8fDA7dGhpcy5jdHJsS2V5PWEuY3Ry bEtleTt0aGlzLnNoaWZ0S2V5PWEuc2hpZnRLZXk7dGhpcy5tZXRhS2V5PWEubWV0 YUtleTt0aGlzLnN0YXRlPWEuc3RhdGU7dGhpcy5iPWE7YS5kZWZhdWx0UHJldmVu dGVkJiZ0aGlzLmMoKX19eChaYyxFYSk7WmMucHJvdG90eXBlLmM9ZnVuY3Rpb24o KXtaYy5kYy5jLmNhbGwodGhpcyk7dmFyIGE9dGhpcy5iO2lmKGEucHJldmVudERl ZmF1bHQpYS5wcmV2ZW50RGVmYXVsdCgpO2Vsc2UgaWYoYS5yZXR1cm5WYWx1ZT0h MSxZYyl0cnl7aWYoYS5jdHJsS2V5fHwxMTI8PWEua2V5Q29kZSYmMTIzPj1hLmtl eUNvZGUpYS5rZXlDb2RlPS0xfWNhdGNoKGIpe319O1pjLnByb3RvdHlwZS5PPWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuYn07dmFyICRjPSJjbG9zdXJlX2xtXyIrKDFF NipNYXRoLnJhbmRvbSgpfDApLGFkPXt9LGJkPTA7CmZ1bmN0aW9uIE0oYSxiLGMs ZCxlKXtpZihxKGIpKWZvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKU0oYSxiW2Zd LGMsZCxlKTtlbHNlIGlmKGM9Y2QoYyksYSYmYVtGYV0pZGQoYSxiLGMsZCxlKTtl bHNle2lmKCFiKXRocm93IEVycm9yKCJJbnZhbGlkIGV2ZW50IHR5cGUiKTt2YXIg Zj0hIWQsaz1lZChhKTtrfHwoYVskY109az1uZXcgeGIoYSkpO2M9eWIoayxiLGMs ZCxlKTtpZighYy5hKXtkPWZkKCk7Yy5hPWQ7ZC5zcmM9YTtkLmxpc3RlbmVyPWM7 aWYoYS5hZGRFdmVudExpc3RlbmVyKWEuYWRkRXZlbnRMaXN0ZW5lcihiLnRvU3Ry aW5nKCksZCxmKTtlbHNlIGlmKGEuYXR0YWNoRXZlbnQpYS5hdHRhY2hFdmVudChn ZChiLnRvU3RyaW5nKCkpLGQpO2Vsc2UgdGhyb3cgRXJyb3IoImFkZEV2ZW50TGlz dGVuZXIgYW5kIGF0dGFjaEV2ZW50IGFyZSB1bmF2YWlsYWJsZS4iKTtiZCsrfX19 CmZ1bmN0aW9uIGZkKCl7dmFyIGE9aGQsYj1YYz9mdW5jdGlvbihjKXtyZXR1cm4g YS5jYWxsKGIuc3JjLGIubGlzdGVuZXIsYyl9OmZ1bmN0aW9uKGMpe2M9YS5jYWxs KGIuc3JjLGIubGlzdGVuZXIsYyk7aWYoIWMpcmV0dXJuIGN9O3JldHVybiBifWZ1 bmN0aW9uIGlkKGEsYixjLGQsZSl7aWYocShiKSlmb3IodmFyIGY9MDtmPGIubGVu Z3RoO2YrKylpZChhLGJbZl0sYyxkLGUpO2Vsc2UoYz1jZChjKSxhJiZhW0ZhXSk/ YS5rYS5yZW1vdmUoU3RyaW5nKGIpLGMsZCxlKTphJiYoYT1lZChhKSkmJihiPWEu QVtiLnRvU3RyaW5nKCldLGE9LTEsYiYmKGE9emIoYixjLCEhZCxlKSksKGM9LTE8 YT9iW2FdOm51bGwpJiZqZChjKSl9CmZ1bmN0aW9uIGpkKGEpe2lmKCJudW1iZXIi IT10eXBlb2YgYSYmYSYmIWEuYWEpe3ZhciBiPWEuc3JjO2lmKGImJmJbRmFdKUFi KGIua2EsYSk7ZWxzZXt2YXIgYz1hLnR5cGUsZD1hLmE7Yi5yZW1vdmVFdmVudExp c3RlbmVyP2IucmVtb3ZlRXZlbnRMaXN0ZW5lcihjLGQsYS5YKTpiLmRldGFjaEV2 ZW50JiZiLmRldGFjaEV2ZW50KGdkKGMpLGQpO2JkLS07KGM9ZWQoYikpPyhBYihj LGEpLDA9PWMuYSYmKGMuc3JjPW51bGwsYlskY109bnVsbCkpOklhKGEpfX19ZnVu Y3Rpb24gZ2QoYSl7cmV0dXJuIGEgaW4gYWQ/YWRbYV06YWRbYV09Im9uIithfWZ1 bmN0aW9uIGtkKGEsYixjLGQpe3ZhciBlPSEwO2lmKGE9ZWQoYSkpaWYoYj1hLkFb Yi50b1N0cmluZygpXSlmb3IoYj1iLmNvbmNhdCgpLGE9MDthPGIubGVuZ3RoO2Er Kyl7dmFyIGY9YlthXTtmJiZmLlg9PWMmJiFmLmFhJiYoZj1sZChmLGQpLGU9ZSYm ITEhPT1mKX1yZXR1cm4gZX0KZnVuY3Rpb24gbGQoYSxiKXt2YXIgYz1hLmxpc3Rl bmVyLGQ9YS52YXx8YS5zcmM7YS5yYSYmamQoYSk7cmV0dXJuIGMuY2FsbChkLGIp fQpmdW5jdGlvbiBoZChhLGIpe2lmKGEuYWEpcmV0dXJuITA7aWYoIVhjKXt2YXIg YztpZighKGM9YikpYTp7Yz1bIndpbmRvdyIsImV2ZW50Il07Zm9yKHZhciBkPWgs ZTtlPWMuc2hpZnQoKTspaWYobnVsbCE9ZFtlXSlkPWRbZV07ZWxzZXtjPW51bGw7 YnJlYWsgYX1jPWR9ZT1jO2M9bmV3IFpjKGUsdGhpcyk7ZD0hMDtpZighKDA+ZS5r ZXlDb2RlfHx2b2lkIDAhPWUucmV0dXJuVmFsdWUpKXthOnt2YXIgZj0hMTtpZigw PT1lLmtleUNvZGUpdHJ5e2Uua2V5Q29kZT0tMTticmVhayBhfWNhdGNoKHIpe2Y9 ITB9aWYoZnx8dm9pZCAwPT1lLnJldHVyblZhbHVlKWUucmV0dXJuVmFsdWU9ITB9 ZT1bXTtmb3IoZj1jLmE7ZjtmPWYucGFyZW50Tm9kZSllLnB1c2goZik7Zm9yKHZh ciBmPWEudHlwZSxrPWUubGVuZ3RoLTE7MDw9aztrLS0pe2MuYT1lW2tdO3ZhciBt PWtkKGVba10sZiwhMCxjKSxkPWQmJm19Zm9yKGs9MDtrPGUubGVuZ3RoO2srKylj LmE9ZVtrXSxtPWtkKGVba10sZiwhMSwKYyksZD1kJiZtfXJldHVybiBkfXJldHVy biBsZChhLG5ldyBaYyhiLHRoaXMpKX1mdW5jdGlvbiBlZChhKXthPWFbJGNdO3Jl dHVybiBhIGluc3RhbmNlb2YgeGI/YTpudWxsfXZhciBtZD0iX19jbG9zdXJlX2V2 ZW50c19mbl8iKygxRTkqTWF0aC5yYW5kb20oKT4+PjApO2Z1bmN0aW9uIGNkKGEp e2lmKHUoYSkpcmV0dXJuIGE7YVttZF18fChhW21kXT1mdW5jdGlvbihiKXtyZXR1 cm4gYS5oYW5kbGVFdmVudChiKX0pO3JldHVybiBhW21kXX07eS5jPXt9O3kuYy5n Yz17bWM6InNjcm9sbCJ9O3kuYy5vPTA7eS5jLlNhPSExO3kuYy5xYT1bXTt5LmMu RmE9MzAwO3kuYy5nYT00ODt5LmMubmM9ZnVuY3Rpb24oYSl7aWYoIWguYWRkRXZl bnRMaXN0ZW5lcilyZXR1cm4hMTswPT09eS5jLnFhLmxlbmd0aCYmeS5jLkhhKCk7 eS5jLnFhLnB1c2goYSk7cmV0dXJuITB9Owp5LmMuSGE9ZnVuY3Rpb24oKXt2YXIg YT12b2lkIDAsYj17fSxjPXtYOiEwLGFjOiEwfTtoLmRvY3VtZW50LmFkZEV2ZW50 TGlzdGVuZXIoInRvdWNoc3RhcnQiLGZ1bmN0aW9uKGMpezE9PT1jLnRvdWNoZXMu bGVuZ3RoJiYoYT13KCksYj1jLmNoYW5nZWRUb3VjaGVzLml0ZW0oMCkpfSx5LmMu U2E/YzohMCk7aC5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIs ZnVuY3Rpb24oYyl7aWYoMSE9PWMuY2hhbmdlZFRvdWNoZXMubGVuZ3RoKWI9e307 ZWxzZXt2YXIgZT13KCksZj1jLmNoYW5nZWRUb3VjaGVzLml0ZW0oMCk7aWYoZi5p ZGVudGlmaWVyIT09Yi5pZGVudGlmaWVyKWI9e307ZWxzZSBpZihlLWE+PXkuYy5G YSliPXt9O2Vsc2V7dmFyIGU9Yi5yYWRpdXNYfHx5LmMuZ2Esaz1iLnJhZGl1c1l8 fHkuYy5nYTtpZihNYXRoLmFicyhmLnBhZ2VYLWIucGFnZVgpPmV8fE1hdGguYWJz KGYucGFnZVktYi5wYWdlWSk+a3x8TWF0aC5hYnMoZi5zY3JlZW5YLWIuc2NyZWVu WCk+CmV8fE1hdGguYWJzKGYuc2NyZWVuWS1iLnNjcmVlblkpPmspYj17fTtlbHNl e2Y9MDtmb3IoZT15LmMucWEubGVuZ3RoO2Y8ZTsrK2YpeS5jLnFhW2ZdKGMseS5j Lm8rKyk7Yj17fX19fX0seS5jLlNhP2M6ITApfTt0cnl7cWE9T2JqZWN0LmRlZmlu ZVByb3BlcnR5JiZPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtn ZXQ6ZnVuY3Rpb24oKXt5LmMuU2E9ITB9fSksaC5hZGRFdmVudExpc3RlbmVyJiZo LmFkZEV2ZW50TGlzdGVuZXIoInRlc3RQYXNzaXZlRXZlbnRzIixudWxsLHFhKX1j YXRjaChhKXt9O3ZhciBOPXtsOnt9fTtOLmwua2V5ZG93bj12b2lkIDA7Ti5hZGRM aXN0ZW5lcj1mdW5jdGlvbihhLGIpe3N3aXRjaChhKXtjYXNlICJrZXlkb3duIjpO LkNiKCk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1OLmxbYV09Yn07Ti5DYj1m dW5jdGlvbigpe00oaC5kb2N1bWVudCwia2V5ZG93biIsTi5QYix6KCkpfTtOLlBi PWZ1bmN0aW9uKGEpe04ubC5rZXlkb3duKGEpfTt2YXIgTz17bDp7fX07Ty5sLmNs aWNrPXZvaWQgMDtPLmwubW91c2Vkb3duPXZvaWQgMDtPLmwudGFwPXZvaWQgMDtP LmwudG91Y2hzdGFydD12b2lkIDA7Ty5sLnRvdWNoZW5kPXZvaWQgMDtPLlU9e307 Ty5VLm1vdXNlZG93bj1uZXcgQTtPLlUuY2xpY2s9bmV3IEE7Ty5VLnRhcD1uZXcg QTtPLkZhPTMwMDtPLmdhPTQ4O08uYWRkTGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXtz d2l0Y2goYSl7Y2FzZSAiY2xpY2siOk8uQmIoKTticmVhaztjYXNlICJ0YXAiOk8u SGEoKTticmVhaztjYXNlICJtb3VzZWRvd24iOk8uRGIoKTticmVhaztjYXNlICJ0 b3VjaHN0YXJ0IjpPLkdiKCk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1PLmxb YV09Yn07Ty5CYj1mdW5jdGlvbigpe00oaC5kb2N1bWVudCwiY2xpY2siLE8uS2Is eigpKX07Ty5EYj1mdW5jdGlvbigpe00oaC5kb2N1bWVudCwibW91c2Vkb3duIixP LlFiLHooKSl9OwpPLkdiPWZ1bmN0aW9uKCl7TShoLmRvY3VtZW50LCJ0b3VjaHN0 YXJ0IixPLlRiLHooKSl9OwpPLkhhPWZ1bmN0aW9uKCl7aWYoIWguYWRkRXZlbnRM aXN0ZW5lcilyZXR1cm4hMTt2YXIgYT12b2lkIDAsYj17fTtoLmRvY3VtZW50LmFk ZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLGZ1bmN0aW9uKGMpezE9PT1jLnRv dWNoZXMubGVuZ3RoJiYoYT13KCksYj1jLmNoYW5nZWRUb3VjaGVzLml0ZW0oMCkp fSx6KCkpO2guZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLGZ1 bmN0aW9uKGMpe2lmKDEhPT1jLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCliPXt9O2Vs c2V7dmFyIGQ9dygpLGU9Yy5jaGFuZ2VkVG91Y2hlcy5pdGVtKDApO2lmKGUuaWRl bnRpZmllciE9PWIuaWRlbnRpZmllciliPXt9O2Vsc2UgaWYoZC1hPj1PLkZhKWI9 e307ZWxzZXt2YXIgZD1iLnJhZGl1c1h8fE8uZ2EsZj1iLnJhZGl1c1l8fE8uZ2E7 TWF0aC5hYnMoZS5wYWdlWC1iLnBhZ2VYKT5kfHxNYXRoLmFicyhlLnBhZ2VZLWIu cGFnZVkpPmZ8fE1hdGguYWJzKGUuc2NyZWVuWC1iLnNjcmVlblgpPgpkfHxNYXRo LmFicyhlLnNjcmVlblktYi5zY3JlZW5ZKT5mP2I9e306KGMuZ2V0QnJvd3NlckV2 ZW50PWMuTyxPLkphKGMpLGI9e30pfX19LHooKSl9O08uS2I9ZnVuY3Rpb24oYSl7 YS5nZXRCcm93c2VyRXZlbnQ9YS5PO08ubC5jbGljayhhKX07Ty5RYj1mdW5jdGlv bihhKXtpZighTy5nYigidGFwIixhKSl7dmFyIGI9Ty5VLm1vdXNlZG93bjtiLmVu cXVldWUoe3RhcmdldDphLnRhcmdldCxuYjpoLnNldFRpbWVvdXQoZnVuY3Rpb24o KXtiLmlhKCl9LDFFMyl9KTthLmdldEJyb3dzZXJFdmVudD1hLk87Ty5sLm1vdXNl ZG93bihhKX19O08uVGI9ZnVuY3Rpb24oYSl7YS5nZXRCcm93c2VyRXZlbnQ9YS5P O08ubC50b3VjaHN0YXJ0KGEpfTsKTy5KYT1mdW5jdGlvbihhKXtpZighTy5nYigi bW91c2Vkb3duIixhKSl7dmFyIGI9Ty5VLnRhcDtiLmVucXVldWUoe3RhcmdldDph LnRhcmdldCxuYjpoLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLmlhKCl9LDFFMyl9 KTthLnJjPSEwO2EuZ2V0QnJvd3NlckV2ZW50PWEuTztPLmwudGFwKGEpfX07Ty5n Yj1mdW5jdGlvbihhLGIpe3ZhciBjPU8uVVthXTtpZihjLkMoKXx8Yy5MKCkudGFy Z2V0IT09Yi50YXJnZXQpcmV0dXJuITE7aC5jbGVhclRpbWVvdXQoYy5MKCkubmIp O2MuaWEoKTtyZXR1cm4hMH07dmFyIFA9e2w6e319O1AubC5zY3JvbGw9dm9pZCAw O1AuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAic2Ny b2xsIjpQLkZiKCk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1QLmxbYV09Yn07 UC5GYj1mdW5jdGlvbigpe00oaC5kb2N1bWVudCwic2Nyb2xsIixQLlNiLHooKSl9 O1AuU2I9ZnVuY3Rpb24oYSl7UC5sLnNjcm9sbChhKX07dmFyIFE9e2w6e319O1Eu bC5iZWZvcmV1bmxvYWQ9dm9pZCAwO1EubC5yZXNpemU9dm9pZCAwO1EuYWRkTGlz dGVuZXI9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAiYmVmb3JldW5sb2Fk IjpRLkhiKCk7YnJlYWs7Y2FzZSAicmVzaXplIjpRLkViKCk7YnJlYWs7ZGVmYXVs dDpyZXR1cm4gbnVsbH1RLmxbYV09Yn07US5IYj1mdW5jdGlvbigpe00oaCwiYmVm b3JldW5sb2FkIixRLkthLHooKSl9O1EuRWI9ZnVuY3Rpb24oKXtNKGgsInJlc2l6 ZSIsUS5JYSx6KCkpfTtRLkthPWZ1bmN0aW9uKGEpe1EubC5iZWZvcmV1bmxvYWQo YSl9O1EuSWE9ZnVuY3Rpb24oYSl7US5sLnJlc2l6ZShhKX07ZnVuY3Rpb24gUigp e3RoaXMuYz1uZXcgbmM7dGhpcy5mPXt9fXAoUik7Ui5wcm90b3R5cGUuYT1mdW5j dGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5jLGU9ZC5iW2FdO2V8fChlPWQuYlthXT1b XSk7dmFyIGY9ZC5oO2QuYVtmXT1hO2QuYVtmKzFdPWI7ZC5hW2YrMl09YztkLmg9 ZiszO2UucHVzaChmKTtyZXR1cm4gZn07Ui5wcm90b3R5cGUuZz1mdW5jdGlvbihh LGIsYyl7cmV0dXJuIG9jKHRoaXMuYyxhLGMpfTtSLnByb3RvdHlwZS5iPWZ1bmN0 aW9uKGEsYil7cmV0dXJuIHRoaXMuYy5tLmFwcGx5KHRoaXMuYyxhcmd1bWVudHMp fTtSLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbihhLGIsYyl7YT15Lmou aXNBcnJheShhKT9hOlthXTtmb3IodmFyIGQ9MCxlPWEubGVuZ3RoO2Q8ZTsrK2Qp bmQodGhpcyxhW2RdKS5BLnB1c2goe1c6Yixjb250ZXh0OmN9KX07CmZ1bmN0aW9u IG5kKGEsYil7dmFyIGM9YS5mW2JdO2N8fChjPWEuZltiXT17QTpbXSxSYTp2b2lk IDB9KTtjLlJhfHwoYy5SYT1vZChiKSxjLlJhLmFkZExpc3RlbmVyKGIscGQoYSxi KSkpO3JldHVybiBjfWZ1bmN0aW9uIG9kKGEpe3N3aXRjaChhKXtjYXNlICJjbGlj ayI6Y2FzZSAibW91c2Vkb3duIjpjYXNlICJ0YXAiOmNhc2UgInRvdWNoc3RhcnQi OnJldHVybiBPO2Nhc2UgImJlZm9yZXVubG9hZCI6Y2FzZSAicmVzaXplIjpyZXR1 cm4gUTtjYXNlICJrZXlkb3duIjpyZXR1cm4gTjtjYXNlICJzY3JvbGwiOnJldHVy biBQO2RlZmF1bHQ6cmV0dXJuIG51bGx9fQpmdW5jdGlvbiBwZChhLGIpe3JldHVy biB2KGZ1bmN0aW9uKCl7Zm9yKHZhciBhPW5kKHRoaXMsYikuQSxkPUFycmF5KGFy Z3VtZW50cy5sZW5ndGgpLGU9MCxmPWFyZ3VtZW50cy5sZW5ndGg7ZTxmO2UrKylk W2VdPWFyZ3VtZW50c1tlXTtlPTA7Zm9yKGY9YS5sZW5ndGg7ZTxmOysrZSlhW2Vd LlcuYXBwbHkoYVtlXS5jb250ZXh0LGQpfSxhKX12YXIgUz1SLnByb3RvdHlwZTtT LnN1YnNjcmliZT1TLmE7Uy51bnN1YnNjcmliZT1TLmc7Uy5wdWJsaXNoPVMuYjtT LmFkZExpc3RlbmVyPVMuYWRkTGlzdGVuZXI7ZnVuY3Rpb24gcWQoKXt0aGlzLmM9 Ui5CKCk7dGhpcy5hPTA7dygpO3RoaXMuYj0hMDtoLnNldFRpbWVvdXQodih0aGlz LmYsdGhpcykscmQodGhpcykpO3ZhciBhPXkudi5YYSh0aGlzLmcsdGhpcyk7dGhp cy5jLmFkZExpc3RlbmVyKHNkLGEsdGhpcyl9dmFyIHRkPVswLDEwLDMwLDYwLDEy MCwxODAsMjQwLDMwMCwzNjAsNDIwLDQ4MCw1NDAsNjAwLDcyMCw4NDAsOTYwLDEw ODAsMTIwMF0sc2Q9WyJjbGljayIsIm1vdXNlZG93biIsImtleWRvd24iLCJzY3Jv bGwiXTtxZC5wcm90b3R5cGUuZz1mdW5jdGlvbigpe3RoaXMuYj0hMH07ZnVuY3Rp b24gcmQoYSl7cmV0dXJuKythLmE+PXRkLmxlbmd0aD8xMkU0OjFFMyoodGRbYS5h XS10ZFthLmEtMV0pfXFkLnByb3RvdHlwZS5mPWZ1bmN0aW9uKCl7dGhpcy5iJiYo dGhpcy5jLmIoInBpbmciKSx0aGlzLmI9ITEpO2guc2V0VGltZW91dCh2KHRoaXMu Zix0aGlzKSxyZCh0aGlzKSl9O2Z1bmN0aW9uIHVkKCl7dGhpcy5hPXRoaXMuYz10 aGlzLmI9dm9pZCAwO3RoaXMuZz0hMTtoLnNldFRpbWVvdXQodih0aGlzLmYsdGhp cyksMCl9dWQucHJvdG90eXBlLmY9ZnVuY3Rpb24oKXt0aGlzLmE9eS5iLk5hKCk7 dGhpcy5iPVFjKHdpbmRvdykuYTt0aGlzLmM9dGhpcy5hLzEwO3ZhciBhPXkuZi53 YSh0aGlzLmEpLGI9eS5mLndhKHRoaXMuYik7YSYmYj8odGhpcy5nPSEwLFIuQigp LmFkZExpc3RlbmVyKCJyZXNpemUiLHkudi5YYSh0aGlzLklhLHRoaXMpLHRoaXMp KTpoLnNldFRpbWVvdXQodih0aGlzLmYsdGhpcyksMUUzKX07dWQucHJvdG90eXBl LklhPWZ1bmN0aW9uKCl7dGhpcy5iPVFjKHdpbmRvdykuYX07ZnVuY3Rpb24gdmQo KXt0aGlzLmM9dGhpcy5hPXZvaWQgMDt0aGlzLmI9dGhpcy5mPSIiO3RoaXMuZz12 b2lkIDA7dmFyIGE7YTppZigidmlzaWJpbGl0eVN0YXRlImluIGRvY3VtZW50KXRo aXMuZj0idmlzaWJpbGl0eWNoYW5nZSIsdGhpcy5iPSJoaWRkZW4iLGE9ITA7ZWxz ZXthPXZvaWQgMDtmb3IodmFyIGI9MDtiPHdkOysrYilpZihhPXdkW2JdLGErIlZp c2liaWxpdHlTdGF0ZSJpbiBkb2N1bWVudCl7dGhpcy5mPWErInZpc2liaWxpdHlj aGFuZ2UiO3RoaXMuYj1hKyJIaWRkZW4iO2E9ITA7YnJlYWsgYX1hPSExfWlmKHRo aXMuYz1hKXRoaXMuZz1SLkIoKSx0aGlzLmE9IWguZG9jdW1lbnRbdGhpcy5iXSxN KGguZG9jdW1lbnQsdGhpcy5mLHRoaXMuaCwhMSx0aGlzKX12YXIgd2Q9WyJ3ZWJr aXQiLCJtb3oiLCJtcyIsIm8iXTt2ZC5wcm90b3R5cGUuaD1mdW5jdGlvbigpe3Ro aXMuYT0haC5kb2N1bWVudFt0aGlzLmJdO3RoaXMuZy5iKCJ2aXNpYmlsaXR5Iil9 O2Z1bmN0aW9uIHhkKCl7QmEuY2FsbCh0aGlzKTt0aGlzLmthPW5ldyB4Yih0aGlz KTt0aGlzLkRhPXRoaXN9eCh4ZCxCYSk7eGQucHJvdG90eXBlW0ZhXT0hMDt4ZC5w cm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhLGIsYyxkKXtp ZCh0aGlzLGEsYixjLGQpfTtmdW5jdGlvbiBUKGEsYil7dmFyIGM9YS5EYSxkPWIs ZT1kLnR5cGV8fGQ7aWYodChkKSlkPW5ldyBFYShkLGMpO2Vsc2UgaWYoZCBpbnN0 YW5jZW9mIEVhKWQudGFyZ2V0PWQudGFyZ2V0fHxjO2Vsc2V7dmFyIGY9ZCxkPW5l dyBFYShlLGMpO1ZhKGQsZil9Yz1kLmE9Yzt5ZChjLGUsITAsZCk7eWQoYyxlLCEx LGQpfWZ1bmN0aW9uIGRkKGEsYixjLGQsZSl7eWIoYS5rYSxTdHJpbmcoYiksYyxk LGUpfQpmdW5jdGlvbiB5ZChhLGIsYyxkKXtpZihiPWEua2EuQVtTdHJpbmcoYild KXtiPWIuY29uY2F0KCk7Zm9yKHZhciBlPSEwLGY9MDtmPGIubGVuZ3RoOysrZil7 dmFyIGs9YltmXTtpZihrJiYhay5hYSYmay5YPT1jKXt2YXIgbT1rLmxpc3RlbmVy LHI9ay52YXx8ay5zcmM7ay5yYSYmQWIoYS5rYSxrKTtlPSExIT09bS5jYWxsKHIs ZCkmJmV9fX19O2Z1bmN0aW9uIHpkKCl7dGhpcy5iPVIuQigpO3RoaXMuYT12b2lk IDA7dGhpcy5jPURjLkIoKTtBZCh0aGlzKX12YXIgQmQ9L15qYXZhc2NyaXB0XDov aSxDZD0vXl8oc2VsZnxwYXJlbnR8dG9wKSQvaTtmdW5jdGlvbiBBZChhKXthLmIu YWRkTGlzdGVuZXIoIm1vdXNlZG93biIsZnVuY3Rpb24oYSl7dmFyIGM9YS5PKCku YnV0dG9uOzAhPT1jJiYxIT09Y3x8RGQodGhpcyxhKX0sYSk7YS5iLmFkZExpc3Rl bmVyKCJrZXlkb3duIixmdW5jdGlvbihhKXsxMz09PWEuTygpLmtleUNvZGUmJkRk KHRoaXMsYSl9LGEpfQpmdW5jdGlvbiBEZChhLGIpe3ZhciBjO2ZvcihjPWIudGFy Z2V0O2MmJighbChjLnRhZ05hbWUpfHwiYSIhPT1jLnRhZ05hbWUudG9Mb3dlckNh c2UoKXx8IWMuaHJlZik7KWM9Yy5wYXJlbnROb2RlO3ZhciBkPW5ldyBDO2lmKGMm JmMuaHJlZil7YS5hPWMuaHJlZjt2YXIgZT1hLmE7LTEhPT1lLmluZGV4T2YoaC5s b2NhdGlvbi5ob3N0KXx8ZS5tYXRjaChCZCl8fChjLnRhcmdldCYmYy50YXJnZXQu bWF0Y2goQ2QpLGQuSigiZXQiLCJleHRsbiIpLGQuc2V0KCJleHRsbiIsYS5hKSx5 LmguaW5jbHVkZXMoYS5jLmEsYS5hKSYmZC5zZXQoInVtX2xvZyIsImNsIiksYS5i LmIoImV4dExpbmsiLGQpKX19O2Z1bmN0aW9uIFUoYSxiKXthJiZhLmxvZyhKYyxi LHZvaWQgMCl9O2Z1bmN0aW9uIEVkKGEsYixjKXtpZih1KGEpKWMmJihhPXYoYSxj KSk7ZWxzZSBpZihhJiYiZnVuY3Rpb24iPT10eXBlb2YgYS5oYW5kbGVFdmVudClh PXYoYS5oYW5kbGVFdmVudCxhKTtlbHNlIHRocm93IEVycm9yKCJJbnZhbGlkIGxp c3RlbmVyIGFyZ3VtZW50Iik7cmV0dXJuIDIxNDc0ODM2NDc8TnVtYmVyKGIpPy0x Omguc2V0VGltZW91dChhLGJ8fDApfTtmdW5jdGlvbiBWKGEpe3hkLmNhbGwodGhp cyk7dGhpcy5FYT1uZXcgRmI7dGhpcy5HPWF8fG51bGw7dGhpcy5iPSExO3RoaXMu dj10aGlzLmE9bnVsbDt0aGlzLmc9dGhpcy5tYT10aGlzLmo9IiI7dGhpcy5mPXRo aXMuZGE9dGhpcy5oPXRoaXMuY2E9ITE7dGhpcy5jPTA7dGhpcy5tPW51bGw7dGhp cy5vYT1GZDt0aGlzLnM9dGhpcy5wYT0hMX14KFYseGQpO3ZhciBGZD0iIixHZD1W LnByb3RvdHlwZSxIZD1OYygiZ29vZy5uZXQuWGhySW8iKTtHZC5GPUhkO3ZhciBJ ZD0vXmh0dHBzPyQvaSxKZD1bIlBPU1QiLCJQVVQiXTsKVi5wcm90b3R5cGUuc2Vu ZD1mdW5jdGlvbihhLGIsYyxkKXtpZih0aGlzLmEpdGhyb3cgRXJyb3IoIltnb29n Lm5ldC5YaHJJb10gT2JqZWN0IGlzIGFjdGl2ZSB3aXRoIGFub3RoZXIgcmVxdWVz dD0iK3RoaXMuaisiOyBuZXdVcmk9IithKTtiPWI/Yi50b1VwcGVyQ2FzZSgpOiJH RVQiO3RoaXMuaj1hO3RoaXMuZz0iIjt0aGlzLm1hPWI7dGhpcy5jYT0hMTt0aGlz LmI9ITA7dGhpcy5hPXRoaXMuRz9FYih0aGlzLkcpOkViKENiKTt0aGlzLnY9dGhp cy5HP2RiKHRoaXMuRyk6ZGIoQ2IpO3RoaXMuYS5vbnJlYWR5c3RhdGVjaGFuZ2U9 dih0aGlzLmVhLHRoaXMpO3RyeXtVKHRoaXMuRixXKHRoaXMsIk9wZW5pbmcgWGhy IikpLHRoaXMuZGE9ITAsdGhpcy5hLm9wZW4oYixTdHJpbmcoYSksITApLHRoaXMu ZGE9ITF9Y2F0Y2goZil7VSh0aGlzLkYsVyh0aGlzLCJFcnJvciBvcGVuaW5nIFho cjogIitmLm1lc3NhZ2UpKTtLZCh0aGlzLGYpO3JldHVybn1hPWN8fCIiO3ZhciBl PXRoaXMuRWEuY2xvbmUoKTsKZCYmSWIoZCxmdW5jdGlvbihhLGIpe2Uuc2V0KGIs YSl9KTtkPW9iKGUuUigpLExkKTtjPWguRm9ybURhdGEmJmEgaW5zdGFuY2VvZiBo LkZvcm1EYXRhOyEoMDw9RShKZCxiKSl8fGR8fGN8fGUuc2V0KCJDb250ZW50LVR5 cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11 dGYtOCIpO2UuZm9yRWFjaChmdW5jdGlvbihhLGIpe3RoaXMuYS5zZXRSZXF1ZXN0 SGVhZGVyKGIsYSl9LHRoaXMpO3RoaXMub2EmJih0aGlzLmEucmVzcG9uc2VUeXBl PXRoaXMub2EpO1RhKHRoaXMuYSkmJih0aGlzLmEud2l0aENyZWRlbnRpYWxzPXRo aXMucGEpO3RyeXtNZCh0aGlzKSwwPHRoaXMuYyYmKHRoaXMucz1OZCh0aGlzLmEp LFUodGhpcy5GLFcodGhpcywiV2lsbCBhYm9ydCBhZnRlciAiK3RoaXMuYysibXMg aWYgaW5jb21wbGV0ZSwgeGhyMiAiK3RoaXMucykpLHRoaXMucz8odGhpcy5hLnRp bWVvdXQ9dGhpcy5jLHRoaXMuYS5vbnRpbWVvdXQ9dih0aGlzLkFhLAp0aGlzKSk6 dGhpcy5tPUVkKHRoaXMuQWEsdGhpcy5jLHRoaXMpKSxVKHRoaXMuRixXKHRoaXMs IlNlbmRpbmcgcmVxdWVzdCIpKSx0aGlzLmg9ITAsdGhpcy5hLnNlbmQoYSksdGhp cy5oPSExfWNhdGNoKGYpe1UodGhpcy5GLFcodGhpcywiU2VuZCBlcnJvcjogIitm Lm1lc3NhZ2UpKSxLZCh0aGlzLGYpfX07ZnVuY3Rpb24gTmQoYSl7cmV0dXJuIEsm JkwoOSkmJiJudW1iZXIiPT10eXBlb2YgYS50aW1lb3V0JiZsKGEub250aW1lb3V0 KX1mdW5jdGlvbiBMZChhKXtyZXR1cm4iY29udGVudC10eXBlIj09YS50b0xvd2Vy Q2FzZSgpfQpWLnByb3RvdHlwZS5BYT1mdW5jdGlvbigpeyJ1bmRlZmluZWQiIT10 eXBlb2YgYWEmJnRoaXMuYSYmKHRoaXMuZz0iVGltZWQgb3V0IGFmdGVyICIrdGhp cy5jKyJtcywgYWJvcnRpbmciLFUodGhpcy5GLFcodGhpcyx0aGlzLmcpKSxUKHRo aXMsInRpbWVvdXQiKSx0aGlzLmEmJnRoaXMuYiYmKFUodGhpcy5GLFcodGhpcywi QWJvcnRpbmciKSksdGhpcy5iPSExLHRoaXMuZj0hMCx0aGlzLmEuYWJvcnQoKSx0 aGlzLmY9ITEsVCh0aGlzLCJjb21wbGV0ZSIpLFQodGhpcywiYWJvcnQiKSxPZCh0 aGlzKSkpfTtmdW5jdGlvbiBLZChhLGIpe2EuYj0hMTthLmEmJihhLmY9ITAsYS5h LmFib3J0KCksYS5mPSExKTthLmc9YjtQZChhKTtPZChhKX1mdW5jdGlvbiBQZChh KXthLmNhfHwoYS5jYT0hMCxUKGEsImNvbXBsZXRlIiksVChhLCJlcnJvciIpKX1W LnByb3RvdHlwZS5lYT1mdW5jdGlvbigpe3RoaXMuSXx8KHRoaXMuZGF8fHRoaXMu aHx8dGhpcy5mP1FkKHRoaXMpOnRoaXMuYmIoKSl9OwpWLnByb3RvdHlwZS5iYj1m dW5jdGlvbigpe1FkKHRoaXMpfTsKZnVuY3Rpb24gUWQoYSl7aWYoYS5iJiYidW5k ZWZpbmVkIiE9dHlwZW9mIGFhKWlmKGEudlsxXSYmND09UmQoYSkmJjI9PVNkKGEp KVUoYS5GLFcoYSwiTG9jYWwgcmVxdWVzdCBlcnJvciBkZXRlY3RlZCBhbmQgaWdu b3JlZCIpKTtlbHNlIGlmKGEuaCYmND09UmQoYSkpRWQoYS5lYSwwLGEpO2Vsc2Ug aWYoVChhLCJyZWFkeXN0YXRlY2hhbmdlIiksND09UmQoYSkpe1UoYS5GLFcoYSwi UmVxdWVzdCBjb21wbGV0ZSIpKTthLmI9ITE7dHJ5e3ZhciBiPVNkKGEpLGM7YTpz d2l0Y2goYil7Y2FzZSAyMDA6Y2FzZSAyMDE6Y2FzZSAyMDI6Y2FzZSAyMDQ6Y2Fz ZSAyMDY6Y2FzZSAzMDQ6Y2FzZSAxMjIzOmM9ITA7YnJlYWsgYTtkZWZhdWx0OmM9 ITF9dmFyIGQ7aWYoIShkPWMpKXt2YXIgZTtpZihlPTA9PT1iKXt2YXIgZj1TdHJp bmcoYS5qKS5tYXRjaChKYilbMV18fG51bGw7aWYoIWYmJmguc2VsZiYmaC5zZWxm LmxvY2F0aW9uKXZhciBrPWguc2VsZi5sb2NhdGlvbi5wcm90b2NvbCxmPQprLnN1 YnN0cigwLGsubGVuZ3RoLTEpO2U9IUlkLnRlc3QoZj9mLnRvTG93ZXJDYXNlKCk6 IiIpfWQ9ZX1pZihkKVQoYSwiY29tcGxldGUiKSxUKGEsInN1Y2Nlc3MiKTtlbHNl e3ZhciBtO3RyeXttPTI8UmQoYSk/YS5hLnN0YXR1c1RleHQ6IiJ9Y2F0Y2gocil7 VShhLkYsIkNhbiBub3QgZ2V0IHN0YXR1czogIityLm1lc3NhZ2UpLG09IiJ9YS5n PW0rIiBbIitTZChhKSsiXSI7UGQoYSl9fWZpbmFsbHl7T2QoYSl9fX1mdW5jdGlv biBPZChhKXtpZihhLmEpe01kKGEpO3ZhciBiPWEuYSxjPWEudlswXT9uOm51bGw7 YS5hPW51bGw7YS52PW51bGw7VChhLCJyZWFkeSIpO3RyeXtiLm9ucmVhZHlzdGF0 ZWNoYW5nZT1jfWNhdGNoKGQpeyhhPWEuRikmJmEubG9nKEhjLCJQcm9ibGVtIGVu Y291bnRlcmVkIHJlc2V0dGluZyBvbnJlYWR5c3RhdGVjaGFuZ2U6ICIrZC5tZXNz YWdlLHZvaWQgMCl9fX0KZnVuY3Rpb24gTWQoYSl7YS5hJiZhLnMmJihhLmEub250 aW1lb3V0PW51bGwpOyJudW1iZXIiPT10eXBlb2YgYS5tJiYoaC5jbGVhclRpbWVv dXQoYS5tKSxhLm09bnVsbCl9ZnVuY3Rpb24gUmQoYSl7cmV0dXJuIGEuYT9hLmEu cmVhZHlTdGF0ZTowfWZ1bmN0aW9uIFNkKGEpe3RyeXtyZXR1cm4gMjxSZChhKT9h LmEuc3RhdHVzOi0xfWNhdGNoKGIpe3JldHVybi0xfX1mdW5jdGlvbiBXKGEsYil7 cmV0dXJuIGIrIiBbIithLm1hKyIgIithLmorIiAiK1NkKGEpKyJdIn07ZnVuY3Rp b24gVGQoKXt0aGlzLmE9dm9pZCAwfVRkLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9u KGEsYixjKXtVZCh0aGlzLGMpO3RoaXMuYS5zZW5kKGEsIlBPU1QiLGIpfTtmdW5j dGlvbiBVZChhLGIpe2EuYT1uZXcgVjthLmEucGE9ITA7YS5hLmM9TWF0aC5tYXgo MCxrYSk7ZGQoYS5hLCJzdWNjZXNzIixmdW5jdGlvbigpe2IuV2EoKX0pO2RkKGEu YSwiZXJyb3IiLGZ1bmN0aW9uKCl7Yi5lcnJvcigpfSl9O2Z1bmN0aW9uIFZkKCl7 dGhpcy5hPW5ldyBqYTt0aGlzLmM9bmV3IFRkO3RoaXMuYj1uZXcgaWF9cChWZCk7 dmFyIGthPTFFMyxXZD0id2l0aENyZWRlbnRpYWxzImluIG5ldyBYTUxIdHRwUmVx dWVzdCxYZD0hIWgubmF2aWdhdG9yLnNlbmRCZWFjb247VmQucHJvdG90eXBlLnNl bmQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXthPWV8fGEudWEoKTtiLmdldCgiZXQiKTtj PT09WWQ/KGRhdGFTdHJpbmc9Yi50b1N0cmluZygpLHRoaXMuYi5zZW5kKGEsYi50 b1N0cmluZygpLGQpKTpjPT09WmQ/dGhpcy5jLnNlbmQoYSxiLnRvU3RyaW5nKCks ZCk6Yz09PSRkJiYoYi5zZXRNZXRhKCJybiIseS5mLnhhKCkpLGErPSI/IitiLnRv U3RyaW5nKCksdGhpcy5hLnNlbmQoYSxkKSl9O2Z1bmN0aW9uIGFlKCl7dGhpcy5h PW5ldyB0Yjt0aGlzLnM9bmV3IFZkO3RoaXMuaD0hMTt0aGlzLmI9MDt0aGlzLmM9 ITE7dGhpcy5mPTB9cChhZSk7dmFyIFlkPSJiZWFjb24iLFpkPSJ4aHIiLCRkPSJp bWFnZSI7YWUucHJvdG90eXBlLmc9ZnVuY3Rpb24oKXtpZih0aGlzLmEuQygpKXRo aXMuaD0hMTtlbHNle3ZhciBhPXRoaXMuYS5MKCksYj1hLnVybDt0aGlzLnMuc2Vu ZChhLmRhdGFbMF1bMF0sYS5kYXRhWzBdWzFdLGEudHlwZSx7V2E6dih0aGlzLm0s dGhpcyksZXJyb3I6dih0aGlzLmosdGhpcyl9LGIpfX07YWUucHJvdG90eXBlLm09 ZnVuY3Rpb24oKXt0aGlzLmM9ITE7dGhpcy5iPXRoaXMuZj0wO3ZhciBhPXRoaXMu YS5MKCk7YS5kYXRhLnNoaWZ0KCk7MD09PWEuZGF0YS5sZW5ndGgmJihhPXRoaXMu YS5pYSgpLGEuVyYmYS5XKCkpO3RoaXMuZygpfTsKYWUucHJvdG90eXBlLmo9ZnVu Y3Rpb24oKXtpZig1PD10aGlzLmYrKyl0aGlzLmM9ITEsdGhpcy5iPXRoaXMuZj0w O2Vsc2V7aWYoIXRoaXMuYyl7dGhpcy5jPSEwO3ZhciBhPXRoaXMuYS5MKCk7YSYm YS5kYXRhJiZhLmRhdGFbMF1bMV0uc2V0KCJyZXRyeSIsMSl9dGhpcy5iKz0yNTA7 aC5zZXRUaW1lb3V0KHYodGhpcy5nLHRoaXMpLHRoaXMuYil9fTtmdW5jdGlvbiBi ZSgpe3RoaXMuYj1SLkIoKTt0aGlzLmc9bmV3IHZkO3RoaXMuaj1uZXcgdWQ7dGhp cy5oPW5ldyB0YSh2KHRoaXMudix0aGlzKSk7dGhpcy5mPSEwO3RoaXMuYz10aGlz LmE9dm9pZCAwO3RoaXMuYi5hKCJ2aXNpYmlsaXR5Iix0aGlzLnMsdGhpcyk7dGhp cy5hPXt0aW1lOjAsYmE6cmIoMTApfTtYZCYmdGhpcy5nLmMmJnRoaXMuZy5hJiZ0 aGlzLmguc3RhcnQoKTtuZXcgcWQ7dmFyIGE9eS52LlhhKHRoaXMubSx0aGlzKTt0 aGlzLmIuYWRkTGlzdGVuZXIoY2UsYSx0aGlzKTtkZSh0aGlzKX12YXIgY2U9WyJj bGljayIsIm1vdXNlZG93biIsImtleWRvd24iLCJzY3JvbGwiXTtiZS5wcm90b3R5 cGUucz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZy5hO2lmKFhkKXt2YXIgYj10aGlz Lmg7YT9iLnN0YXJ0KCk6KGIuYj0hMSx3YShiKSl9fTsKYmUucHJvdG90eXBlLnY9 ZnVuY3Rpb24oKXtpZih0aGlzLmYpe3ZhciBhPXRoaXMuaixiLGM7Yz0oaHx8d2lu ZG93KS5kb2N1bWVudDtiPShjP25ldyBTYyg5PT1jLm5vZGVUeXBlP2M6Yy5vd25l ckRvY3VtZW50fHxjLmRvY3VtZW50KTpEYXx8KERhPW5ldyBTYykpLmE7Yz1iLnNj cm9sbGluZ0VsZW1lbnQ/Yi5zY3JvbGxpbmdFbGVtZW50OnRjfHwiQ1NTMUNvbXBh dCIhPWIuY29tcGF0TW9kZT9iLmJvZHl8fGIuZG9jdW1lbnRFbGVtZW50OmIuZG9j dW1lbnRFbGVtZW50O2I9UmMoYik7dmFyIGQ9KEsmJkwoIjEwIikmJmIucGFnZVlP ZmZzZXQhPWMuc2Nyb2xsVG9wP25ldyBCYihjLnNjcm9sbExlZnQsYy5zY3JvbGxU b3ApOm5ldyBCYihiLnBhZ2VYT2Zmc2V0fHxjLnNjcm9sbExlZnQsYi5wYWdlWU9m ZnNldHx8Yy5zY3JvbGxUb3ApKS5IO2EuYT15LmIuTmEoKTtiPU1hdGguZmxvb3Io ZC9hLmMrLjMpO2M9TWF0aC5mbG9vcigoZCthLmIpL2EuYysuNyktMTthLmE8ZCth LmImJihjPQp5LmYudHJ1bmMoYywxMCktMSk7YT1NYXRoLmNlaWwoYS5hL2EuYykt MTtkPXkuZi5sYihiKSYmeS5mLndhKGMpJiZ5LmYud2EoYSk7aWYodGhpcy5qLmcm JmQpZm9yKGErMT50aGlzLmEuYmEubGVuZ3RoJiYodGhpcy5hLmJhPXFiKHRoaXMu YS5iYSxyYihhLXRoaXMuYS5iYS5sZW5ndGgrMSkpKSxhPWI7YTw9YzsrK2EpdGhp cy5hLmJhW2FdKys7dGhpcy5hLnRpbWUrK319O2JlLnByb3RvdHlwZS5tPWZ1bmN0 aW9uKCl7dGhpcy5mPSEwO2RlKHRoaXMpfTtmdW5jdGlvbiBkZShhKXthLmMmJmgu Y2xlYXJUaW1lb3V0KGEuYyk7YS5jPWguc2V0VGltZW91dCh2KGZ1bmN0aW9uKCl7 dGhpcy5mPSExfSxhKSwzRTQpfTsKZnVuY3Rpb24gZWUoYSxiKXt0aGlzLmY9W107 dGhpcy5JPWJ8fG51bGw7dGhpcy5hPXRoaXMuYj0hMTt0aGlzLmM9dm9pZCAwO3Ro aXMucz10aGlzLnY9dGhpcy5oPSExO3RoaXMuZz0wO3RoaXMuaj1udWxsO3RoaXMu Rz0wfWVlLnByb3RvdHlwZS5tPWZ1bmN0aW9uKGEsYil7dGhpcy5oPSExO2ZlKHRo aXMsYSxiKX07ZnVuY3Rpb24gZmUoYSxiLGMpe2EuYj0hMDthLmM9YzthLmE9IWI7 Z2UoYSl9ZnVuY3Rpb24gaGUoYSl7aWYoYS5iKXtpZighYS5zKXRocm93IG5ldyBp ZTthLnM9ITF9fWVlLnByb3RvdHlwZS5XPWZ1bmN0aW9uKGEpe2hlKHRoaXMpO2Zl KHRoaXMsITAsYSl9O2Z1bmN0aW9uIGplKGEsYixjKXthLmYucHVzaChbYixjLHZv aWQgMF0pO2EuYiYmZ2UoYSl9CmVlLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGEs YixjKXt2YXIgZCxlLGY9bmV3IEgoZnVuY3Rpb24oYSxiKXtkPWE7ZT1ifSk7amUo dGhpcyxkLGZ1bmN0aW9uKGEpe2UoYSl9KTtyZXR1cm4gZi50aGVuKGEsYixjKX07 V2EoZWUpO2Z1bmN0aW9uIGtlKGEpe3JldHVybiBuYihhLmYsZnVuY3Rpb24oYSl7 cmV0dXJuIHUoYVsxXSl9KX0KZnVuY3Rpb24gZ2UoYSl7aWYoYS5nJiZhLmImJmtl KGEpKXt2YXIgYj1hLmcsYz1sZVtiXTtjJiYoaC5jbGVhclRpbWVvdXQoYy5hKSxk ZWxldGUgbGVbYl0pO2EuZz0wfWEuaiYmKGEuai5HLS0sZGVsZXRlIGEuaik7Zm9y KHZhciBiPWEuYyxkPWM9ITE7YS5mLmxlbmd0aCYmIWEuaDspe3ZhciBlPWEuZi5z aGlmdCgpLGY9ZVswXSxrPWVbMV0sZT1lWzJdO2lmKGY9YS5hP2s6Zil0cnl7dmFy IG09Zi5jYWxsKGV8fGEuSSxiKTtsKG0pJiYoYS5hPWEuYSYmKG09PWJ8fG0gaW5z dGFuY2VvZiBFcnJvciksYS5jPWI9bSk7aWYoWGEoYil8fCJmdW5jdGlvbiI9PT10 eXBlb2YgaC5Qcm9taXNlJiZiIGluc3RhbmNlb2YgaC5Qcm9taXNlKWQ9ITAsYS5o PSEwfWNhdGNoKHIpe2I9cixhLmE9ITAsa2UoYSl8fChjPSEwKX19YS5jPWI7ZCYm KG09dihhLm0sYSwhMCksZD12KGEubSxhLCExKSxiIGluc3RhbmNlb2YgZWU/KGpl KGIsbSxkKSxiLnY9ITApOmIudGhlbihtLGQpKTtjJiYoYj1uZXcgbWUoYiksCmxl W2IuYV09YixhLmc9Yi5hKX1mdW5jdGlvbiBpZSgpe0IuY2FsbCh0aGlzKX14KGll LEIpO2llLnByb3RvdHlwZS5tZXNzYWdlPSJEZWZlcnJlZCBoYXMgYWxyZWFkeSBm aXJlZCI7aWUucHJvdG90eXBlLm5hbWU9IkFscmVhZHlDYWxsZWRFcnJvciI7ZnVu Y3Rpb24gbWUoYSl7dGhpcy5hPWguc2V0VGltZW91dCh2KHRoaXMuYyx0aGlzKSww KTt0aGlzLmI9YX1tZS5wcm90b3R5cGUuYz1mdW5jdGlvbigpe2RlbGV0ZSBsZVt0 aGlzLmFdO3Rocm93IHRoaXMuYjt9O3ZhciBsZT17fTtmdW5jdGlvbiBuZShhKXt2 YXIgYj17fSxjPWIuZG9jdW1lbnR8fGRvY3VtZW50LGQ9ZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgiU0NSSVBUIiksZT17dGM6ZCxBYTp2b2lkIDB9LGY9bmV3IGVlKDAs ZSksaz1udWxsLG09bnVsbCE9Yi50aW1lb3V0P2IudGltZW91dDo1RTM7MDxtJiYo az13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe29lKGQsITApO3ZhciBiPW5l dyBwZShxZSwiVGltZW91dCByZWFjaGVkIGZvciBsb2FkaW5nIHNjcmlwdCAiK2Ep O2hlKGYpO2ZlKGYsITEsYil9LG0pLGUuQWE9ayk7ZC5vbmxvYWQ9ZC5vbnJlYWR5 c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtkLnJlYWR5U3RhdGUmJiJsb2FkZWQiIT1k LnJlYWR5U3RhdGUmJiJjb21wbGV0ZSIhPWQucmVhZHlTdGF0ZXx8KG9lKGQsYi5w Y3x8ITEsayksZi5XKG51bGwpKX07ZC5vbmVycm9yPWZ1bmN0aW9uKCl7b2UoZCwh MCxrKTt2YXIgYj1uZXcgcGUocmUsIkVycm9yIHdoaWxlIGxvYWRpbmcgc2NyaXB0 ICIrYSk7CmhlKGYpO2ZlKGYsITEsYil9O2U9Yi5hdHRyaWJ1dGVzfHx7fTtWYShl LHt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQiLGNoYXJzZXQ6IlVURi04IixzcmM6YX0p O09jKGQsZSk7c2UoYykuYXBwZW5kQ2hpbGQoZCl9ZnVuY3Rpb24gc2UoYSl7dmFy IGI9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiSEVBRCIpO3JldHVybiBiJiYwIT1i Lmxlbmd0aD9iWzBdOmEuZG9jdW1lbnRFbGVtZW50fWZ1bmN0aW9uIG9lKGEsYixj KXtudWxsIT1jJiZoLmNsZWFyVGltZW91dChjKTthLm9ubG9hZD1uO2Eub25lcnJv cj1uO2Eub25yZWFkeXN0YXRlY2hhbmdlPW47YiYmd2luZG93LnNldFRpbWVvdXQo ZnVuY3Rpb24oKXthJiZhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5yZW1vdmVD aGlsZChhKX0sMCl9dmFyIHJlPTAscWU9MTtmdW5jdGlvbiBwZShhLGIpe3ZhciBj PSJKc2xvYWRlciBlcnJvciAoY29kZSAjIithKyIpIjtiJiYoYys9IjogIitiKTtC LmNhbGwodGhpcyxjKX14KHBlLEIpO2Z1bmN0aW9uIHRlKCl7dGhpcy5iPXt9O3Ro aXMuYT17fTt0aGlzLmM9Ui5CKCk7Zm9yKHZhciBhIGluIHVlKXRoaXMuYVt1ZVth XS5uYW1lXT1bXTt0aGlzLmMuYSgibW9kdWxlX2luaXQiLHRoaXMuZix0aGlzKX1w KHRlKTt2YXIgdmU9Ii8vc3QudG9wMTAwLnJ1L3RvcDEwMC8xLjUuMC8iLHVlPXt6 Yjp7bmFtZToidXNhYmlsaXR5IixwYXRoOiJ1c2FiaWxpdHkuanMifSx0Yjp7bmFt ZToiZWNvbW1lcmNlIixwYXRoOiJlY29tbWVyY2UuanMifX07ZnVuY3Rpb24gd2Uo YSxiLGMpe2EuYltiLm5hbWVdfHwobmUodmUrYi5wYXRoKSxhLmFbYi5uYW1lXS5w dXNoKGMpKX10ZS5wcm90b3R5cGUuZj1mdW5jdGlvbihhLGIpe2Zvcih0aGlzLmJb YV09Yjt0aGlzLmFbYV0ubGVuZ3RoOyl0aGlzLmFbYV0uc2hpZnQoKShiKX07ZnVu Y3Rpb24geGUoKXt0aGlzLmo9dGhpcy5oPXRoaXMuYj10aGlzLmc9dm9pZCAwO3Ro aXMudj1hZS5CKCk7dGhpcy5zPXRlLkIoKTt0aGlzLmE9W107dGhpcy5mPVtdO3Ro aXMubT0hMTt0aGlzLmM9Ui5CKCk7dGhpcy5nPW5ldyBUYztuZXcgemQ7dGhpcy5o PURjLkIoKTt0aGlzLmMuYSgiZXh0TGluayIsdGhpcy5PYix0aGlzKTt0aGlzLmMu YSgiY2xpY2siLHRoaXMuTGIsdGhpcyk7dGhpcy5jLmEoInRhcCIsdGhpcy5KYSx0 aGlzKTt0aGlzLmMuYSgiZWNvbW1lcmNlIix0aGlzLk1iLHRoaXMpO3RoaXMuaj1u ZXcgYmU7dGhpcy5jLmEoImFjdGl2aXR5Iix0aGlzLkpiLHRoaXMpO3RoaXMuYy5h KCJwaW5nIix0aGlzLlJiLHRoaXMpO3RoaXMuYy5hZGRMaXN0ZW5lcigiYmVmb3Jl dW5sb2FkIix0aGlzLkthLHRoaXMpfXAoeGUpOwpmdW5jdGlvbiB5ZShhLGIpe3Zh ciBjPXplKGEsYik7aWYoIWMuWil7Zm9yKHZhciBkPTAsZT1hLmEubGVuZ3RoO2Q8 ZTsrK2QpYS5hW2RdLmlkPT1jLmlkJiZhLmEuc3BsaWNlKGQsMSk7Yy53JiYwPGMu dy5sZW5ndGgmJndlKGEucyx1ZS56Yix2KGEuVWIsYSkpO2MuSyYmd2UoYS5zLHVl LnRiLHYoYS5OYixhKSk7Yy5ZJiZBZShhLGMuWSk7YS5hLnB1c2goYyk7Yy5afHwo Yy5lbGVtZW50PyhkPXkuYi5QKGMuZWxlbWVudCkpJiYxPT09ZC5ub2RlVHlwZSYm KGQuaW5uZXJIVE1MPWEuVChjLm8sMCkpOmEuTShjLm8pKTtjLm8udS5CYSYmaC5z ZXRUaW1lb3V0KHYoZnVuY3Rpb24oKXt2YXIgYT1jLm8sYjtiPXRoaXMuaDtpZigw PT09Yi5hLmxlbmd0aCliPW51bGw7ZWxzZXt2YXIgZD1uZXcgQztkLkooImV0Iiwi bGwiKTtkLnNldCgibGwiLEphKGIuYSkpO2I9ZH1iJiYoYj1YKGEsYiksWSh0aGlz LFtbYSxiXV0sdm9pZCAwLHZvaWQgMCxhLlBhKCkpKX0sYSksMCl9fWc9eGUucHJv dG90eXBlOwpnLk09ZnVuY3Rpb24oYSxiLGMpe2I9V2ModGhpcy5nLGEudSxiLGMp O2I9WChhLGIpO1kodGhpcyxbW2EsYl1dKTthPWEudGEoKTtiPXZvaWQgMDtjPTA7 Zm9yKHZhciBkPXRoaXMuYS5sZW5ndGg7YzxkOysrYylpZih0aGlzLmFbY10uaWQ9 PT1hKXtiPXRoaXMuYVtjXTticmVha31pZihiKXtjPTA7Zm9yKGQ9Yi53Lmxlbmd0 aDtjPGQ7KytjKWIueWFbYi53W2NdXT1bXTtCZSh0aGlzLGIpfX07Zy5UPWZ1bmN0 aW9uKGEsYixjKXtiPVdjKHRoaXMuZyxhLnUsYixjKTtiPVgoYSxiKTtiLkooInJu Iix5LmYueGEoKSk7Yz1hLnUuJDtyZXR1cm4nPGEgaHJlZj0iaHR0cHM6Ly90b3Ax MDAucmFtYmxlci5ydScrKGM/Ii9ob21lP2lkPSIrYzoiIikrJyIgdGFyZ2V0PSJf YmxhbmsiPjxpbWcgc3JjPSInKyhhLnVhKCkrIj8iK2IudG9TdHJpbmcoKSkrJyIg dGl0bGU9IlJhbWJsZXJcJ3MgVG9wMTAwIiBhbHQ9IlJhbWJsZXJcJ3MgVG9wMTAw IiBib3JkZXI9IjAiIC8+PC9hPid9OwpmdW5jdGlvbiBZKGEsYixjLGQsZSl7YT1h LnY7dmFyIGY9e307Yz1jfHw1O2lmKDE9PT1jKWYudHlwZT1ZZDtlbHNle3ZhciBr PWJbMF1bMV0sbT12b2lkIDAscj1rLmdldCgiZXQiKSxJPVsiYnYiLCJjbCIsImVj IiwiZXh0bG4iLCJsbCJdOzA8PUUoWyJleHRsbiIsImFjdCJdLHIpJiZYZD9tPVlk OjA8PUUoSSxyKSYmV2Q/bT1aZDoyRTM+PWsudG9TdHJpbmcoKS5sZW5ndGg/bT0k ZDpXZCYmKG09WmQpO2YudHlwZT1tfWYudHlwZSYmKGYuZGF0YT1iLGYuVz1kLGYu dXJsPWUsYS5hLmVucXVldWUoYyxmKSxhLmh8fChhLmg9ITAsYS5nKCkpKX1nLkxi PWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXZvaWQgMCxiPTAsYz10aGlzLmEubGVuZ3Ro O2I8YzsrK2Ipe3ZhciBhPXRoaXMuYVtiXSxkPXRoaXMuYi5nZXRDbGlja3MoYS53 KTtkJiYoZD1YKGEubyxkKSxZKHRoaXMsW1thLm8sZF1dKSl9dGhpcy5iLmVyYXNl Q2xpY2tzRGF0YSgpfTsKZy5KYT1mdW5jdGlvbigpe2Zvcih2YXIgYT12b2lkIDAs Yj0wLGM9dGhpcy5hLmxlbmd0aDtiPGM7KytiKXt2YXIgYT10aGlzLmFbYl0sZD10 aGlzLmIuZ2V0Q2xpY2tzKGEudyk7ZCYmKGQuc2V0KCJjbHQiLCJ0YXAiKSxkPVgo YS5vLGQpLFkodGhpcyxbW2EubyxkXV0pKX10aGlzLmIuZXJhc2VDbGlja3NEYXRh KCl9O2cuUmI9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgQzthLnNldCgiZXQiLCJwaW5n Iik7Zm9yKHZhciBiPXZvaWQgMCxjPVtdLGQ9MCxlPXRoaXMuYS5sZW5ndGg7ZDxl OysrZCl0aGlzLmFbZF0uby51Llp8fChiPVgodGhpcy5hW2RdLm8sYS5jbG9uZSgp KSksYy5wdXNoKFt0aGlzLmFbZF0ubyxiXSk7MCE9PWMubGVuZ3RoJiZZKHRoaXMs Yyl9OwpnLk1iPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTAsZD10aGlzLmEu bGVuZ3RoO2M8ZDsrK2MpaWYodGhpcy5hW2NdLkspe3ZhciBlPVgodGhpcy5hW2Nd Lm8sYS5jbG9uZSgpKTtiLnB1c2goW3RoaXMuYVtjXS5vLGVdKX0wIT09Yi5sZW5n dGgmJlkodGhpcyxiKX07Zy5PYj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXSxk PTAsZT10aGlzLmEubGVuZ3RoO2Q8ZTsrK2QpdGhpcy5hW2RdLm8udS5CYXx8YS5y ZW1vdmUoInVtX2xvZyIpLGMucHVzaChbdGhpcy5hW2RdLm8sWCh0aGlzLmFbZF0u byxhLmNsb25lKCkpXSk7MCE9PWMubGVuZ3RoJiZZKHRoaXMsYyx2b2lkIDAsYil9 O2cuSmI9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZD1iPzE6NSxlPTAsZj10 aGlzLmEubGVuZ3RoO2U8ZjsrK2UpYy5wdXNoKFt0aGlzLmFbZV0ubyxYKHRoaXMu YVtlXS5vLGEuY2xvbmUoKSldKTswIT09Yy5sZW5ndGgmJlkodGhpcyxjLGQpfTsK ZnVuY3Rpb24gemUoYSxiKXt2YXIgYz17fSxkPWIudTtjLmlkPWIudGEoKTtjLm89 YjtjLmVsZW1lbnQ9ZC5QKCk7Yy53PWQuTGE7Yy5LPWQuSztjLlo9ZC5aO2Muc2M9 ITE7Yy55YT17fTtjLlk9ZC5NYTtpZihjLlkubGVuZ3RoKWZvcih2YXIgZD0wLGU9 Yy5ZLmxlbmd0aDtkPGU7KytkKTA8PUUoYy53LGMuWVtkXSl8fGMudy5wdXNoKGMu WVtkXSk7aWYoYS5mLmxlbmd0aClmb3IoZD0wLGU9YS5mLmxlbmd0aDtkPGU7Kytk KTA8PUUoYy53LGEuZltkXSl8fGMudy5wdXNoKGEuZltkXSk7ZD0wO2ZvcihlPWMu dy5sZW5ndGg7ZDxlOysrZCljLnlhW2Mud1tkXV09W107cmV0dXJuIGN9CmZ1bmN0 aW9uIEFlKGEsYil7Zm9yKHZhciBjPTAsZD1hLmEubGVuZ3RoO2M8ZDsrK2MpZm9y KHZhciBlPWEuYVtjXSxmPWIsaz0wLG09Zi5sZW5ndGg7azxtOysraykwPD1FKGUu dyxmW2tdKXx8KGUudy5wdXNoKGZba10pLGUueWFbZltrXV09W10pO2M9MDtmb3Io ZD1iLmxlbmd0aDtjPGQ7KytjKTA8PUUoYS5mLGJbY10pfHxhLmYucHVzaChiW2Nd KTthLmImJmEuYi5hZGRBdHRyaWJ1dGVzKGIpO2EuVigpfWZ1bmN0aW9uIEJlKGEs Yil7aWYoYS5iKXt2YXIgYz1hLmIuZ2V0QmxvY2tzKGIudyxiLnlhKSxkPXZvaWQg MDtpZihjKWZvcih2YXIgZT0wLGY9Yy5sZW5ndGg7ZTxmOysrZSlkPWNbZV0sZC5p c0VtcHR5KCl8fChkPVgoYi5vLGQpLFkoYSxbW2IubyxkXV0pKX19CmcuVWI9ZnVu Y3Rpb24oYSl7dGhpcy5iPWEoKTthPTA7Zm9yKHZhciBiPXRoaXMuYS5sZW5ndGg7 YTxiOysrYSl0aGlzLmIuYWRkQXR0cmlidXRlcyh0aGlzLmFbYV0udyk7dGhpcy5W KCk7aC5zZXRUaW1lb3V0KHYodGhpcy5WLHRoaXMpLDFFMyk7aC5zZXRUaW1lb3V0 KHYodGhpcy5WLHRoaXMpLDJFMyk7aC5zZXRUaW1lb3V0KHYodGhpcy5WLHRoaXMp LDRFMyk7aC5zZXRUaW1lb3V0KHYodGhpcy5WLHRoaXMpLDhFMyl9O2cuVj1mdW5j dGlvbigpe2Zvcih2YXIgYT0wLGI9dGhpcy5hLmxlbmd0aDthPGI7KythKUJlKHRo aXMsdGhpcy5hW2FdKX07Zy5OYj1mdW5jdGlvbihhKXtmb3IodmFyIGI9dm9pZCAw LGM9MCxkPXRoaXMuYS5sZW5ndGg7YzxkOysrYylpZih0aGlzLmFbY10uSyl7Yj10 aGlzLmFbY10uSzticmVha31hKGIpfTsKZy5LYT1mdW5jdGlvbigpe2lmKCF0aGlz Lm0pe2lmKFhkKXt2YXIgYT10aGlzLmosYj1uZXcgQyxjPUphKHt0aW1lOmEuYS50 aW1lLHNjcmVlbnM6YS5hLmJhfSk7Yi5KKCJldCIsImFjdCIpO2Iuc2V0KCJtZXRh IixjKTthLmIuYigiYWN0aXZpdHkiLGIsITApfXRoaXMubT0hMH19O2Z1bmN0aW9u IENlKGEsYil7dGhpcy5hPXRoaXMuYj12b2lkIDA7RGUodGhpcyk7dGhpcy52ZXJz aW9uPSIxLjUuMCI7dGhpcy52ZXJzaW9uKz0iaSI7aWYoYSl7aWYodGhpcy4kPWEu cHJvamVjdCx0aGlzLkxhPWEuYXR0cmlidXRlc19kYXRhc2V0fHxbXSx0aGlzLk1h PWEuY29tbW9uX2F0dHJpYnV0ZXN8fFtdLHRoaXMubGE9YS5zcGxpdHN8fFtdLHRo aXMuaGE9YS5jaGFwdGVyc3x8W10sdGhpcy5EPWEuY3VzdG9tX3ZhcnN8fHt9LHRo aXMuSz1hLmVjb21tZXJjZXx8dm9pZCAwLHRoaXMuZWxlbWVudD1hLmVsZW1lbnR8 fHZvaWQgMCx0aGlzLllhPWEudHJhY2tIYXNoZXN8fCExLHRoaXMuQmE9YS50cmFj a0xpbmtzfHwhMSx0aGlzLnphPWEudXJsfHx2b2lkIDAsYS51c2VyX2lkfHxudWxs PT09YS51c2VyX2lkP3RoaXMuTj1hLnVzZXJfaWQ6dGhpcy5OPXZvaWQgMCxhLnN5 bmMpe3ZhciBjPWEuc3luYzt0aGlzLkQ9dGhpcy5EfHx7fTt0aGlzLkQuX191aWQ9 Y319ZWxzZSB0aGlzLiQ9CmhhLmZjLHRoaXMuTGE9W10sdGhpcy5NYT1bXSx0aGlz LmxhPVtdLHRoaXMuaGE9W10sdGhpcy5OPXRoaXMuZWxlbWVudD10aGlzLks9dGhp cy5EPXZvaWQgMCx0aGlzLkJhPXRoaXMuWWE9ITEsdGhpcy56YT12b2lkIDA7aWYo Yz1hJiZhLnByb3RvY29sKXt2YXIgZD12b2lkIDA7Zm9yKHByb3RvY29sIGluIEVl KWlmKGQ9RWVbcHJvdG9jb2xdLGMuc3BsaXQoIjoiKVswXT09PWQpeyI6IiE9PWRb ZC5sZW5ndGgtMV0mJihkPWQrIjoiKTt0aGlzLmZhPWQ7YnJlYWt9dmU9dGhpcy5m YSt2ZX1lbHNlIHRoaXMuZmE9dm9pZCAwO2M9dm9pZCAwO3RoaXMuZmE/Yz10aGlz LmZhOmM9Imh0dHBzOiI9PT1oLmxvY2F0aW9uLnByb3RvY29sPyJodHRwczoiOiJo dHRwOiI7dGhpcy5iPWMrIi8va3Jha2VuLnJhbWJsZXIucnUvY250LyI7dGhpcy5h PWMrIi8va3Jha2VuLnJhbWJsZXIucnUvdW1fY250LyI7dGhpcy5aPWJ8fCExfXZh ciBFZT17aWM6Imh0dHAiLGpjOiJodHRwcyJ9O2c9Q2UucHJvdG90eXBlOwpnLnZl cnNpb249dm9pZCAwO2cuJD12b2lkIDA7Zy5UYT12b2lkIDA7Zy5MYT12b2lkIDA7 Zy5NYT12b2lkIDA7Zy5sYT12b2lkIDA7Zy5oYT12b2lkIDA7Zy5EPXZvaWQgMDtn Lm5hbWU9dm9pZCAwO2cuSz12b2lkIDA7Zy5lbGVtZW50PXZvaWQgMDtnLmZhPXZv aWQgMDtnLlo9dm9pZCAwO2cuTj12b2lkIDA7Zy5ZYT12b2lkIDA7Zy5CYT12b2lk IDA7Zy56YT12b2lkIDA7Zy51YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ9O2cu UGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfTtnLlZhPWZ1bmN0aW9uKGEpe3Ro aXMubmFtZT1hfTtnLlA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50fTtm dW5jdGlvbiBEZShhKXthLlRhPShuZXcgRGF0ZS8xRTMpLnRvU3RyaW5nKCkrIi0i K3kuZi54YSgpLnRvU3RyaW5nKCl9O2Z1bmN0aW9uIEZlKGEsYil7dGhpcy51PW5l dyBDZShhLGIpO3RoaXMuYT14ZS5CKCk7eWUodGhpcy5hLHRoaXMpfWc9RmUucHJv dG90eXBlO2cudWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51LnVhKCl9O2cuUGE9 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51LlBhKCl9O2cuVmE9ZnVuY3Rpb24oYSl7 dGhpcy51LlZhKGEpfTtnLnRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudS4kfTtn LlVhPWZ1bmN0aW9uKGEpe3RoaXMudS4kPWF9O2cuTT1mdW5jdGlvbihhKXtEZSh0 aGlzLnUpO3RoaXMuYS5NKHRoaXMsMSxhKX07Zy5aYT1mdW5jdGlvbihhLGIpe3Zh ciBjPXkuYi5QKGEpO2MmJjE9PT1jLm5vZGVUeXBlP2MuaW5uZXJIVE1MPXRoaXMu YS5UKHRoaXMsMCxiKTp0aGlzLmEuTSh0aGlzLDAsYil9O2cuaWI9ZnVuY3Rpb24o YSxiKXt2YXIgYz15LmIuUChhKTtjJiYxPT09Yy5ub2RlVHlwZSYmKGMuaW5uZXJI VE1MPXRoaXMuYS5UKHRoaXMsMixiKSl9O2cuV2I9ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy51LlRhfTsKZy5UPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5UKHRoaXMs MCl9O2cuY2I9ZnVuY3Rpb24oKXt9O2cuZmI9ZnVuY3Rpb24oYSxiKXt2YXIgYz10 aGlzLnU7Yy5EPWMuRHx8e307Yy5EW2FdPWJ9O2cubWI9ZnVuY3Rpb24oYSl7dGhp cy5iKCJfX3VpZCIsYSl9O2cuZWI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5hO2E9 eS5jYS5PYShhKTthPVgodGhpcyxhKTtZKGIsW1t0aGlzLGFdXSl9O2cudWI9ZnVu Y3Rpb24oYSl7dmFyIGI9dGhpcy51O2IuTnx8bnVsbD09PWIuTj8odGhpcy51Lk49 YSxhPXRoaXMuYSxiPXkuZGEuT2EoKSxiPVgodGhpcyxiKSxZKGEsW1t0aGlzLGJd XSkpOnkuRy5iYygpfTsKZnVuY3Rpb24gWChhLGIpe3ZhciBjPWEudTtiLnNldE1l dGEoInBpZCIsYy4kKTtiLnNldE1ldGEoInJpZCIsYy5UYSk7Yi5zZXRNZXRhKCJ2 IixjLnZlcnNpb24pO3EoYy5sYSkmJmMubGEubGVuZ3RoJiZiLnNldCgic3AiLEph KGMubGEpKTthLnUuTiYmYi5zZXRNZXRhKCJ1aWQiLGEudS5OKTtyZXR1cm4gYn12 YXIgWj1GZS5wcm90b3R5cGU7Wi5zZXRBY2NvdW50PVouVWE7Wi5nZXRBY2NvdW50 PVoudGE7Wi50cmFja1BhZ2V2aWV3PVouTTtaLnRyYWNrUGFnZVZpZXc9Wi5NO1ou dHJhY2tQYWdldmlld0J5TG9nbz1aLlphO1oudHJhY2tQYWdlVmlld0J5TG9nbz1a LlphO1ouZHJhd0xvZ29Ubz1aLmliO1ouc2V0Q3VzdG9tVmFyPVouZmI7Wi5nZXRD dXN0b21WYXI9Wi5jYjtaLnNlbmRDdXN0b21WYXJzPVouZWI7Wi5nZXRXaWRnZXRI dG1sPVouVDtaLnN5bmNVc2VySWQ9Wi51YjtaLnN5bmM9Wi5tYjtaLmdldFJlcXVl c3RJZD1aLldiO2Z1bmN0aW9uIHkoYSxiKXtpZihiKXJldHVybiBuZXcgRmUoYSxi KTt5Lm1bYS5wcm9qZWN0XT1uZXcgRmUoYSxiKTtyZXR1cm4geS5tW2EucHJvamVj dF19eS5tPXt9O3kua2M9e307eS5vYT0wO3kucGE9ZnVuY3Rpb24oKXtyZXR1cm4g Ui5CKCl9O3kuYWI9ZnVuY3Rpb24oKXtyZXR1cm4gUi5CKCl9O3kucz1mdW5jdGlv bihhLGIpe3ZhciBjPXZvaWQgMCE9PWE/YToifiIreS5vYSsrLGQ9bmV3IHkoe30s ITApO3kubVtjXT1kO2QuVmEoYyk7YiYmZC5VYShiKTtyZXR1cm4gZH07eS5EYT1m dW5jdGlvbihhKXtyZXR1cm4geS5zKHZvaWQgMCxhKX07eS5tYT1mdW5jdGlvbihh KXthPWF8fCIiO3JldHVybiB5Lm1bYV18fHkucyhhKX07eS5sb2FkZWQ9ITA7eS5F YT0hMDt5LmVhPWZ1bmN0aW9uKGEpe3ZhciBiPWhbYV07YiYmYi5pc1RvcDEwME5h bWVzcGFjZXx8KGhbYV09eSl9O3kuZWEoIktyYWtlbiIpO3kuZWEoInRvcDEwMCIp O3RvcDEwMFF1ZXVlPWZ1bmN0aW9uKCl7fTsKdG9wMTAwUXVldWUucHJvdG90eXBl LnB1c2g9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWFyZ3VtZW50cyxjPTA7YzxiLmxl bmd0aDtjKyspdHJ5e2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYltjXSliW2NdKCk7 ZWxzZXt2YXIgZD0iIixlPWJbY11bMF0sZj1lLmxhc3RJbmRleE9mKCIuIik7MDxm JiYoZD1lLnN1YnN0cmluZygwLGYpLGU9ZS5zdWJzdHJpbmcoZisxKSk7dmFyIGs9 eS5tYShkKTtrW2VdLmFwcGx5KGssYltjXS5zbGljZSgxKSl9fWNhdGNoKG0pe319 O2lmKGguX3RvcDEwMHEmJnEoaC5fdG9wMTAwcSkpe3ZhciBHZT1uZXcgdG9wMTAw UXVldWU7Zm9yKGguX3RvcDEwMHE9aC5fdG9wMTAwcS5yZXZlcnNlKCk7aC5fdG9w MTAwcS5sZW5ndGg7KUdlLnB1c2goaC5fdG9wMTAwcS5wb3AoKSk7aC5fdG9wMTAw cT1HZX1oLl90b3AxMDBxfHwoaC5fdG9wMTAwcT1uZXcgdG9wMTAwUXVldWUpOwp2 YXIgSGU9cGFyc2VJbnQoIjEiLDEwKSxJZT15LnModm9pZCAwLCIyNjc5MzExIik7 aWYoSGUpe3ZhciBKZT1JZS5UKCExKTtoLmRvY3VtZW50LndyaXRlKEplKX1lbHNl IEllLk0oKTtaPUZlLnByb3RvdHlwZTtaLnNldEFjY291bnQ9Wi5VYTtaLmdldEFj Y291bnQ9Wi50YTtaLnRyYWNrUGFnZXZpZXc9Wi5NO1oudHJhY2tQYWdldmlld0J5 TG9nbz1aLlphO1ouZHJhd0xvZ29Ubz1aLmliO1ouc2V0Q3VzdG9tVmFyPVouZmI7 Wi5nZXRDdXN0b21WYXI9Wi5jYjtaLnNlbmRDdXN0b21WYXJzPVouZWI7Wi5zeW5j PVoubWI7d2luZG93Ll90b3AxMDB8fCh3aW5kb3cuX3RvcDEwMD17fSx3aW5kb3cu X3RvcDEwMC5jcmVhdGVUcmFja2VyPXkucyx3aW5kb3cuX3RvcDEwMC5nZXRUcmFj a2VyQnlOYW1lPXkubWEsd2luZG93Ll90b3AxMDAuZ2V0VHJhY2tlcj15LkRhLHdp bmRvdy5fdG9wMTAwLmdldFB1YlN1Yj15LnBhLHdpbmRvdy5fdG9wMTAwLmxvYWRl ZD15LmxvYWRlZCx5LmlzVG9wMTAwTmFtZXNwYWNlPXkuRWEpO30pKCk7Cgo= ------------fIzuf6Oyt4t75FHoI40g63 Content-Disposition: inline; filename=watch.js Content-Type: application/x-javascript; charset=utf-8; name=watch.js Content-Location: http://mc.yandex.ru/metrika/watch.js Content-Transfer-Encoding: Base64 77u/KGZ1bmN0aW9uKGcsaCxQKXtmdW5jdGlvbiByKGEsYixjKXtyZXR1cm4gZnVu Y3Rpb24oKXt0cnl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNo KGQpe2N8fHhhKGQsYil9fX1mdW5jdGlvbiB4YShhLGIpe3ZhciBjO2lmKC4wMT5N YXRoLnJhbmRvbSgpKXRyeXt2YXIgZD1hJiZhLm1lc3NhZ2V8fCIiOyhjPS0xPGQu aW5kZXhPZigibmV0d29yayBlcnJvciBvY2N1cnJlZCIpfHwtMTxkLmluZGV4T2Yo InNlbmQgYmVhY29uIikmJi0xPGQuaW5kZXhPZigiQ29udGVudCBTZWN1cml0eSBQ b2xpY3kiKSl8fChuZXcgZ2EpLmxvZygianNlcnJzIixYLGEubWVzc2FnZSxiLEUu aHJlZiwiIiwic3RyaW5nIj09PXR5cGVvZiBhLnN0YWNrJiZhLnN0YWNrLnJlcGxh Y2UoL1xuL2csIlxcbiIpKX1jYXRjaChlKXt9fWZ1bmN0aW9uIGxiKGEsYixjLGQs ZSl7ZnVuY3Rpb24gbChhKXt2YXIgYj0obmV3IERhdGUpLmdldFRpbWUoKTthJiZi PGEmJihNYSs9YS1iKzIwKTtmLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtsKGIpfSwK MjAsInRpbWVDb3JyZWN0b3IiKX1mdW5jdGlvbiB2KCl7dmFyIGE9KG5ldyBEYXRl KS5nZXRUaW1lKCkrTWE7YTxTJiYoYT1TKzEwKTtyZXR1cm4gUz1hfWZ1bmN0aW9u IG4oKXtyZXR1cm4gTWF0aC5yb3VuZCgodigpLVgpLzUwKX1mdW5jdGlvbiBJKGEs Yil7Yj1NYXRoLm1heCgwLE1hdGgubWluKGIsNjU1MzUpKTtmLm1lcmdlQXJyYXlz KGEsW2I+PjgsYiYyNTVdKX1mdW5jdGlvbiB0KGEsYil7Zi5tZXJnZUFycmF5cyhh LFtiJjI1NV0pfWZ1bmN0aW9uIHAoYSxiKXtmb3IoYj1NYXRoLm1heCgwLGJ8MCk7 MTI3PGI7KWYubWVyZ2VBcnJheXMoYSxbYiYxMjd8MTI4XSksYj4+PTc7Zi5tZXJn ZUFycmF5cyhhLFtiXSl9ZnVuY3Rpb24gcShhLGIpezI1NTxiLmxlbmd0aCYmKGI9 Yi5zdWJzdHIoMCwyNTUpKTtmLm1lcmdlQXJyYXlzKGEsW2IubGVuZ3RoXSk7Zm9y KHZhciBjPTA7YzxiLmxlbmd0aDtjKyspSShhLGIuY2hhckNvZGVBdChjKSl9ZnVu Y3Rpb24gdyhhLGIpe3AoYSxiLmxlbmd0aCk7CmZvcih2YXIgYz0wO2M8Yi5sZW5n dGg7YysrKXAoYSxiLmNoYXJDb2RlQXQoYykpfWZ1bmN0aW9uIE5hKGEsYixjLGQs ZSxmKXtmb3IodmFyIHk7YyYmKHk9bS5nZXRFbGVtZW50U2l6ZShjKSkmJigheVsw XXx8IXlbMV0pOyljPW0uZ2V0RWxlbWVudFBhcmVudChjKTtpZighYylyZXR1cm4g bnVsbDt5PWNbRl07aWYoIXl8fDA+eSlyZXR1cm4gbnVsbDt2YXIgbD17bW91c2Vt b3ZlOjIsY2xpY2s6MzIsZGJsY2xpY2s6MzMsbW91c2Vkb3duOjQsbW91c2V1cDoz MCx0b3VjaDoxMn1bYl07aWYoIWwpcmV0dXJuIG51bGw7dmFyIGc9bS5nZXRFbGVt ZW50WFkoYyk7Yz1bXTt0KGMsbCk7cChjLGEpO3AoYyx5KTtwKGMsTWF0aC5tYXgo MCxkWzBdLWdbMF0pKTtwKGMsTWF0aC5tYXgoMCxkWzFdLWdbMV0pKTsvXm1vdXNl KHVwfGRvd24pfGNsaWNrJC8udGVzdChiKSYmKGE9ZXx8Zix0KGMsMj5hPzE6YT09 KGU/Mjo0KT80OjIpKTtyZXR1cm4gY31mdW5jdGlvbiBPYShhLGIsYyxkKXtiPWJb Rl07CmlmKCFifHwwPmIpcmV0dXJuIG51bGw7dmFyIGU9W107dChlLDMxKTtwKGUs YSk7cChlLGIpO3AoZSxjWzBdKTtwKGUsY1sxXSk7dChlLDApO3QoZSwwKTt0KGUs ZCk7cmV0dXJuIGV9ZnVuY3Rpb24gRShhLGIpe3ZhciBjPVtdO3QoYywzKTtwKGMs YSk7cChjLGJbMF0pO3AoYyxiWzFdKTtyZXR1cm4gY31mdW5jdGlvbiBHKGEsYixj KXt2YXIgZD1bXTtjPWNbRl07aWYoIWN8fDA+YylyZXR1cm4gbnVsbDt0KGQsMTYp O3AoZCxhKTtwKGQsYlswXSk7cChkLGJbMV0pO3AoZCxjKTtyZXR1cm4gZH1mdW5j dGlvbiBBKGEsYixjKXt2YXIgZD1bXTt0KGQsMjgpO3AoZCxhKTtwKGQsYlswXSk7 cChkLGJbMV0pO3AoZCxjWzBdKTtwKGQsY1sxXSk7cmV0dXJuIGR9ZnVuY3Rpb24g eWEoYSxiLGMsZCl7dmFyIGU9W107dChlLDUpO3AoZSxhKTtJKGUsYik7dChlLGMp O2E9ZFtGXTtpZighYXx8MD5hKWE9MDtwKGUsYSk7cmV0dXJuIGV9ZnVuY3Rpb24g eihhLGIpe3ZhciBjO2lmKDA9PWIubGVuZ3RoKXZhciBkPQpjPSIiO2Vsc2UgMTAw Pj1iLmxlbmd0aD8oYz1iLGQ9IiIpOjIwMD49Yi5sZW5ndGg/KGM9Yi5zdWJzdHIo MCwxMDApLGQ9Yi5zdWJzdHIoMTAwKSk6KGM9Yi5zdWJzdHIoMCw5NyksZD1iLnN1 YnN0cihiLmxlbmd0aC05NykpO3ZhciBlPVtdO3QoZSwyOSk7cChlLGEpO3coZSxj KTt3KGUsZCk7cmV0dXJuIGV9ZnVuY3Rpb24gcGIoYSl7dmFyIGI9W107dChiLDI3 KTtwKGIsYSk7cmV0dXJuIGJ9ZnVuY3Rpb24gcWIoYSl7dmFyIGI9W107dChiLDE0 KTtwKGIsYSk7cmV0dXJuIGJ9ZnVuY3Rpb24gSChhKXt2YXIgYj1bXTt0KGIsMTUp O3AoYixhKTtyZXR1cm4gYn1mdW5jdGlvbiBtYShhLGIpe3ZhciBjPVtdO3QoYywx Nyk7cChjLGEpO3AoYyxiW0ZdKTtyZXR1cm4gY31mdW5jdGlvbiBPKGEsYil7dmFy IGM9W107dChjLDE4KTtwKGMsYSk7cChjLGJbRl0pO3JldHVybiBjfWZ1bmN0aW9u IGhhKGEsYixjKXt2YXIgZD1bXTt0KGQsMTkpO3AoZCxhKTtwKGQsYltGXSk7cShk LFN0cmluZyhjKSk7CnJldHVybiBkfWZ1bmN0aW9uIFAoYSl7dmFyIGI9YVtGXTtp ZighYnx8MD5ifHwhL15JTlBVVHxTRUxFQ1R8VEVYVEFSRUEkLy50ZXN0KGEubm9k ZU5hbWUpfHwhYS5mb3JtfHxZKGEuZm9ybSkpcmV0dXJuIG51bGw7dmFyIGM9bS5n ZXRGb3JtTnVtYmVyKGEuZm9ybSk7aWYoMD5jKXJldHVybiBudWxsO3ZhciBkPSJJ TlBVVCI9PWEubm9kZU5hbWU/e3RleHQ6MCxjb2xvcjowLGRhdGU6MCxkYXRldGlt ZTowLCJkYXRldGltZS1sb2NhbCI6MCxlbWFpbDowLG51bWJlcjowLHJhbmdlOjAs c2VhcmNoOjAsdGVsOjAsdGltZTowLHVybDowLG1vbnRoOjAsd2VlazowLHBhc3N3 b3JkOjIscmFkaW86MyxjaGVja2JveDo0LGZpbGU6NixpbWFnZTo3fVthLnR5cGVd OntTRUxFQ1Q6MSxURVhUQVJFQTo1fVthLm5vZGVOYW1lXTtpZigibnVtYmVyIiE9 dHlwZW9mIGQpcmV0dXJuIG51bGw7Zm9yKHZhciBlPS0xLGY9YS5mb3JtLmVsZW1l bnRzLHk9Zi5sZW5ndGgsbD0wLGc9MDtsPHk7bCsrKWlmKGZbbF0ubmFtZT09CmEu bmFtZSl7aWYoZltsXT09YSl7ZT1nO2JyZWFrfWcrK31pZigwPmUpcmV0dXJuIG51 bGw7Zj1bXTt0KGYsNyk7cChmLGIpO3AoZixjKTtwKGYsZCk7dyhmLGEubmFtZXx8 IiIpO3AoZixlKTtyZXR1cm4gZn1mdW5jdGlvbiBOKGEsYil7dmFyIGM9bS5nZXRG b3JtTnVtYmVyKGIpO2lmKDA+YylyZXR1cm4gbnVsbDtmb3IodmFyIGQ9Yi5lbGVt ZW50cyxlPWQubGVuZ3RoLHk9W10sbD0wO2w8ZTtsKyspaWYoIW0uaXNFbXB0eUZp ZWxkKGRbbF0pKXt2YXIgZz1kW2xdW0ZdO2cmJjA8ZyYmZi5tZXJnZUFycmF5cyh5 LFtnXSl9ZD1bXTt0KGQsMTEpO3AoZCxhKTtwKGQsYyk7cChkLHkubGVuZ3RoKTtm b3IoYz0wO2M8eS5sZW5ndGg7YysrKXAoZCx5W2NdKTtyZXR1cm4gZH1mdW5jdGlv biBSKCl7dmFyIGE9W107dChhLDEzKTtyZXR1cm4gYX1mdW5jdGlvbiBKKGEsYixj KXthPWEuYXBwbHkoZyxiKTtuYS5hcHBlbmQoYSxjKX1mdW5jdGlvbiBCKGEpe2lm KGFbRl0pYTp7dmFyIGI9bigpLApjPWFbRl07aWYoMDxjKXt2YXIgZD1bXTthPW0u Z2V0RWxlbWVudFJlZ2lvbihhKTt2YXIgZT16YVtjXSxmPWFbMF0rIngiK2FbMV0s bD1hWzJdKyJ4IithWzNdO2YhPWUucG9zJiYoZS5wb3M9Zix0KGQsOSkscChkLGIp LHAoZCxjKSxwKGQsYVswXSkscChkLGFbMV0pKTtsIT1lLnNpemUmJihlLnNpemU9 bCx0KGQsMTApLHAoZCxiKSxwKGQsYykscChkLGFbMl0pLHAoZCxhWzNdKSk7aWYo ZC5sZW5ndGgpe2E9ZDticmVhayBhfX1hPW51bGx9ZWxzZXsoYz1tLmdldEVsZW1l bnRQYXJlbnQoYSkpJiZCKGMpO2FbRl09VDt6YVtUXT17fTtUKys7aWYoYS5ub2Rl TmFtZSlpZihjPSthW0ZdLCFpc0Zpbml0ZShjKXx8MD49YyliPW51bGw7ZWxzZXt2 YXIgZD02NCxlPTAseT1tLmdldEVsZW1lbnRQYXJlbnQoYSksZj15JiZ5W0ZdP3lb Rl06MDswPmYmJihmPTApO3ZhciBsPWEubm9kZU5hbWUudG9VcHBlckNhc2UoKSxn PXJiW2xdO2d8fChkfD0yKTt2YXIgdj1tLmdldEVsZW1lbnROZWlnaGJvclBvc2l0 aW9uKGEpOwp2fHwoZHw9NCk7dmFyIGg9bS5nZXRFbGVtZW50UmVnaW9uKGEpOyh5 PXk/bS5nZXRFbGVtZW50UmVnaW9uKHkpOm51bGwpJiZoWzBdPT15WzBdJiZoWzFd PT15WzFdJiZoWzJdPT15WzJdJiZoWzNdPT15WzNdJiYoZHw9OCk7emFbY10ucG9z PWhbMF0rIngiK2hbMV07emFbY10uc2l6ZT1oWzJdKyJ4IitoWzNdO2EuaWQmJiJz dHJpbmciPT10eXBlb2YgYS5pZCYmKGR8PTMyKTsoeT1tLmNhbGNUZXh0Q2hlY2tz dW0oYSkpJiYoZHw9MTYpO3ZhciBMPW0uY2FsY0F0dHJpYkNoZWNrc3VtKGEpO0wm JihlfD0yKTtiOnt2YXIgdT1tLmdldEVsZW1lbnRDaGlsZHJlbihtLmdldEVsZW1l bnRQYXJlbnQoYSksYS50YWdOYW1lKTtmb3IodmFyIGs9MDtrPHUubGVuZ3RoO2sr KylpZigoIXVba10uaWR8fCJzdHJpbmciIT10eXBlb2YgdVtrXS5pZCkmJm0uY2Fs Y0F0dHJpYkNoZWNrc3VtKHVba10pPT1MJiZtLmNhbGNUZXh0Q2hlY2tzdW0odVtr XSk9PXkpe3U9ITA7YnJlYWsgYn11PSExfXUmJihkfD0KMSxiPW0uY2FsY0NoaWxk cmVuQ2hlY2tzdW0oYSkpO3U9W107dCh1LDEpO3AodSxjKTt0KHUsZCk7cCh1LGYp O2c/dCh1LGcpOnEodSxsKTt2JiZwKHUsdik7ZCY4fHwocCh1LGhbMF0pLHAodSxo WzFdKSxwKHUsaFsyXSkscCh1LGhbM10pKTtkJjMyJiZxKHUsYS5pZCk7eSYmSSh1 LHkpO2QmMSYmSSh1LGIpO3QodSxlKTtMJiZJKHUsTCk7Yj11fWVsc2UgYVtGXT0t MSxiPW51bGw7bmEuYXBwZW5kKGIsdm9pZCAwKTthPVAoYSl9bmEuYXBwZW5kKGEs dm9pZCAwKX1mdW5jdGlvbiBRKGEsYil7dmFyIGM9YSYmbS5jbGFzc05hbWVFeGlz dHMoYSwiKHltLWRpc2FibGUta2V5c3wtbWV0cmlrYS1ub2tleXMpIik7YiYmYSYm KGM9Y3x8ISFtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIih5bS1kaXNhYmxlLWtl eXN8LW1ldHJpa2Etbm9rZXlzKSIsYSkubGVuZ3RoKTtyZXR1cm4gY31mdW5jdGlv biBZKGEpe3JldHVybiBhJiZtLmNsYXNzTmFtZUV4aXN0cyhhLCIoeW0tZGlzYWJs ZS1zdWJtaXR8LW1ldHJpa2Etbm9mb3JtKSIpfQpmdW5jdGlvbiBVKGEpe3ZhciBi PUMuZ2V0VGFyZ2V0KGEpO2lmKGImJiJTQ1JPTExCQVIiIT1iLm5vZGVOYW1lKXtp ZigvXklOUFVUfFNFTEVDVHxURVhUQVJFQXxCVVRUT04kLy50ZXN0KGIudGFnTmFt ZSkpaWYoYltGXSlCKGIpO2Vsc2V7dmFyIGM9Yi5mb3JtO2lmKGMpZm9yKHZhciBj PWMuZWxlbWVudHMsZD1jLmxlbmd0aCxlPTA7ZTxkO2UrKykvXklOUFVUfFNFTEVD VHxURVhUQVJFQXxCVVRUT04kLy50ZXN0KGNbZV0udGFnTmFtZSkmJiFjW2VdW0Zd JiZCKGNbZV0pO2Vsc2UgQihiKX1lbHNlIEIoYik7SihOYSxbbigpLGEudHlwZSxi LEMuZ2V0UG9zKGEpLGEud2hpY2gsYS5idXR0b25dKX19ZnVuY3Rpb24gZmEoYSl7 VShhKTthOntpZihnLmdldFNlbGVjdGlvbil7dHJ5e3ZhciBiPWcuZ2V0U2VsZWN0 aW9uKCl9Y2F0Y2gob2Ipe2JyZWFrIGF9dmFyIGM9Yi50b1N0cmluZygpO3ZhciBk PWIuYW5jaG9yTm9kZX1lbHNlIGguc2VsZWN0aW9uJiZoLnNlbGVjdGlvbi5jcmVh dGVSYW5nZSYmCihhPWguc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCksYz1hLnRleHQs ZD1hLnBhcmVudEVsZW1lbnQoKSk7aWYoInN0cmluZyI9PXR5cGVvZiBjKXt0cnl7 Zm9yKDtkJiYxIT1kLm5vZGVUeXBlOylkPWQucGFyZW50Tm9kZX1jYXRjaChvYil7 YnJlYWsgYX1kJiZxYShkKXx8UShkLCEwKXx8Yz09amF8fChqYT1jLEooeixbbigp LGNdKSl9fX1mdW5jdGlvbiBWKGEpe3ZhciBiPXYoKSxjPWItaWE7aWYoISgxMD5j KSl7dmFyIGQ9Qy5nZXRQb3MoYSksZT1kYVswXS1kWzBdLGY9ZGFbMV0tZFsxXSxl PWUqZStmKmY7MD49ZXx8MTY+ZSYmMTAwPmN8fDIwPmMmJjI1Nj5lfHwoaWE9Yixk YT1kLFUoYSkpfX1mdW5jdGlvbiBMKCl7dmFyIGE9bS5nZXREb2N1bWVudFNjcm9s bCgpLGI9digpOzEwPmItYWF8fDEwPk1hdGguYWJzKGFbMF0tZWFbMF0pJiYxMD5N YXRoLmFicyhhWzFdLWVhWzFdKXx8KGFhPWIsZWE9YSxKKEUsW24oKSxhXSkpfWZ1 bmN0aW9uIHUoYSl7aWYoYT1DLmdldFRhcmdldChhKSl7dmFyIGI9Ck1hdGgucmFu ZG9tKCksYz1bYS5zY3JvbGxMZWZ0LGEuc2Nyb2xsVG9wXTtpZihhLmxvY2FsSWQp e2lmKGI9Z2FbYS5sb2NhbElkXSwhYnx8MTA+TWF0aC5hYnMoY1swXS1iWzBdKSYm MTA+TWF0aC5hYnMoY1sxXS1iWzFdKSlyZXR1cm59ZWxzZXtmb3IoO2dhW2JdOyli PU1hdGgucmFuZG9tKCk7YS5sb2NhbElkPWJ9Z2FbYS5sb2NhbElkXT1jO2EhPT1o JiYoQihhKSxKKEcsW24oKSxjLGFdKSl9fWZ1bmN0aW9uIE0oKXtKKEEsW24oKSxt LmdldFZpZXdwb3J0U2l6ZSgpLG0uZ2V0RG9jdW1lbnRTaXplKCldKX1mdW5jdGlv biBEKCl7SihSLFtdLCEwKX1mdW5jdGlvbiBiYShhKXtyZXR1cm4oYS5zaGlmdEtl eT8yOjApfChhLmN0cmxLZXk/NDowKXwoYS5hbHRLZXk/MTowKXwoYS5tZXRhS2V5 Pzg6MCl8KGEuY3RybEtleXx8YS5hbHRLZXk/MTY6MCl9ZnVuY3Rpb24gcWEoYSl7 cmV0dXJuIklOUFVUIj09YS50YWdOYW1lPyJwYXNzd29yZCI9PWEudHlwZXx8YS5u YW1lJiZjYS50ZXN0KGEubmFtZSl8fAphLmlkJiZjYS50ZXN0KGEuaWQpOiExfWZ1 bmN0aW9uIFBhKGEsYixjKXshKGE9Qy5nZXRUYXJnZXQoYSkpfHxxYShhKXx8UShh KXx8KEIoYSksSih5YSxbbigpLGIsYyxhXSkpfWZ1bmN0aW9uIFFhKGEpe3ZhciBi PWEua2V5Q29kZSxjPWJhKGEpO2lmKHszOjEsODoxLDk6MSwxMzoxLDE2OjEsMTc6 MSwxODoxLDE5OjEsMjA6MSwyNzoxLDMzOjEsMzQ6MSwzNToxLDM2OjEsMzc6MSwz ODoxLDM5OjEsNDA6MSw0NToxLDQ2OjEsOTE6MSw5MjoxLDkzOjEsMTA2OjEsMTEw OjEsMTExOjEsMTQ0OjEsMTQ1OjF9W2JdfHwxMTI8PWImJjEyMz49Ynx8OTY8PWIm JjEwNT49Ynx8YyYxNikxOT09YiYmND09KGMmLTE3KSYmKGI9MTQ0KSxQYShhLGIs Y3wxNiksVz0hMSxmLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtXPSEwfSwxKSwhKDY3 PT1iJiZjJjQpfHxjJjF8fGMmMnx8R2EoKX1mdW5jdGlvbiBSYShhKXtXJiYhWiYm MCE9PWEud2hpY2gmJihQYShhLGEuY2hhckNvZGV8fGEua2V5Q29kZSxiYShhKSks Clo9ITAsZi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Wj0hMX0sMSkpfWZ1bmN0aW9u IEdhKCl7a2F8fChrYT0hMCxqYSYmSihwYixbbigpXSksZi5zZXRUaW1lb3V0KGZ1 bmN0aW9uKCl7a2E9ITF9LDEpKX1mdW5jdGlvbiBIYSgpe3JhfHwocmE9ITAsSihx YixbbigpXSkpfWZ1bmN0aW9uIHNhKCl7cmEmJihyYT0hMSxKKEgsW24oKV0pKX1m dW5jdGlvbiBTYShhKXsoIXJhfHxhJiYhYS5mcm9tRWxlbWVudCkmJkhhKCl9ZnVu Y3Rpb24gVGEoYSl7YSYmIWEudG9FbGVtZW50JiZzYSgpfWZ1bmN0aW9uIEFhKGEp e2lmKChhPUMuZ2V0VGFyZ2V0KGEpKSYmL15JTlBVVHxTRUxFQ1R8VEVYVEFSRUF8 QlVUVE9OJC8udGVzdChhLnRhZ05hbWUpKXtpZihhW0ZdKUIoYSk7ZWxzZXt2YXIg Yj1hLmZvcm07aWYoYilmb3IodmFyIGI9Yi5lbGVtZW50cyxjPWIubGVuZ3RoLGQ9 MDtkPGM7ZCsrKS9eSU5QVVR8U0VMRUNUfFRFWFRBUkVBfEJVVFRPTiQvLnRlc3Qo YltkXS50YWdOYW1lKSYmIWJbZF1bRl0mJgpCKGJbZF0pO2Vsc2UgQihhKX1KKG1h LFtuKCksYV0pfX1mdW5jdGlvbiBCYShhKXsoYT1DLmdldFRhcmdldChhKSkmJi9e SU5QVVR8U0VMRUNUfFRFWFRBUkVBfEJVVFRPTiQvLnRlc3QoYS50YWdOYW1lKSYm KEIoYSksSihPLFtuKCksYV0pKX1mdW5jdGlvbiBDYShhKXtpZigoYT1DLmdldFRh cmdldChhKSkmJiFxYShhKSYmIVEoYSkmJi9eSU5QVVR8U0VMRUNUfFRFWFRBUkVB JC8udGVzdChhLnRhZ05hbWUpKXt2YXIgYj0vXihjaGVja2JveHxyYWRpbykkLy50 ZXN0KGEudHlwZSk/YS5jaGVja2VkOmEudmFsdWU7QihhKTtKKGhhLFtuKCksYSxi XSl9fWZ1bmN0aW9uIHRhKGEpe2lmKChhPUMuZ2V0VGFyZ2V0KGEpKSYmIVkoYSkm JiJGT1JNIj09YS5ub2RlTmFtZSl7Zm9yKHZhciBiPWEuZWxlbWVudHMsYz0wO2M8 Yi5sZW5ndGg7YysrKW0uaXNFbXB0eUZpZWxkKGJbY10pfHxCKGJbY10pO0ooTixb bigpLGFdLCEwKX19ZnVuY3Rpb24gSWEoYSl7TCgpO2lmKGEudG91Y2hlcyYmYS50 b3VjaGVzLmxlbmd0aCl7dmFyIGI9CkMuZ2V0VGFyZ2V0KGEpO2lmKGImJmIhPWgp e0IoYik7Zm9yKHZhciBjPTA7YzxhLnRvdWNoZXMubGVuZ3RoO2MrKylKKE5hLFtu KCksInRvdWNoIixiLFthLnRvdWNoZXNbY10ucGFnZVgsYS50b3VjaGVzW2NdLnBh Z2VZXSwwLDBdKX19fWZ1bmN0aW9uIERhKGEpe3ZhciBiPUMuZ2V0VGFyZ2V0KGEp O2lmKGIpe3ZhciBjOyJ3aGVlbCI9PWEudHlwZT9jPTA8YS5kZWx0YVk/MTowPmEu ZGVsdGFZPzI6MDoibW91c2V3aGVlbCI9PWEudHlwZSYmKGM9MDxhLndoZWVsRGVs dGE/MjowPmEud2hlZWxEZWx0YT8xOjApO2MmJihCKGIpLEooT2EsW24oKSxiLEMu Z2V0UG9zKGEpLGNdKSl9fWZ1bmN0aW9uIFVhKGEpeyhhPUMuZ2V0VGFyZ2V0KGEp KSYmIkJPRFkiPT1hLnRhZ05hbWUmJm5hLmFwcGVuZChbXSwhMCl9dmFyIG5hPW5l dyBFYSh7cHJvdG9jb2w6YSxnbG9iYWxDb25maWc6ZSxjb3VudGVySWQ6Yixjb3Vu dGVyVHlwZTpjLG1ldGE6e3VybDp4KCkuaHJlZixoaXRJZDpkLHRpbWV6b25lOnVh LAp0aW1lc3RhbXA6dmF9fSkscmI9e0E6MSxBQkJSOjIsQUNST05ZTTozLEFERFJF U1M6NCxBUFBMRVQ6NSxBUkVBOjYsQjo3LEJBU0U6OCxCQVNFRk9OVDo5LEJETzox MCxCSUc6MTEsQkxPQ0tRVU9URToxMixCT0RZOjEzLEJSOjE0LEJVVFRPTjoxNSxD QVBUSU9OOjE2LENFTlRFUjoxNyxDSVRFOjE4LENPREU6MTksQ09MOjIwLENPTEdS T1VQOjIxLEREOjIyLERFTDoyMyxERk46MjQsRElSOjI1LERJVjoyNixETDoyNyxE VDoyOCxFTToyOSxGSUVMRFNFVDozMCxGT05UOjMxLEZPUk06MzIsRlJBTUU6MzMs RlJBTUVTRVQ6MzQsSDE6MzUsSDI6MzYsSDM6MzcsSDQ6MzgsSDU6MzksSDY6NDAs SEVBRDo0MSxIUjo0MixIVE1MOjQzLEk6NDQsSUZSQU1FOjQ1LElNRzo0NixJTlBV VDo0NyxJTlM6NDgsSVNJTkRFWDo0OSxLQkQ6NTAsTEFCRUw6NTEsTEVHRU5EOjUy LExJOjUzLExJTks6NTQsTUFQOjU1LE1FTlU6NTYsTUVUQTo1NyxOT0ZSQU1FUzo1 OCxOT1NDUklQVDo1OSxPQkpFQ1Q6NjAsCk9MOjYxLE9QVEdST1VQOjYyLE9QVElP Tjo2MyxQOjY0LFBBUkFNOjY1LFBSRTo2NixROjY3LFM6NjgsU0FNUDo2OSxTQ1JJ UFQ6NzAsU0VMRUNUOjcxLFNNQUxMOjcyLFNQQU46NzMsU1RSSUtFOjc0LFNUUk9O Rzo3NSxTVFlMRTo3NixTVUI6NzcsU1VQOjc4LFRBQkxFOjc5LFRCT0RZOjgwLFRE OjgxLFRFWFRBUkVBOjgyLFRGT09UOjgzLFRIOjg0LFRIRUFEOjg1LFRJVExFOjg2 LFRSOjg3LFRUOjg4LFU6ODksVUw6OTAsVkFSOjkxLE5PSU5ERVg6MTAwfSxNYT0w LFM9MDtsKDApO3ZhciBUPTEsaWE9MCxkYT1bMCwwXSxhYT0wLGVhPVswLDBdLGdh PXt9LGNhPS9eKHBhc3N3b3JkfHBhc3N3ZHxwc3dkKSQvLFc9ITAsWj0hMSxqYT0i IixrYT0hMSxyYT0hMCxYPXYoKSxGPSJtZXRyaWthSWRfIitNYXRoLnJhbmRvbSgp LHphPXt9LEZhPSI6c3VibWl0IitNYXRoLnJhbmRvbSgpO2lmKCFmLmlzTWV0cmlr YVBsYXllcigpKXtrLm9uKGgsIm1vdXNlbW92ZSIsVik7ay5vbihoLCJjbGljayxk YmxjbGljayxtb3VzZWRvd24iLApVKTtrLm9uKGgsIm1vdXNldXAiLGZhKTtrLm9u KGcsInNjcm9sbCIsTCk7aWYoIm9ubW91c2V3aGVlbCJpbiBoKWsub24oaCwibW91 c2V3aGVlbCIsRGEpO2Vsc2Ugay5vbihoLCJ3aGVlbCIsRGEpO2sub24oZywiYmVm b3JldW5sb2FkIixEKTtpZighc2Ipay5vbihnLCJ1bmxvYWQiLEQpO2sub24oZywi cmVzaXplIixNKTtrLm9uKGgsImtleWRvd24iLFFhKTtrLm9uKGgsImtleXByZXNz IixSYSk7ay5vbihoLCJjb3B5IixHYSk7ay5vbihoLCJ0b3VjaG1vdmUsdG91Y2hz dGFydCIsSWEpO2lmKGguYm9keSlrLm9uKGgsIm1vdXNlbGVhdmUiLFVhKTtoLmF0 dGFjaEV2ZW50JiYhZy5vcGVyYT8oay5vbihoLCJmb2N1c2luIixTYSksay5vbiho LCJmb2N1c291dCIsVGEpKTooay5vbihnLCJmb2N1cyIsSGEpLGsub24oZywiYmx1 ciIsc2EpLGsub24oaCwiYmx1ciIsc2EpKTtoLmFkZEV2ZW50TGlzdGVuZXI/KGsu b24oaCwic2Nyb2xsIix1KSxrLm9uKGgsImZvY3VzIixBYSksay5vbihoLAoiYmx1 ciIsQmEpLGsub24oaCwiY2hhbmdlIixDYSksay5vbihoLCJzdWJtaXQiLHRhKSk6 aC5hdHRhY2hFdmVudCYmKGsub24oaCwiZm9jdXNpbiIsQWEpLGsub24oaCwiZm9j dXNvdXQiLEJhKSxmdW5jdGlvbigpe2Zvcih2YXIgYT1oLmdldEVsZW1lbnRzQnlU YWdOYW1lKCJmb3JtIiksYj0wO2I8YS5sZW5ndGg7YisrKXtmb3IodmFyIGM9YVti XS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLGQ9MDtkPGMubGVuZ3RoO2QrKylp ZigvXklOUFVUfFNFTEVDVHxURVhUQVJFQSQvLnRlc3QoY1tkXS50YWdOYW1lKSlr Lm9uKGNbZF0sImNoYW5nZSIsQ2EpO2sub24oYVtiXSwic3VibWl0Iix0YSl9fSgp KTsoZnVuY3Rpb24oKXt2YXIgYT1oLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3Jt Iik7aWYoYS5sZW5ndGgpZm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBj PWFbYl0uc3VibWl0O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBjfHwib2JqZWN0Ij09 dHlwZW9mIGMmJi9eXHMqZnVuY3Rpb24gc3VibWl0XChcKS8udGVzdChTdHJpbmco YykpKWFbYl1bRmFdPQpjLGFbYl0uc3VibWl0PWZ1bmN0aW9uKCl7dGEoe3Rhcmdl dDp0aGlzfSk7cmV0dXJuIHRoaXNbRmFdKCl9fX0pKCk7IjA6MCIhPW0uZ2V0RG9j dW1lbnRTY3JvbGwoKS5qb2luKCI6IikmJkwoKTtNKCl9cmV0dXJue3N0YXJ0OmZ1 bmN0aW9uKCl7bmEuYWN0aXZhdGUoKX0sc3RvcDpmdW5jdGlvbigpe25hLmNsZWFy KCk7ay51bihoLCJtb3VzZW1vdmUiLFYpO2sudW4oaCwiY2xpY2ssZGJsY2xpY2ss bW91c2Vkb3duIixVKTtrLnVuKGgsIm1vdXNldXAiLGZhKTtrLnVuKGgsIm1vdXNl d2hlZWwiLERhKTtrLnVuKGgsIndoZWVsIixEYSk7ay51bihnLCJzY3JvbGwiLEwp O2sudW4oZywiYmVmb3JldW5sb2FkIixEKTtrLnVuKGcsInVubG9hZCIsRCk7ay51 bihnLCJyZXNpemUiLE0pO2sudW4oaCwia2V5ZG93biIsUWEpO2sudW4oaCwia2V5 cHJlc3MiLFJhKTtrLnVuKGgsImNvcHkiLEdhKTtrLnVuKGgsInRvdWNobW92ZSIs SWEpO2sudW4oaCwidG91Y2hzdGFydCIsSWEpO2guYm9keSYmCmsudW4oaCwibW91 c2VsZWF2ZSIsVWEpO2sudW4oaCwiZm9jdXNpbiIsU2EpO2sudW4oaCwiZm9jdXNv dXQiLFRhKTtrLnVuKGcsImZvY3VzIixIYSk7ay51bihnLCJibHVyIixzYSk7ay51 bihoLCJibHVyIixzYSk7aC5yZW1vdmVFdmVudExpc3RlbmVyPyhrLnVuKGgsInNj cm9sbCIsdSksay51bihoLCJmb2N1cyIsQWEpLGsudW4oaCwiYmx1ciIsQmEpLGsu dW4oaCwiY2hhbmdlIixDYSksay51bihoLCJzdWJtaXQiLHRhKSk6aC5kZXRhY2hF dmVudCYmKGsudW4oaCwiZm9jdXNpbiIsQWEpLGsudW4oaCwiZm9jdXNvdXQiLEJh KSxmdW5jdGlvbigpe2Zvcih2YXIgYT1oLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJm b3JtIiksYj0wO2I8YS5sZW5ndGg7YisrKXtmb3IodmFyIGM9YVtiXS5nZXRFbGVt ZW50c0J5VGFnTmFtZSgiKiIpLGQ9MDtkPGMubGVuZ3RoO2QrKykvXklOUFVUfFNF TEVDVHxURVhUQVJFQSQvLnRlc3QoY1tkXS50YWdOYW1lKSYmay51bihjW2RdLCJj aGFuZ2UiLENhKTsKay51bihhW2JdLCJzdWJtaXQiLHRhKX19KCkpOyhmdW5jdGlv bigpe2Zvcih2YXIgYT1oLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIiksYj0w O2I8YS5sZW5ndGg7YisrKWFbYl1bRmFdJiYoYVtiXS5zdWJtaXQ9YVtiXVtGYV0p fSkoKX0sdXBsb2FkUGFnZXM6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKCl7dmFy IGU7ay51bihoLCJET01Db250ZW50TG9hZGVkIixjKTtrLnVuKGcsImxvYWQiLGMp O2Zvcih2YXIgZj1hLnNwbGl0KC9cbi8pLGw9eCgpLmhyZWYsdj0vcmVnZXhwOi8s bj0wO248Zi5sZW5ndGg7bisrKWlmKGU9ZltuXSlpZih2LnRlc3QoZSkpe2U9d2Eo ZS5yZXBsYWNlKHYsIiIpKTt0cnl7dmFyIHU9bmV3IFJlZ0V4cChlKX1jYXRjaChP Yil7fWlmKHUmJnUudGVzdChsKSl7ZC51cGxvYWRQYWdlKGIpO2JyZWFrfX1lbHNl IGlmKC0xIT09bC5pbmRleE9mKGUpKXtkLnVwbG9hZFBhZ2UoYik7YnJlYWt9fXZh ciBkPXRoaXM7ImNvbXBsZXRlIj09aC5yZWFkeVN0YXRlPwpjKCk6KGsub24oaCwi RE9NQ29udGVudExvYWRlZCIsYyksay5vbihnLCJsb2FkIixjKSl9LHVwbG9hZFBh Z2U6cihmdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZy50b1N0YXRp Y0hUTUwmJi0xPGcudG9TdGF0aWNIVE1MLnRvU3RyaW5nKCkuaW5kZXhPZigiTm9T Y3JpcHQiKSlyZXR1cm4hMTt2YXIgZj1oLmRvY3VtZW50RWxlbWVudDtpZihmJiYx OUU0PCgiIitmLmlubmVySFRNTCkubGVuZ3RoKXJldHVybiExO3ZhciBsPWcuWE1M SHR0cFJlcXVlc3Q/bmV3IGcuWE1MSHR0cFJlcXVlc3Q6bmV3IEFjdGl2ZVhPYmpl Y3QoIk1zeG1sMi5YTUxIVFRQIiksdj1tLmdldERvY3VtZW50Q2hhcnNldCgpLG49 InRleHQvaHRtbCIrKHY/IjtjaGFyc2V0XHgzZCIrdjoiIiksdT1uZXcgdGIoe3By b3RvY29sOmEsY291bnRlcklkOmIsY291bnRlclR5cGU6Y30pO2lmKCJodG1sIj09 ZSlyZXR1cm4gZT1uZXcgUmVnRXhwKCJceDNjc2NyaXB0IFteXHgzZV0qPy8vIitL Lmhvc3QucmVwbGFjZSgvXC4vZywKIlxcXFwuIikrIi93YXRjaC8uKj9ceDNjL3Nj cmlwdFx4M2UiLCJnaSIpLHUuc2VuZENvbnRlbnQobS5nZXREb2N1bWVudEhUTUwo KS5yZXBsYWNlKGUsIiIpLG4sZCx1YSx2YSksITA7bCYmKGwub3BlbigiZ2V0Iix4 KCkuaHJlZiwhMCksbC5vbnJlYWR5c3RhdGVjaGFuZ2U9cihmdW5jdGlvbigpe2lm KDQ9PWwucmVhZHlTdGF0ZSl7dmFyIGE9bC5nZXRSZXNwb25zZUhlYWRlcigiY29u dGVudC10eXBlIil8fCIiO3YmJi0xPT09YS5pbmRleE9mKCJjaGFyc2V0XHgzZCIp JiYoYT1uKTt1LnNlbmRDb250ZW50KGwucmVzcG9uc2VUZXh0LGEsZCx1YSx2YSl9 fSwidXBkYXRlUGFnZS4xIiksbC5vdmVycmlkZU1pbWVUeXBlJiZ2JiZsLm92ZXJy aWRlTWltZVR5cGUobiksbC5zZW5kKG51bGwpKTtyZXR1cm4hMH0sInVwbG9hZFBh Z2UiKX19ZnVuY3Rpb24geCgpe2Zvcih2YXIgYT17fSxiPSJoYXNoIGhvc3QgaG9z dG5hbWUgaHJlZiBwYXRobmFtZSBwb3J0IHByb3RvY29sIHNlYXJjaCIuc3BsaXQo IiAiKSwKYz1iLmxlbmd0aCxkPWMsZSxmO2QtLTspYVtiW2RdXT0iIjt0cnl7Zm9y KGU9Zy5sb2NhdGlvbixkPWM7ZC0tOylmPWJbZF0sYVtmXT0iIitlW2ZdfWNhdGNo KHYpe0UmJihhPUUpfXJldHVybiBhfWZ1bmN0aW9uIHdhKGEpe3JldHVybiBhPygi IithKS5yZXBsYWNlKC9eXHMrLywiIikucmVwbGFjZSgvXHMrJC8sIiIpOiIifWZ1 bmN0aW9uIFZhKCl7cmV0dXJuLTEhPXgoKS5ob3N0bmFtZS5zZWFyY2goLyg/Ol58 XC4pKD86eWF8eWFuZGV4KVwuKD86XHcrfGNvbT9cLlx3KykkLyl9ZnVuY3Rpb24g bGEoYSl7cmV0dXJuLTEhPT0oIiIrZy5uYXZpZ2F0b3IudXNlckFnZW50KS50b0xv d2VyQ2FzZSgpLnNlYXJjaChhKX1mdW5jdGlvbiBXYShhKXtyZXR1cm4gd2EoYSYm YS5pbm5lckhUTUwmJmEuaW5uZXJIVE1MLnJlcGxhY2UoLzxcLz9bXj5dKz4vZ2ks IiIpKX1mdW5jdGlvbiBYYShhLGIpe3ZhciBjO2lmKCFhfHwhYilyZXR1cm4hMTt2 YXIgZD1bXTtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKWQucHVzaChiW2NdLnJlcGxh Y2UoL1xeL2csCiJcXF4iKS5yZXBsYWNlKC9cJC9nLCJcXCQiKS5yZXBsYWNlKC9c Li9nLCJcXC4iKS5yZXBsYWNlKC9cWy9nLCJcXFsiKS5yZXBsYWNlKC9cXS9nLCJc XF0iKS5yZXBsYWNlKC9cfC9nLCJcXHwiKS5yZXBsYWNlKC9cKC9nLCJcXCgiKS5y ZXBsYWNlKC9cKS9nLCJcXCkiKS5yZXBsYWNlKC9cPy9nLCJcXD8iKS5yZXBsYWNl KC9cKi9nLCJcXCoiKS5yZXBsYWNlKC9cKy9nLCJcXCsiKS5yZXBsYWNlKC9cey9n LCJcXHsiKS5yZXBsYWNlKC9cfS9nLCJcXH0iKSk7cmV0dXJuKG5ldyBSZWdFeHAo IlxcLigiK2Quam9pbigifCIpKyIpJCIsImkiKSkudGVzdChhKX1mdW5jdGlvbiB1 YihhKXthPWEudGFyZ2V0fHxhLnNyY0VsZW1lbnQ7dmFyIGI7aWYoIWEpcmV0dXJu ITE7Mz09YS5ub2RlVHlwZSYmKGE9YS5wYXJlbnROb2RlKTtmb3IoYj1hJiZhLm5v ZGVOYW1lJiZhLm5vZGVOYW1lLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTthJiZh LnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5ub2RlTmFtZSYmCigiYSIhPWImJiJh cmVhIiE9Ynx8IWEuaHJlZik7KWI9KGE9YS5wYXJlbnROb2RlKSYmYS5ub2RlTmFt ZSYmYS5ub2RlTmFtZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGEu aHJlZj9hOiExfWZ1bmN0aW9uIHZiKGEsYil7cmV0dXJuKGE/YS5yZXBsYWNlKC9e d3d3XC4vLCIiKToiIikudG9Mb3dlckNhc2UoKT09KGI/Yi5yZXBsYWNlKC9ed3d3 XC4vLCIiKToiIikudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiB3YihhLGIpe2Z1bmN0 aW9uIGMoYSl7YT1hLnNwbGl0KCI6Iik7YT1hWzFdfHwiIjthPWEucmVwbGFjZSgv XlwvKi8sIiIpLnJlcGxhY2UoL153d3dcLi8sIiIpO3JldHVybiBhLnNwbGl0KCIv IilbMF19cmV0dXJuIGEmJmI/YyhhKT09YyhiKTphfHxiPyExOiEwfWZ1bmN0aW9u IFphKCl7dmFyIGE9Zy5wZXJmb3JtYW5jZXx8Zy53ZWJraXRQZXJmb3JtYW5jZSxi PWEmJmEudGltaW5nLGMsZD1bXTtpZihiJiYoYz1iLm5hdmlnYXRpb25TdGFydCkp Zm9yKGQ9W2IuZG9tYWluTG9va3VwRW5kLQpiLmRvbWFpbkxvb2t1cFN0YXJ0LGIu Y29ubmVjdEVuZC1iLmNvbm5lY3RTdGFydCxiLnJlc3BvbnNlU3RhcnQtYi5yZXF1 ZXN0U3RhcnQsYi5yZXNwb25zZUVuZC1iLnJlc3BvbnNlU3RhcnQsYi5mZXRjaFN0 YXJ0LWMsYi5yZWRpcmVjdEVuZC1iLnJlZGlyZWN0U3RhcnQsYi5yZWRpcmVjdENv dW50fHxhLm5hdmlnYXRpb24mJmEubmF2aWdhdGlvbi5yZWRpcmVjdENvdW50XSxk LnB1c2goYi5kb21JbnRlcmFjdGl2ZSYmYi5kb21Mb2FkaW5nP2IuZG9tSW50ZXJh Y3RpdmUtYi5kb21Mb2FkaW5nOm51bGwpLGQucHVzaChiLmRvbUNvbnRlbnRMb2Fk ZWRFdmVudFN0YXJ0JiZiLmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZD9iLmRvbUNv bnRlbnRMb2FkZWRFdmVudEVuZC1iLmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0 Om51bGwpLGQucHVzaChiLmRvbUNvbXBsZXRlP2IuZG9tQ29tcGxldGUtYzpudWxs KSxkLnB1c2goYi5sb2FkRXZlbnRTdGFydD9iLmxvYWRFdmVudFN0YXJ0LWM6bnVs bCksCmQucHVzaChiLmxvYWRFdmVudFN0YXJ0JiZiLmxvYWRFdmVudEVuZD9iLmxv YWRFdmVudEVuZC1iLmxvYWRFdmVudFN0YXJ0Om51bGwpLGQucHVzaChiLmRvbUNv bnRlbnRMb2FkZWRFdmVudFN0YXJ0P2IuZG9tQ29udGVudExvYWRlZEV2ZW50U3Rh cnQtYzpudWxsKSxhPTA7YTxkLmxlbmd0aDthKyspYj1kW2FdLG51bGwhPT1iJiYo MD5ifHwzNkU1PGIpJiYoZFthXT1udWxsKTtyZXR1cm4gZH1mdW5jdGlvbiB4Yihh KXt2YXIgYj1bXSxjPWEuX2xhc3RQZXJmb3JtYW5jZVRpbWluZyxkPVphKCksZTtp ZihjKXt2YXIgZj0wO2ZvcihlPWMubGVuZ3RoO2Y8ZTtmKyspbnVsbD09PWRbZl0/ Yi5wdXNoKGRbZl0pOmIucHVzaChjW2ZdPT09ZFtmXT8iIjpkW2ZdKX1lbHNlIGI9 ZDthLl9sYXN0UGVyZm9ybWFuY2VUaW1pbmc9ZDtyZXR1cm4gYi5qb2luKCIsIil9 ZnVuY3Rpb24geWIoKXtpZigib2JqZWN0Ij09dHlwZW9mIGcuY2hyb21lJiZnLmNo cm9tZS5sb2FkVGltZXMpe3ZhciBhPWcuY2hyb21lLmxvYWRUaW1lcygpOwppZihh LnJlcXVlc3RUaW1lJiZhLmZpcnN0UGFpbnRUaW1lJiZnLnBlcmZvcm1hbmNlJiZn LnBlcmZvcm1hbmNlLnRpbWluZylyZXR1cm4gTWF0aC5yb3VuZCgxRTMqYS5maXJz dFBhaW50VGltZS1nLnBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQp fWVsc2UgaWYoZy5wZXJmb3JtYW5jZSYmZy5wZXJmb3JtYW5jZS50aW1pbmcmJihh PWcucGVyZm9ybWFuY2UudGltaW5nLGEubmF2aWdhdGlvblN0YXJ0JiZhLm1zRmly c3RQYWludCkpcmV0dXJuIGEubXNGaXJzdFBhaW50LWEubmF2aWdhdGlvblN0YXJ0 O3JldHVybiBudWxsfWZ1bmN0aW9uIHpiKGEpe3ZhciBiPWgucmVmZXJyZXJ8fCIi LGMsZDtpZigobmV3IFJlZ0V4cCgiXmh0dHBzPzovLyIrRS5ob3N0KyIvIikpLnRl c3QoYikpcmV0dXJuITE7dmFyIGU9YS5wYXR0ZXJucztmb3IoYz0wO2M8ZS5sZW5n dGg7YysrKXt2YXIgbD1uZXcgUmVnRXhwKGVbY10sImkiKTtpZihiLm1hdGNoKGwp KWlmKGw9YS5wYXJhbXN8fFtdLApsLmxlbmd0aCl7dmFyIGc9Zi5zYWZlRGVjb2Rl VVJJQ29tcG9uZW50KChSZWdFeHAuJDF8fCIiKS5yZXBsYWNlKC9cKy9nLCIlMjAi KSk7Zm9yKGQ9MDtkPGwubGVuZ3RoO2QrKylpZihnPT1mLnNhZmVEZWNvZGVVUklD b21wb25lbnQobFtkXSkpcmV0dXJuITB9ZWxzZSByZXR1cm4hMH1yZXR1cm4hMX1m dW5jdGlvbiAkYShhLGIpe3ZhciBjPSExLGQ7aWYoYSYmInN0cmluZyIhPXR5cGVv ZiBhJiZhLmxlbmd0aClmb3IoZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hW2Rd LnNlbGVjdG9yO3ZhciBmPWFbZF0udGV4dDt2YXIgZz1lLmNoYXJBdCgwKTtlPWUu c2xpY2UoMSk7aWYoIiMiPT1nKXtpZihnPWguZ2V0RWxlbWVudEJ5SWQoZSkpYz0h MCxiJiZWLnVuc2hpZnQoW2csZy5pbm5lckhUTUxdKSxnLmlubmVySFRNTD1mfWVs c2UgaWYoIi4iPT1nKWZvcihnPW0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKSxl PTA7ZTxnLmxlbmd0aDtlKyspe3ZhciBjPSEwLG49Z1tlXSxrPWY7YiYmClYudW5z aGlmdChbbixuLmlubmVySFRNTF0pO24uaW5uZXJIVE1MPWt9fXJldHVybiBjfWZ1 bmN0aW9uIGFiKCl7dmFyIGE7Zm9yKGE9MDthPFYubGVuZ3RoO2ErKylWW2FdWzBd LmlubmVySFRNTD1WW2FdWzFdfWZ1bmN0aW9uIEFiKGEsYil7dmFyIGMsZD0iIjth PWEmJmEucmVwbGFjZSgvXlw/LywiIik7Yj1iJiZiLnJlcGxhY2UoL14jLywiIil8 fCIiO2lmKGEpe3ZhciBlPWEuc3BsaXQoIlx4MjYiKTtmb3IoYz0wO2M8ZS5sZW5n dGg7YysrKXt2YXIgbD1lW2NdLnNwbGl0KCJceDNkIik7Il9vcGVuc3RhdCI9PT1s WzBdJiYoZD1sWzFdKX19dmFyIGc9Yi5zcGxpdCgiPyIpO2ZvcihjPTA7YzxnLmxl bmd0aDtjKyspe3ZhciBuPWdbY10uc3BsaXQoIlx4MjYiKTtmb3IoZT0wO2U8bi5s ZW5ndGg7ZSsrKWw9bltlXS5zcGxpdCgiXHgzZCIpLCJfb3BlbnN0YXQiPT09bFsw XSYmKGQ9bFsxXSl9ZCYmKGQ9LTE8ZC5pbmRleE9mKCI7Iik/Zi5zYWZlRGVjb2Rl VVJJQ29tcG9uZW50KGQpOgpjYS5kZWNvZGUoTi5kZWNvZGUoZC5yZXBsYWNlKC9b LSpfXS9nLGZ1bmN0aW9uKGEpe3JldHVybnsiKiI6IisiLCItIjoiLyIsXzoiXHgz ZCJ9W2FdfHxhfSkpKSk7cmV0dXJuIGQmJihjPWQuc3BsaXQoIjsiKSw0PT1jLmxl bmd0aCk/e3NlcnZpY2U6Y1swXSxjYW1wYWlnbjpjWzFdLGFkOmNbMl0sc291cmNl OmNbM119Om51bGx9dmFyIEs9e3Byb3RvY29sOiJodHRwczoiLGJhc2VVcmw6Im1j LnlhbmRleC4iLHlhbmRleFdoaXRlTGlzdFRsZDoicnUgdWEgYnkga3ogYXoga2cg bHYgbWQgdGogdG0gdXogZWUgZnIgY28uaWwgY29tLmdlIGNvbS5hbSBjb20udHIi LnNwbGl0KCIgIil9O0suaG9zdD1LLmJhc2VVcmwrInJ1Ijt2YXIgZj17bWl4aW46 ZnVuY3Rpb24oYSl7dmFyIGIsYztmb3IoYj0xO2I8YXJndW1lbnRzLmxlbmd0aDti KyspaWYoYXJndW1lbnRzW2JdKXtmb3IoYyBpbiBhcmd1bWVudHNbYl0pYXJndW1l bnRzW2JdLmhhc093blByb3BlcnR5KGMpJiYoYVtjXT1hcmd1bWVudHNbYl1bY10p Owphcmd1bWVudHNbYl0uaGFzT3duUHJvcGVydHkoInRvU3RyaW5nIikmJihhLnRv U3RyaW5nPWFyZ3VtZW50c1tiXS50b1N0cmluZyl9cmV0dXJuIGF9fSxBPWZ1bmN0 aW9uKGEpe2E9YXx8e307Zi5taXhpbih0aGlzLGEpO3RoaXMuX2luaXRDb21wb25l bnQoKX07QS5wcm90b3R5cGUuX2luaXRDb21wb25lbnQ9ZnVuY3Rpb24oKXt9O0Eu aW5oZXJpdD1mdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPSJmdW5jdGlvbiI9PXR5 cGVvZiB0aGlzP3RoaXM6T2JqZWN0O2EuaGFzT3duUHJvcGVydHkoImNvbnN0cnVj dG9yIil8fChhLmNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7Yi5hcHBseSh0aGlzLGFy Z3VtZW50cyl9KTt2YXIgYz1mdW5jdGlvbigpe307Yy5wcm90b3R5cGU9Yi5wcm90 b3R5cGU7YS5jb25zdHJ1Y3Rvci5wcm90b3R5cGU9bmV3IGM7Zi5taXhpbihhLmNv bnN0cnVjdG9yLnByb3RvdHlwZSxhKTthLmNvbnN0cnVjdG9yLnByb3RvdHlwZS5j b25zdHJ1Y3Rvcj1hLmNvbnN0cnVjdG9yOwphLmNvbnN0cnVjdG9yLnN1cGVyY2xh c3M9Yi5wcm90b3R5cGU7YS5jb25zdHJ1Y3Rvci5pbmhlcml0PUEuaW5oZXJpdDty ZXR1cm4gYS5jb25zdHJ1Y3Rvcn07Zi5pc0FycmF5PWZ1bmN0aW9uKGEpe3JldHVy biJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXko YSk6IltvYmplY3QgQXJyYXldIj09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5j YWxsKGEpfTtmLm1lcmdlQXJyYXlzPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1hcmd1 bWVudHMubGVuZ3RoO2ZvcihiPTE7YjxkO2IrKyl7dmFyIGU9YXJndW1lbnRzW2Jd O2lmKGYuaXNBcnJheShlKXx8ZSYmIltvYmplY3QgQXJndW1lbnRzXSI9PT1lLnRv U3RyaW5nKCkpZm9yKGM9MDtjPGUubGVuZ3RoO2MrKylhW2EubGVuZ3RoXT1lW2Nd fXJldHVybiBhfTtmLmdldE5hdGl2ZUZ1bmN0aW9uPWZ1bmN0aW9uKGEsYil7dmFy IGM7Yj1ifHxnO3JldHVybihjPWIuY29uc3RydWN0b3ImJmIuY29uc3RydWN0b3Iu cHJvdG90eXBlJiYKYi5jb25zdHJ1Y3Rvci5wcm90b3R5cGVbYV18fGJbYV0pJiYi YXBwbHkiaW4gYz9mdW5jdGlvbigpe3JldHVybiBjLmFwcGx5KGIsYXJndW1lbnRz KX06ZnVuY3Rpb24oKXt9fTtmLnNldFRpbWVvdXQ9ZnVuY3Rpb24oYSxiLGMpe3Jl dHVybiBmLmdldE5hdGl2ZUZ1bmN0aW9uKCJzZXRUaW1lb3V0IikocihhLGN8fCJz ZXRUaW1lb3V0IiksYil9O2YuZGVmZXI9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1 cm4gZi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5hcHBseShjLGR8fFtdKX0sYixl KX07Zi50aHJvdHRsZT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxsLGc7cmV0dXJu IGZ1bmN0aW9uKCl7bD1hcmd1bWVudHM7Zz10aGlzO2V8fGZ1bmN0aW9uKCl7ZT1u dWxsO2wmJihhLmFwcGx5KGN8fGcsbCksbD1udWxsLGU9Zi5zZXRUaW1lb3V0KGFy Z3VtZW50cy5jYWxsZWUsYixkKSl9KCl9fTt2YXIgYmI9QS5pbmhlcml0KHtzdG9y YWdlOm51bGwsc3RvcmFnZUtleToiZGF0YUJ1ZmZlciIsCm1heEJ1ZmZlclNpemU6 MjU1LGZsdXNoVGltZW91dDoxRTQsc3RhcnRCdWZmZXJUaW1lOjAsYWN0aXZlOiEw LG1ldGE6bnVsbCxvbkZsdXNoOmZ1bmN0aW9uKCl7fSxvbkZsdXNoQ3R4Om51bGws YnVmZmVyRXhwaXJlVGltZTo4NjRFNSxfaW5pdENvbXBvbmVudDpmdW5jdGlvbigp e3ZhciBhO2JiLnN1cGVyY2xhc3MuX2luaXRDb21wb25lbnQuYXBwbHkodGhpcyxh cmd1bWVudHMpO3RoaXMuX2RhdGE9W107dGhpcy5fcGFja2V0TnVtYmVyPTA7dGhp cy5fZmx1c2hUSUQ9bnVsbDt0aGlzLl9zYXZlVG9TdG9yYWdlVGhyb3R0bGVkPWYu dGhyb3R0bGUodGhpcy5fc2F2ZVRvU3RvcmFnZSwzMDAsdGhpcywiRGF0YUJ1ZmZl ci5fc2F2ZVRvU3RvcmFnZSIpO3RoaXMuc3RvcmFnZSYmKChhPXRoaXMuc3RvcmFn ZS5nZXQodGhpcy5zdG9yYWdlS2V5KSkmJmEuZGF0YSYmYS5tZXRhJiZhLnRpbWUm JmEudGltZSt0aGlzLmJ1ZmZlckV4cGlyZVRpbWU+K25ldyBEYXRlJiZ0aGlzLm9u Rmx1c2guY2FsbCh0aGlzLm9uRmx1c2hDdHh8fAp0aGlzLGEuZGF0YSxhLm1ldGEs YS5wbnVtKSx0aGlzLmNsZWFyKCkpfSxnZXRGbHVzaFNpemU6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5fZGF0YS5sZW5ndGh9LGFwcGVuZDpmdW5jdGlvbihhLGIpe2Yu bWVyZ2VBcnJheXModGhpcy5fZGF0YSxhKTt0aGlzLl9zYXZlVG9TdG9yYWdlVGhy b3R0bGVkKCk7dGhpcy5hY3RpdmUmJigoYnx8dGhpcy5nZXRGbHVzaFNpemUoKT49 dGhpcy5tYXhCdWZmZXJTaXplKSYmdGhpcy5fZmx1c2goKSx0aGlzLl9mbHVzaFRJ RHx8KHRoaXMuX2ZsdXNoVElEPWYuZGVmZXIodGhpcy5fZmx1c2gsdGhpcy5mbHVz aFRpbWVvdXQsdGhpcyxbXSwiRGF0YUJ1ZmZlci5fZmx1c2giKSkpfSxhY3RpdmF0 ZTpmdW5jdGlvbigpe3RoaXMuYWN0aXZlfHwodGhpcy5hY3RpdmU9ITAsdGhpcy5h cHBlbmQoW10pKX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLl9kYXRhLmxlbmd0aD0w O3RoaXMuX2ZsdXNoVElEPW51bGw7dGhpcy5zdG9yYWdlJiZ0aGlzLnN0b3JhZ2Uu cmVtb3ZlKHRoaXMuc3RvcmFnZUtleSl9LApfZmx1c2g6ZnVuY3Rpb24oKXtpZigh dGhpcy5fZGF0YS5sZW5ndGgpcmV0dXJuITE7dGhpcy5vbkZsdXNoLmNhbGwodGhp cy5vbkZsdXNoQ3R4fHx0aGlzLHRoaXMuX2RhdGEsdGhpcy5tZXRhLHRoaXMuX3Bh Y2tldE51bWJlcik7dGhpcy5fcGFja2V0TnVtYmVyKys7dGhpcy5jbGVhcigpfSxf c2F2ZVRvU3RvcmFnZTpmdW5jdGlvbigpe3RoaXMuc3RvcmFnZSYmdGhpcy5fZGF0 YS5sZW5ndGgmJnRoaXMuc3RvcmFnZS5zZXQodGhpcy5zdG9yYWdlS2V5LHtkYXRh OnRoaXMuX2RhdGEsbWV0YTp0aGlzLm1ldGEscG51bTp0aGlzLl9wYWNrZXROdW1i ZXIsdGltZTorbmV3IERhdGV9KX19KSx3PXtzdG9yYWdlOnt9LGluaXQ6ZnVuY3Rp b24oKXt2YXIgYT10aGlzO3IoZnVuY3Rpb24oKXtnLllhPWcuWWF8fHt9O2cuWWEu X21ldHJpa2E9Zy5ZYS5fbWV0cmlrYXx8e307YS5zdG9yYWdlPWcuWWEuX21ldHJp a2F9LCIiLCEwKSgpO3JldHVybiB0aGlzfSxzZXRTYWZlOmZ1bmN0aW9uKGEsYil7 dmFyIGM9CnRoaXM7cihmdW5jdGlvbigpe2Muc3RvcmFnZVthXXx8KGMuc3RvcmFn ZVthXT1iKX0sIiIsITApKCk7cmV0dXJuIHRoaXN9LHNldDpmdW5jdGlvbihhLGIp e3IoZnVuY3Rpb24oKXtnLllhLl9tZXRyaWthW2FdPWJ9LCIiLCEwKSgpO3JldHVy biB0aGlzfSxnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gcihmdW5jdGlvbigpe3Zh ciBjPWcuWWEuX21ldHJpa2FbYV07cmV0dXJuIGM9PT1QP2I6Y30sIiIsITApKCl9 fTtmLmZvckVhY2hLZXk9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCBpbiBhKWEu aGFzT3duUHJvcGVydHkoZCkmJmIuY2FsbChjLGQsYVtkXSxhKX07Zi5pc0VxdWFs PWZ1bmN0aW9uKGEsYil7dmFyIGM9ITA7Zi5mb3JFYWNoS2V5KGEsZnVuY3Rpb24o YSxlKXtiLmhhc093blByb3BlcnR5KGEpJiZiW2FdPT09ZXx8KGM9ITEpfSk7aWYo IWMpcmV0dXJuIGM7Zi5mb3JFYWNoS2V5KGIsZnVuY3Rpb24oYixlKXthLmhhc093 blByb3BlcnR5KGIpJiZhW2JdPT09ZXx8KGM9ITEpfSk7CnJldHVybiBjfTt2YXIg az1BLmluaGVyaXQoe19pbml0Q29tcG9uZW50OmZ1bmN0aW9uKCl7ay5zdXBlcmNs YXNzLl9pbml0Q29tcG9uZW50LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLl9s aXN0ZW5lcnM9W119LG9uOmZ1bmN0aW9uKGEsYixjLGQsZSl7ZT1rLl9nZXRPcHRz KGUpO2I9Yi5zcGxpdCgiLCIpO3ZhciBmPWIubGVuZ3RoLHY9dGhpcy5fbGlzdGVu ZXJzLG47Zm9yKG49MDtuPGY7bisrKXt2YXIgaD1iW25dO3ZhciB0PXIoZnVuY3Rp b24oYSl7Yy5jYWxsKGR8fHRoaXMsYXx8Zy5ldmVudCl9LCJvbiIraCk7dlt2Lmxl bmd0aF09W2EsaCxjLGQsZSx0XTthLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVu dExpc3RlbmVyKGgsdCxrLl9wcmVwT3B0cyhlKSk6YS5hdHRhY2hFdmVudCYmYS5h dHRhY2hFdmVudCgib24iK2gsdCl9fSx1bjpmdW5jdGlvbihhLGIsYyxkLGUpe2U9 ay5fZ2V0T3B0cyhlKTt2YXIgbD10aGlzLl9saXN0ZW5lcnMsZz1sLmxlbmd0aCxu O2ZvcihuPQowO248ZztuKyspe3ZhciBoPWxbbl07aWYoaFswXT09YSYmaFsxXT09 YiYmaFsyXT09YyYmaFszXT09ZCYmZi5pc0VxdWFsKGhbNF0sZSkpe2wuc3BsaWNl KG4sMSk7dGhpcy5fcmVtb3ZlTGlzdGVuZXIoYSxiLGhbNV0sZSk7YnJlYWt9fX0s dW5BbGw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9saXN0ZW5lcnMsYj1hLmxlbmd0 aCxjO2ZvcihjPTA7YzxiO2MrKyl7dmFyIGQ9YVtjXTt0aGlzLl9yZW1vdmVMaXN0 ZW5lcihkWzBdLGRbMV0sZFs1XSxkWzRdKX1hLmxlbmd0aD0wfSxfcmVtb3ZlTGlz dGVuZXI6ZnVuY3Rpb24oYSxiLGMsZCl7YS5yZW1vdmVFdmVudExpc3RlbmVyP2Eu cmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMsay5fcHJlcE9wdHMoZCkpOmEuZGV0YWNo RXZlbnQmJmEuZGV0YWNoRXZlbnQoIm9uIitiLGMpfX0pO2suc3VwcG9ydHNQYXNz aXZlPWZ1bmN0aW9uKCl7aWYoay5fc3VwcG9ydHNQYXNzaXZlIT09UClyZXR1cm4g ay5fc3VwcG9ydHNQYXNzaXZlO2suX3N1cHBvcnRzUGFzc2l2ZT0KITE7dHJ5e3Zh ciBhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5j dGlvbigpe2suX3N1cHBvcnRzUGFzc2l2ZT0hMH19KTtnLmFkZEV2ZW50TGlzdGVu ZXIoInRlc3QiLG51bGwsYSl9Y2F0Y2goYil7fXJldHVybiBrLl9zdXBwb3J0c1Bh c3NpdmV9O2suX2dldE9wdHM9ZnVuY3Rpb24oYSl7cmV0dXJuIGYubWl4aW4oe2Nh cHR1cmU6ITAscGFzc2l2ZTohMH0sYXx8e30pfTtrLl9wcmVwT3B0cz1mdW5jdGlv bihhKXtyZXR1cm4gay5zdXBwb3J0c1Bhc3NpdmUoKT9hOiEhYS5jYXB0dXJlfTtr Lm9uPWZ1bmN0aW9uKCl7ay5faW5zdGFuY2V8fChrLl9pbnN0YW5jZT1uZXcgayk7 ay5faW5zdGFuY2Uub24uYXBwbHkoay5faW5zdGFuY2UsYXJndW1lbnRzKX07ay51 bj1mdW5jdGlvbigpe2suX2luc3RhbmNlJiZrLl9pbnN0YW5jZS51bi5hcHBseShr Ll9pbnN0YW5jZSxhcmd1bWVudHMpfTtmLmFzeW5jPWZ1bmN0aW9uKGEsYil7aWYo Zy5wb3N0TWVzc2FnZSl7dmFyIGM9CiJfX3ltX19wcm9taXNlIitNYXRoLnJhbmRv bSgpKyJfIisgK25ldyBEYXRlO3ZhciBkPWZ1bmN0aW9uKGUpe2UuZGF0YT09PWMm JihlLnN0b3BQcm9wYWdhdGlvbiYmZS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbGwo Yiksay51bihnLCJtZXNzYWdlIixkLG51bGwse3Bhc3NpdmU6ITF9KSl9O2sub24o ZywibWVzc2FnZSIsZCxudWxsLHtwYXNzaXZlOiExfSk7Zy5wb3N0TWVzc2FnZShj LCIqIil9ZWxzZSBmLnNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmNhbGwoYil9LDAp fTt2YXIgb2E9QS5pbmhlcml0KHt0cmFuc3BvcnRzOltdLGdsb2JhbENvbmZpZzp3 LHBvc3RQYXJhbXM6W10saXNEaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiB0aGlz Lmdsb2JhbENvbmZpZy5nZXQoIm9vIil9LHNlbmQ6ZnVuY3Rpb24oYSxiLGMsZCl7 dmFyIGU9W2FdLGw9dGhpcyxnPWN8fGZ1bmN0aW9uKCl7fTtsLmlzRGlzYWJsZWQo KT9nLmNhbGwoZCk6ZnVuY3Rpb24gSShhKXtpZihhPHRoaXMudHJhbnNwb3J0cy5s ZW5ndGgpdHJ5e3ZhciBjPQpuZXcgdGhpcy50cmFuc3BvcnRzW2FdKHtwb3N0UGFy YW1zOnRoaXMucG9zdFBhcmFtcyxxdWVyeVN0cmluZ1BhcmFtczp0aGlzLnF1ZXJ5 U3RyaW5nUGFyYW1zfSk7YlsiYnJvd3Nlci1pbmZvIl09Yy5sb2dJbmZvKGJbImJy b3dzZXItaW5mbyJdKTsoZnVuY3Rpb24gbmIoaCl7aD49ZS5sZW5ndGg/SS5jYWxs KHRoaXMsYSsxKTpjLnJlcXVlc3QoZVtoXSxiLGZ1bmN0aW9uKGEsYixjKXthP2cu Y2FsbChkLGIsYyk6Zi5hc3luYyhmdW5jdGlvbigpe25iLmNhbGwobCxoKzEpfSl9 LHRoaXMpfSkuY2FsbCh0aGlzLDApfWNhdGNoKG1iKXt4YShtYiwic2VuZCBieSAi KyhjJiZjLmlkKSksSS5jYWxsKHRoaXMsYSsxKX19LmNhbGwodGhpcywwKX19KSxV PXt9O2Yua2V5cz1mdW5jdGlvbihhKXt2YXIgYixjPVtdO2ZvcihiIGluIGEpYS5o YXNPd25Qcm9wZXJ0eShiKSYmYy5wdXNoKGIpO3JldHVybiBjfTtmLm1hcD1mdW5j dGlvbihhLGIpe3ZhciBjLGQ9W107Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKylkLnB1 c2goYShiW2NdLApjKSk7cmV0dXJuIGR9O1Uuc3RyaW5naWZ5PWZ1bmN0aW9uKGEs Yil7dmFyIGM9W10sZD1ifHx7fSxlPXt9LGw9Zi5rZXlzKGEpLmxlbmd0aCxnLGg7 aWYoZC5sYXN0T3JkZXJpbmchPT1QKWZvcihoPTE7aDw9Yi5sYXN0T3JkZXJpbmcu bGVuZ3RoO2grKyllW2IubGFzdE9yZGVyaW5nW2gtMV1dPWwraDtpZihkLmZpcnN0 T3JkZXJpbmchPT1QKWZvcihoPTA7aDxiLmZpcnN0T3JkZXJpbmcubGVuZ3RoO2gr KyllW2IuZmlyc3RPcmRlcmluZ1toXV09aDtmb3IoZyBpbiBhKWlmKGEuaGFzT3du UHJvcGVydHkoZykpaWYoZD1hW2ddLGYuaXNBcnJheShkKSlmb3IoaD0wO2g8ZC5s ZW5ndGg7aCsrKWMucHVzaCh7a2V5OmcsdmFsdWU6ZW5jb2RlVVJJQ29tcG9uZW50 KGcpKyJceDNkIitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGRbaF0pKX0pO2Vs c2UgYy5wdXNoKHtrZXk6Zyx2YWx1ZTplbmNvZGVVUklDb21wb25lbnQoZykrIlx4 M2QiK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZCkpfSk7CmMuc29ydChmdW5j dGlvbihhLGIpe3ZhciBjPWVbYS5rZXldLGQ9ZVtiLmtleV07InVuZGVmaW5lZCI9 PT10eXBlb2YgYyYmKGM9bCk7InVuZGVmaW5lZCI9PT10eXBlb2YgZCYmKGQ9bCk7 cmV0dXJuIGMtZH0pO3JldHVybiBmLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS52 YWx1ZX0sYykuam9pbigiXHgyNiIpfTtmLmluQXJyYXk9ZnVuY3Rpb24oYSxiKXt2 YXIgYztmb3IoYz0wO2M8YS5sZW5ndGg7YysrKWlmKGFbY109PWIpcmV0dXJuITA7 cmV0dXJuITF9O3ZhciBTPUEuaW5oZXJpdCh7cG9zdFBhcmFtczpbXSxpbmRleDow LGxvZ0luZm86ZnVuY3Rpb24oYSl7dmFyIGI7aWYoYSlyZXR1cm4gYT0oYj1hLm1h dGNoKC9edGk6XGQ6LykpP2EucmVwbGFjZShiWzBdLCIiKTphLCJ0aToiK3RoaXMu aW5kZXgrIjoiK2F9LF9idWlsZFVybDpmdW5jdGlvbihhLGIpe3ZhciBjPVUuc3Ry aW5naWZ5KGIsdGhpcy5xdWVyeVN0cmluZ1BhcmFtcyk7cmV0dXJuIGErKC0xPGEu aW5kZXhPZigiPyIpPwoiXHgyNiI6Yz8iPyI6IiIpK2N9LF9zcGxpdFBhcmFtczpm dW5jdGlvbihhKXt2YXIgYj17fSxjPXt9O2YuZm9yRWFjaEtleShhLGZ1bmN0aW9u KGEsZSl7Zi5pbkFycmF5KHRoaXMucG9zdFBhcmFtcyxhKT9jW2FdPWU6YlthXT1l fSx0aGlzKTtyZXR1cm57Z2V0OmIscG9zdDpjfX0sX3BhcnNlUmVzcDpmdW5jdGlv bihhKXtyZXR1cm4gYX19KSxXPVMuaW5oZXJpdCh7aWQ6IlhIUiIsaW5kZXg6Nyxt ZXRob2Q6IlBPU1QiLHdpdGhDcmVkZW50aWFsczohMCxyZXF1ZXN0OmZ1bmN0aW9u KGEsYixjLGQpe3ZhciBlPXRoaXMsZjtpZigvW15hLXowLTkuOi1dLy50ZXN0KEUu aG9zdCkmJmcub3BlcmEmJiJmdW5jdGlvbiI9PXR5cGVvZiBnLm9wZXJhLnZlcnNp b24pe3ZhciBoPWcub3BlcmEudmVyc2lvbigpO2lmKCJzdHJpbmciPT10eXBlb2Yg aCYmIjEyIj09aC5zcGxpdCgiLiIpWzBdKXJldHVybiBjLmNhbGwoZCwhMSl9aWYo Zy5YTUxIdHRwUmVxdWVzdCl7dmFyIG49bmV3IFhNTEh0dHBSZXF1ZXN0OwppZigi d2l0aENyZWRlbnRpYWxzImluIG4pe2I9dGhpcy5fc3BsaXRQYXJhbXMoYik7YT10 aGlzLl9idWlsZFVybChhLGIuZ2V0KTt0cnl7bi5vcGVuKHRoaXMubWV0aG9kLGEs ITApfWNhdGNoKEkpe3JldHVybiBjLmNhbGwoZCwhMSl9bi53aXRoQ3JlZGVudGlh bHM9dGhpcy53aXRoQ3JlZGVudGlhbHM7dGhpcy5fc2V0SGVhZGVycyhuKTtuLnNl bmQodGhpcy5fcHJlcGFyZVBvc3RQYXJhbXMoYikpO24ub25yZWFkeXN0YXRlY2hh bmdlPWZ1bmN0aW9uKCl7aWYoND09bi5yZWFkeVN0YXRlKXt0cnl7Zj1lLl9wYXJz ZVJlc3Aobi5yZXNwb25zZVRleHQpfWNhdGNoKEkpe3JldHVybiBjLmNhbGwoZCwh MSl9Yy5hcHBseShkLFsyMDA9PW4uc3RhdHVzXS5jb25jYXQoZikpfX07cmV0dXJu fX1jLmNhbGwoZCwhMSl9LHNldE1ldGhvZDpmdW5jdGlvbihhKXt0aGlzLm1ldGhv ZD1hfSxfcHJlcGFyZVBvc3RQYXJhbXM6ZnVuY3Rpb24oYSl7cmV0dXJuIFUuc3Ry aW5naWZ5KGEucG9zdCl9LF9zZXRIZWFkZXJzOmZ1bmN0aW9uKGEpe2Euc2V0UmVx dWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwKImFwcGxpY2F0aW9uL3gtd3d3LWZv cm0tdXJsZW5jb2RlZCIpfX0pLHE9e307cS5pc0FuZHJvaWRXZWJWaWV3PXIoZnVu Y3Rpb24oKXt2YXIgYT1uYXZpZ2F0b3IudXNlckFnZW50fHwiIjtyZXR1cm4gYS5t YXRjaCgvQW5kcm9pZC4qVmVyc2lvblwvWzAtOV1bMC05Ll0qXHNDaHJvbWVcL1sw LTldWzAtOS5dLyl8fGEubWF0Y2goL0FuZHJvaWQuKlZlcnNpb25cL1swLTldWzAt OS5dKlxzKD86TW9iaWxlXHMpP1NhZmFyaVwvWzAtOV1bMC05Ll0qXHNDaHJvbWVc L1swLTldWzAtOS5dKi8pfHxhLm1hdGNoKC87IHd2XCkuKkNocm9tZVwvWzAtOV1b MC05Ll0qXHNNb2JpbGUvKX0sImlzQW5kcm9pZFdlYlZpZXciKTt2YXIgQmI9Uy5p bmhlcml0KHtpZDoiYmVhY29uIixpbmRleDoxLHJlcXVlc3Q6ZnVuY3Rpb24oYSxi LGMsZCl7ImZ1bmN0aW9uIj09PXR5cGVvZiBuYXZpZ2F0b3Iuc2VuZEJlYWNvbiYm IXEuaXNBbmRyb2lkV2ViVmlldygpJiZuYXZpZ2F0b3Iub25MaW5lPyhiPXRoaXMu X3NwbGl0UGFyYW1zKGIpLApiLmdldFsiZm9yY2UtdXJsZW5jb2RlZCJdPTEsYy5j YWxsKGQsbmF2aWdhdG9yLnNlbmRCZWFjb24odGhpcy5fYnVpbGRVcmwoYSxiLmdl dCksVS5zdHJpbmdpZnkoYi5wb3N0KSkpKTpjLmNhbGwoZCwhMSl9fSk7Zi5yYW5k b209ZnVuY3Rpb24oYSxiKXsyPmFyZ3VtZW50cy5sZW5ndGgmJihiPWEsYT0wKTsx PmFyZ3VtZW50cy5sZW5ndGgmJihiPTEwNzM3NDE4MjQpO3JldHVybiBNYXRoLmZs b29yKE1hdGgucmFuZG9tKCkqKGItYSkpK2F9O3ZhciBUPVMuaW5oZXJpdCh7aWQ6 ImZvcm0iLGluZGV4OjIsZW5jdHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11 cmxlbmNvZGVkIixodG1sZmlsZU9ubHk6ITEsX2luaXRDb21wb25lbnQ6ZnVuY3Rp b24oKXtULnN1cGVyY2xhc3MuX2luaXRDb21wb25lbnQuYXBwbHkodGhpcyxhcmd1 bWVudHMpOyJfaHRtbGZpbGUiaW4gVC5wcm90b3R5cGV8fChULnByb3RvdHlwZS5f aHRtbGZpbGU9dGhpcy5fY3JlYXRlSHRtbGZpbGUoKSk7dGhpcy5fZG9jPQp0aGlz Ll9odG1sZmlsZXx8KHRoaXMuaHRtbGZpbGVPbmx5P251bGw6aCl9LHJlcXVlc3Q6 ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcy5fZG9jO2lmKCFlKXJldHVybiBj LmNhbGwoZCwhMSk7Yj10aGlzLl9zcGxpdFBhcmFtcyhiKTt2YXIgbD0iaWZyIitm LnJhbmRvbSgpO3ZhciBnPWUuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zy5zdHlsZS5w b3NpdGlvbj0iYWJzb2x1dGUiO2cuc3R5bGUubGVmdD0iLTk5OTk5cHgiO2cuc3R5 bGUudG9wPSItOTk5OTlweCI7dmFyIGg9WydceDNjaWZyYW1lIG5hbWVceDNkIics bCwnIlx4M2VceDNjL2lmcmFtZVx4M2UnLCdceDNjZm9ybSBhY3Rpb25ceDNkIics dGhpcy5fYnVpbGRVcmwoYSxiLmdldCksJyIgbWV0aG9kXHgzZCJwb3N0IiB0YXJn ZXRceDNkIicsbCwnIiBlbmN0eXBlXHgzZCInLHRoaXMuZW5jdHlwZSwnIlx4M2Un XTtmLmZvckVhY2hLZXkoYi5wb3N0LGZ1bmN0aW9uKGEpe2YubWVyZ2VBcnJheXMo aCxbJ1x4M2NpbnB1dCB0eXBlXHgzZCJoaWRkZW4iIGF1dG9jb21wbGV0ZVx4M2Qi b2ZmIiBhdXRvY29ycmVjdFx4M2Qib2ZmIicsCicgYXV0b2NhcGl0YWxpemVceDNk Im9mZiIgc3BlbGxjaGVja1x4M2QiZmFsc2UiIG5hbWVceDNkIicsYSwnIi9ceDNl J10pfSk7Zi5tZXJnZUFycmF5cyhoLFsiXHgzYy9mb3JtXHgzZSJdKTtnLmlubmVy SFRNTD1oLmpvaW4oIiIpO2UuYm9keS5hcHBlbmRDaGlsZChnKTt2YXIgaz1nLmdl dEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIilbMF07Zi5mb3JFYWNoS2V5KGIucG9z dCxmdW5jdGlvbihhLGIpe2tbYV0udmFsdWU9Yn0pO2suc3VibWl0KCk7Zi5zZXRU aW1lb3V0KGZ1bmN0aW9uKCl7ZS5ib2R5LnJlbW92ZUNoaWxkKGcpfSwxRTQsIlRy YW5zcG9ydEZvcm0ucmVxdWVzdC4yIik7cmV0dXJuIGMuY2FsbChkLCEwKX0sX2Ny ZWF0ZUh0bWxmaWxlOmZ1bmN0aW9uKCl7dHJ5e2lmKGcuQWN0aXZlWE9iamVjdCl7 dmFyIGE9bmV3IEFjdGl2ZVhPYmplY3QoImh0bWxmaWxlIik7YS5vcGVuKCk7YS53 cml0ZSgiXHgzY2h0bWxceDNlXHgzY2JvZHlceDNlXHgzYy9ib2R5XHgzZVx4M2Mv aHRtbFx4M2UiKTsKYS5jbG9zZSgpO3JldHVybiBhfX1jYXRjaChiKXt9cmV0dXJu IG51bGx9fSksQ2I9VC5pbmhlcml0KHtpZDoiaHRtbGZpbGUiLGluZGV4OjMsaHRt bGZpbGVPbmx5OiEwfSksWj1TLmluaGVyaXQoe2lkOiJpbWciLGluZGV4OjQscmVx dWVzdDpmdW5jdGlvbihhLGIsYyxkKXthPXRoaXMuX2J1aWxkVXJsKGEsYik7dmFy IGU9ITE7Yj1oLmNyZWF0ZUVsZW1lbnQoImltZyIpO2M9Y3x8ZnVuY3Rpb24oKXt9 O2Iub25sb2FkPXIoZnVuY3Rpb24oKXtlfHwoYy5jYWxsKGQsITApLGU9ITApfSwi VHJhbnNwb3J0SW1hZ2UucmVxdWVzdCIpO2Iub25lcnJvcj1yKGZ1bmN0aW9uKCl7 ZXx8KGMuY2FsbChkLCExKSxlPSEwKX0sIlRyYW5zcG9ydEltYWdlLnJlcXVlc3Qi KTtiLnNyYz1hO3RoaXMudGltZW91dCYmZi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7 ZXx8KGMuY2FsbChkLCExKSxlPSEwKX0sdGhpcy50aW1lb3V0KX19KSxpYT17c3Ry aW5naWZ5OmZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYSl9 Y2F0Y2goYil7cmV0dXJuIm51bGwifX19OwpmLnRvSlNPTj1mdW5jdGlvbihhKXt2 YXIgYjtpZihhPT09UClyZXR1cm4iIjtpZihudWxsPT09YSlyZXR1cm4ibnVsbCI7 c3dpdGNoKGEuY29uc3RydWN0b3Ipe2Nhc2UgQm9vbGVhbjpyZXR1cm4gYS50b1N0 cmluZygpO2Nhc2UgTnVtYmVyOnJldHVybiBpc0Zpbml0ZShhKT9hLnRvU3RyaW5n KCk6Im51bGwiO2Nhc2UgU3RyaW5nOnJldHVybiciJythLnJlcGxhY2UoL1xcL2cs IlxcXFwiKS5yZXBsYWNlKC8iL2csJ1xcIicpLnJlcGxhY2UoL1xuL2csIlxcbiIp LnJlcGxhY2UoL1xyL2csIlxcciIpKyciJztjYXNlIEFycmF5OnZhciBjPVtdO3Zh ciBkPTA7Zm9yKGI9YS5sZW5ndGg7ZDxiO2QrKyljW2MubGVuZ3RoXT1mLnRvSlNP TihhW2RdKTtyZXR1cm4iWyIrYy5qb2luKCIsIikrIl0iO2Nhc2UgT2JqZWN0OmM9 W107Zm9yKGQgaW4gYSlhLmhhc093blByb3BlcnR5KGQpJiZhW2RdIT09UCYmKGNb Yy5sZW5ndGhdPWYudG9KU09OKGQpKyI6IitmLnRvSlNPTihhW2RdKSk7cmV0dXJu InsiKwpjLmpvaW4oIiwiKSsifSI7ZGVmYXVsdDpyZXR1cm4gaWEuc3RyaW5naWZ5 KGEpfX07dmFyIFE9QS5pbmhlcml0KHtjb3VudGVySWQ6IiIsX2luaXRDb21wb25l bnQ6ZnVuY3Rpb24oKXtRLnN1cGVyY2xhc3MuX2luaXRDb21wb25lbnQuYXBwbHko dGhpcyxhcmd1bWVudHMpO3RoaXMuX2xzPW51bGw7dHJ5e3RoaXMuX2xzPWcubG9j YWxTdG9yYWdlfWNhdGNoKGEpe319LHNldDpmdW5jdGlvbihhLGIpe2lmKHRoaXMu aXNFbmFibGVkKCkpdHJ5eyFifHxiJiZmLmlzQXJyYXkoYikmJiFiLmxlbmd0aD90 aGlzLnJlbW92ZShhKTp0aGlzLl9scy5zZXRJdGVtKHRoaXMuX2dldExzS2V5KGEp LGYudG9KU09OKGIpKX1jYXRjaChjKXt9fSxnZXQ6ZnVuY3Rpb24oYSl7aWYodGhp cy5pc0VuYWJsZWQoKSl0cnl7cmV0dXJuIEpTT04ucGFyc2UodGhpcy5fbHMuZ2V0 SXRlbSh0aGlzLl9nZXRMc0tleShhKSkpfWNhdGNoKGIpe31yZXR1cm4gbnVsbH0s cmVtb3ZlOmZ1bmN0aW9uKGEpe2lmKHRoaXMuaXNFbmFibGVkKCkpdHJ5e3RoaXMu X2xzLnJlbW92ZUl0ZW0odGhpcy5fZ2V0THNLZXkoYSkpfWNhdGNoKGIpe319LApp c0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbHMmJmcuSlNPTiYmIm9i amVjdCI9PXR5cGVvZiB0aGlzLl9scyYmIm9iamVjdCI9PXR5cGVvZiBnLkpTT059 LGdldFN0b3JhZ2VJZDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0KCJsc2lkIik7 YXx8KGE9TWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKm5ldyBEYXRlKSx0aGlzLnNl dCgibHNpZCIsYSkpO3JldHVybiBhfSxjbGVhclN0b3JhZ2VJZDpmdW5jdGlvbigp e3RoaXMucmVtb3ZlKCJsc2lkIil9LF9nZXRMc0tleTpmdW5jdGlvbihhKXtyZXR1 cm4iX3ltIit0aGlzLmNvdW50ZXJJZCsiXyIrYX19KSxHPUEuaW5oZXJpdCh7Y291 bnRlcklkOiIiLG9ubHlDdXJyZW50RG9tYWluOiExLHNraXBQcmVmaXg6ITEsX2lu aXRDb21wb25lbnQ6ZnVuY3Rpb24oKXt2YXIgYTtHLnN1cGVyY2xhc3MuX2luaXRD b21wb25lbnQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuX2RvbWFpbj1udWxs O2lmKCF0aGlzLm9ubHlDdXJyZW50RG9tYWluKXt2YXIgYj0KRS5ob3N0LnNwbGl0 KCIuIik7Zm9yKGE9Mjs7KWlmKGE8PWIubGVuZ3RoKXtpZih0aGlzLl9kb21haW49 Ii4iK2Iuc2xpY2UoLWEpLmpvaW4oIi4iKSxhKyssdGhpcy5pc0VuYWJsZWQoKSli cmVha31lbHNle3RoaXMuX2RvbWFpbj1udWxsO2JyZWFrfX19LGNyZWF0ZTpmdW5j dGlvbihhLGIsYyl7YT1bdGhpcy5fcHJlcGFyZU5hbWUoYSkrIlx4M2QiK2VuY29k ZVVSSUNvbXBvbmVudChiKV07YyYmKGI9bmV3IERhdGUsYi5zZXRUaW1lKGIuZ2V0 VGltZSgpKzZFNCpjKSxhLnB1c2goImV4cGlyZXNceDNkIitiLnRvR01UU3RyaW5n KCkpKTt0aGlzLl9kb21haW4mJmEucHVzaCgiZG9tYWluXHgzZCIrdGhpcy5fZG9t YWluKTthLnB1c2goInBhdGhceDNkLyIpO3RyeXtoLmNvb2tpZT1hLmpvaW4oIjsi KX1jYXRjaChkKXt9fSxyZWFkOmZ1bmN0aW9uKGEpe3RyeXt2YXIgYj1oLmNvb2tp ZX1jYXRjaChjKXt9cmV0dXJuIGImJmIubWF0Y2gobmV3IFJlZ0V4cCgiKD86Xnw7 XFxzKikiK3RoaXMuX3ByZXBhcmVOYW1lKGEpKwoiXHgzZChbXjtdKikiKSk/ZGVj b2RlVVJJQ29tcG9uZW50KFJlZ0V4cC4kMSk6bnVsbH0sZXJhc2U6ZnVuY3Rpb24o YSl7dGhpcy5jcmVhdGUoYSwiIiwtMSl9LGlzRW5hYmxlZDpmdW5jdGlvbigpe3Ro aXMuY3JlYXRlKCJtZXRyaWthX2VuYWJsZWQiLCIxIiw2MCk7dmFyIGE9ISF0aGlz LnJlYWQoIm1ldHJpa2FfZW5hYmxlZCIpO3RoaXMuZXJhc2UoIm1ldHJpa2FfZW5h YmxlZCIpO3JldHVybiBhfSxfcHJlcGFyZU5hbWU6ZnVuY3Rpb24oYSl7cmV0dXJu KHRoaXMuc2tpcFByZWZpeD8iIjoiX3ltXyIpK2ErKHRoaXMuY291bnRlcklkPyJf Iit0aGlzLmNvdW50ZXJJZDoiIil9fSk7Ry5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJu KG5ldyBHKHtvbmx5Q3VycmVudERvbWFpbjohMH0pKS5yZWFkKGEpfTtHLnNldD1m dW5jdGlvbihhLGIsYyl7cmV0dXJuKG5ldyBHKHtvbmx5Q3VycmVudERvbWFpbjoh MH0pKS5jcmVhdGUoYSxiLGMpfTtHLmlzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVy bihuZXcgRyh7b25seUN1cnJlbnREb21haW46ITB9KSkuaXNFbmFibGVkKCl9Owp2 YXIgSD17Z2V0U2Vjb25kczpmdW5jdGlvbigpe3JldHVybiBNYXRoLnJvdW5kKCtu ZXcgRGF0ZS8xRTMpfX07cS5pc1NhZmFyaT1mdW5jdGlvbigpe3RyeXtyZXR1cm4g bmF2aWdhdG9yLnZlbmRvciYmLTE8bmF2aWdhdG9yLnZlbmRvci5pbmRleE9mKCJB cHBsZSIpJiZuYXZpZ2F0b3IudXNlckFnZW50JiYhbmF2aWdhdG9yLnVzZXJBZ2Vu dC5tYXRjaCgiQ3JpT1MiKX1jYXRjaChhKXt9cmV0dXJuITF9O3ZhciBPPW9hLmlu aGVyaXQoe3Byb3RvY29sOiIiLGhvc3Q6Sy5ob3N0LHF1ZXJ5U3RyaW5nUGFyYW1z OntmaXJzdE9yZGVyaW5nOlsid21vZGUiLCJjYWxsYmFjayIsImNudC1jbGFzcyJd LGxhc3RPcmRlcmluZzpbImJyb3dzZXItaW5mbyJdfSxyZXNvdXJjZToiIixjb3Vu dGVySWQ6IiIsY291bnRlclR5cGU6MCxyZXRyeTohMSx0cmFuc3BvcnRzOltCYixX LFosQ2JdLF9pbml0Q29tcG9uZW50OmZ1bmN0aW9uKCl7Ty5zdXBlcmNsYXNzLl9p bml0Q29tcG9uZW50LmFwcGx5KHRoaXMsCmFyZ3VtZW50cyk7dGhpcy5yZXRyeSYm KHRoaXMuX3N0b3JhZ2U9bmV3IFEpfSxzZW5kOmZ1bmN0aW9uKGEsYixjLGQpe3Zh ciBlPXRoaXMuX3JlZ2lzdGVyUmVxdWVzdChhLGIpO3RoaXMuX3NlbmRTYXZlZFJl cXVlc3QoZSxhLGIsYyxkKX0sX3NlbmRTYXZlZFJlcXVlc3Q6ZnVuY3Rpb24oYSxi LGMsZCxlKXt2YXIgZz10aGlzLmdsb2JhbENvbmZpZy5nZXQoImZpcnN0UmVxU3Rh dHVzIik7aWYoInByb2Nlc3MiPT1nKXRoaXMuZ2xvYmFsQ29uZmlnLnNldCgiZmly c3RSZXFDYWxsYmFja3MiLGYubWVyZ2VBcnJheXModGhpcy5nbG9iYWxDb25maWcu Z2V0KCJmaXJzdFJlcUNhbGxiYWNrcyIpfHxbXSxbW3RoaXMsYXJndW1lbnRzXV0p KTtlbHNle2d8fHRoaXMuZ2xvYmFsQ29uZmlnLnNldCgiZmlyc3RSZXFTdGF0dXMi LCJwcm9jZXNzIik7dGhpcy5jb3VudGVyVHlwZSYmKGJbImNudC1jbGFzcyJdPXRo aXMuY291bnRlclR5cGUpO2Muc3Q9SC5nZXRTZWNvbmRzKCk7Yy51PU8uX3VzZXJJ RDsKZz1bdGhpcy5wcm90b2NvbCwiLy8iLHRoaXMuaG9zdCwiLyIsdGhpcy5yZXNv dXJjZSwiLyIsdGhpcy5jb3VudGVySWRdLmpvaW4oIiIpO3ZhciBoPVtdO2MmJihm LmZvckVhY2hLZXkoYyxmdW5jdGlvbihhLGIpeyJ0IiE9YSYmZi5tZXJnZUFycmF5 cyhoLFthLGJdKX0pLGMudCYmZi5tZXJnZUFycmF5cyhoLFsidCIsYy50XSkpO2gu bGVuZ3RoJiYoYlsiYnJvd3Nlci1pbmZvIl09aC5qb2luKCI6IikpO3JldHVybiBP LnN1cGVyY2xhc3Muc2VuZC5jYWxsKHRoaXMsZyxiLGZ1bmN0aW9uKCl7dmFyIGI7 dGhpcy5nbG9iYWxDb25maWcuc2V0KCJmaXJzdFJlcVN0YXR1cyIsImNvbXBsZXRl Iik7dGhpcy5fdW5yZWdpc3RlclJlcXVlc3QoYSk7dmFyIGM9dGhpcy5nbG9iYWxD b25maWcuZ2V0KCJmaXJzdFJlcUNhbGxiYWNrcyIpO3RoaXMuZ2xvYmFsQ29uZmln LnNldCgiZmlyc3RSZXFDYWxsYmFja3MiLG51bGwpO2lmKGMpZm9yKGI9MDtiPGMu bGVuZ3RoO2IrKyljW2JdWzBdLl9zZW5kU2F2ZWRSZXF1ZXN0LmFwcGx5KGNbYl1b MF0sCmNbYl1bMV0pO2QmJmQuYXBwbHkoZSxhcmd1bWVudHMpfSx0aGlzKX19LF9p c1JldHJ5RW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJldHJ5JiZ0aGlz Ll9zdG9yYWdlJiZ0aGlzLl9zdG9yYWdlLmlzRW5hYmxlZCgpfSxfcmVnaXN0ZXJS ZXF1ZXN0OmZ1bmN0aW9uKGEsYil7dmFyIGM7aWYodGhpcy5faXNSZXRyeUVuYWJs ZWQoKSl7Yi5ycW5sPWIucnFubHx8MDtiLnJxbmwrKzt2YXIgZD10aGlzLl9zdG9y YWdlLmdldCgicmV0cnlSZXFzIil8fHt9O2ZvcihjPTE7ZFtjXTspYysrO2RbY109 e3Byb3RvY29sOnRoaXMucHJvdG9jb2wsaG9zdDp0aGlzLmhvc3QscmVzb3VyY2U6 dGhpcy5yZXNvdXJjZSxjb3VudGVySWQ6dGhpcy5jb3VudGVySWQsY291bnRlclR5 cGU6dGhpcy5jb3VudGVyVHlwZSxwb3N0UGFyYW1zOnRoaXMucG9zdFBhcmFtcyxw YXJhbXM6YSxicm93c2VySW5mbzpiLGdoaWQ6dGhpcy5nbG9iYWxDb25maWcuZ2V0 KCJfZ2xvYmFsTWV0cmlrYUhpdElkIiksdGltZTorbmV3IERhdGV9Owp0aGlzLl9z dG9yYWdlLnNldCgicmV0cnlSZXFzIixkKTtyZXR1cm4gY319LF91bnJlZ2lzdGVy UmVxdWVzdDpmdW5jdGlvbihhKXtpZihhJiZ0aGlzLl9pc1JldHJ5RW5hYmxlZCgp KXt2YXIgYj10aGlzLl9zdG9yYWdlLmdldCgicmV0cnlSZXFzIil8fHt9O2JbYV0m JihkZWxldGUgYlthXSx0aGlzLl9zdG9yYWdlLnNldCgicmV0cnlSZXFzIixiKSl9 fSxfZ2V0VmVyc2lvbjpyKGZ1bmN0aW9uKCl7cmV0dXJuIFh9LCIiLCEwKX0pO08u X3N0b3JhZ2U9bmV3IFE7Ty5pbml0Q29va2llPWZ1bmN0aW9uKCl7dmFyIGE9bmV3 IEcsYj1hLnJlYWQoInVpZCIpO2J8fChiPUguZ2V0U2Vjb25kcygpLGI9YisiIitm LnJhbmRvbSgpLGEuY3JlYXRlKCJ1aWQiLGIsMTAzNjgwMCkpO08uX3VzZXJJRD1i fTtPLnJldHJhbnNtaXQ9ZnVuY3Rpb24oYSl7dmFyIGI9Ty5fc3RvcmFnZSxjPWIu Z2V0KCJyZXRyeVJlcXMiKXx8e30sZDtiLnJlbW92ZSgicmV0cnlSZXFzIik7Zi5m b3JFYWNoS2V5KGMsZnVuY3Rpb24oYiwKYyl7YS5nZXQoImZpcnN0UmVxU3RhdHVz Iil8fGEuc2V0KCJmaXJzdFJlcVN0YXR1cyIsImNvbXBsZXRlIik7Yy5naGlkJiZj LmdoaWQhPWEuZ2V0KCJfZ2xvYmFsTWV0cmlrYUhpdElkIikmJmMudGltZSYmYy50 aW1lKzg2NEU1PituZXcgRGF0ZSYmMj49Yy5icm93c2VySW5mby5ycW5sJiYoZD1u ZXcgTyh7cHJvdG9jb2w6Yy5wcm90b2NvbCxob3N0OmMuaG9zdCxyZXNvdXJjZTpj LnJlc291cmNlLGNvdW50ZXJJZDpjLmNvdW50ZXJJZCxjb3VudGVyVHlwZTpjLmNv dW50ZXJUeXBlLHBvc3RQYXJhbXM6Yy5wb3N0UGFyYW1zfHxbXSxyZXRyeTohMH0p LGQuc2VuZChjLnBhcmFtcyxjLmJyb3dzZXJJbmZvKSl9KX07Zi5mbGV0Y2hlcj1m dW5jdGlvbihhKXtmb3IodmFyIGI9YS5sZW5ndGgsYz0wLGQ9MjU1LGU9MjU1LGYs ZyxoO2I7KXtmPTIxPGI/MjE6YjtiLT1mO2RvIGc9InN0cmluZyI9PXR5cGVvZiBh P2EuY2hhckNvZGVBdChjKTphW2NdLGMrKywyNTU8ZyYmKGg9Zz4+OCxnJj0yNTUs CmdePWgpLGQrPWcsZSs9ZDt3aGlsZSgtLWYpO2Q9KGQmMjU1KSsoZD4+OCk7ZT0o ZSYyNTUpKyhlPj44KX1hPShkJjI1NSkrKGQ+PjgpPDw4fChlJjI1NSkrKGU+Pjgp O3JldHVybiA2NTUzNT09YT8wOmF9O3ZhciBOPXthYmM6IkFCQ0RFRkdISUpLTE1O T1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5 Iix0YWlsOiIrL1x4M2QiLHRhaWxTYWZlOiIqLV8iLGVuY29kZTpmdW5jdGlvbihh LGIpe3ZhciBjPShOLmFiYysoYj9OLnRhaWxTYWZlOk4udGFpbCkpLnNwbGl0KCIi KSxkPWEubGVuZ3RoLGU9W10sZz1kLWQlMyxoO2ZvcihoPTA7aDxnO2grPTMpe3Zh ciBuPShhW2hdPDwxNikrKGFbaCsxXTw8OCkrYVtoKzJdO2YubWVyZ2VBcnJheXMo ZSxbY1tuPj4xOCY2M10sY1tuPj4xMiY2M10sY1tuPj42JjYzXSxjW24mNjNdXSl9 c3dpdGNoKGQtZyl7Y2FzZSAxOm49YVtnXTw8NDtmLm1lcmdlQXJyYXlzKGUsW2Nb bj4+NiY2M10sY1tuJjYzXSxjWzY0XSwKY1s2NF1dKTticmVhaztjYXNlIDI6bj0o YVtnXTw8MTApKyhhW2crMV08PDIpLGYubWVyZ2VBcnJheXMoZSxbY1tuPj4xMiY2 M10sY1tuPj42JjYzXSxjW24mNjNdLGNbNjRdXSl9cmV0dXJuIGUuam9pbigiIil9 fTtmLmFycmF5RXZlcnk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2ZvcihkPTA7ZDxh Lmxlbmd0aDtkKyspaWYoIWIuY2FsbChjLGFbZF0sZCxhKSlyZXR1cm4hMTtyZXR1 cm4hMH07Zi5pczRCeXRlcz1mdW5jdGlvbihhKXtyZXR1cm4hZi5hcnJheUV2ZXJ5 KChlbmNvZGVVUklDb21wb25lbnQoYSkubWF0Y2goLyglW0EtRixcZF17Mn0pKy9n KXx8W10pLmpvaW4oIiIpLnNwbGl0KCIlIiksZnVuY3Rpb24oYSl7cmV0dXJuIDI0 MD5wYXJzZUludChhLDE2KX0pfTtmLnRyaW09ZnVuY3Rpb24oYSxiKXthPVN0cmlu ZyhhKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIik7YiYmYS5sZW5ndGg+YiYmKGE9 YS5zdWJzdHIoMCxiKSk7cmV0dXJuIGF9O2YuaXNGdW5jdGlvbj1mdW5jdGlvbihh KXtyZXR1cm4iZnVuY3Rpb24iPT09CnR5cGVvZiBhfTtmLmlzTnVtYmVyPWZ1bmN0 aW9uKGEpe3JldHVybiBpc0Zpbml0ZShhKSYmIWlzTmFOKGEpJiYiW29iamVjdCBO dW1iZXJdIj09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfTtmLmlz U3RyaW5nPWZ1bmN0aW9uKGEpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT1PYmpl Y3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9O2YuYXJyYXlJbmRleE9mPWZ1 bmN0aW9uKGEsYil7dmFyIGM7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKylpZihhW2Nd PT09YilyZXR1cm4gYztyZXR1cm4tMX07Zi53YXJuaW5nPWZ1bmN0aW9uKCl7Zy5j b25zb2xlJiYiZnVuY3Rpb24iPT09dHlwZW9mIGcuY29uc29sZS53YXJuJiZjb25z b2xlLndhcm4uYXBwbHkoY29uc29sZSxhcmd1bWVudHMpfTtmLmlzT2JqZWN0PWZ1 bmN0aW9uKGEpe3RyeXtyZXR1cm4gYSYmbnVsbCE9PWEmJiJbb2JqZWN0IE9iamVj dF0iPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9Y2F0Y2goYil7 cmV0dXJuITF9fTsKZi5fcGxheWVyUmVnZXhwPS9eLitcLm10cHJveHlcLnlhbmRl eFwubmV0JC87Zi5pc01ldHJpa2FQbGF5ZXI9ZnVuY3Rpb24oKXtyZXR1cm4iTWV0 cmlrYVBsYXllciI9PWcubmFtZXx8dGhpcy5fcGxheWVyUmVnZXhwLnRlc3QoZy5s b2NhdGlvbi5ob3N0bmFtZSl9O3ZhciBtPXtnZXREb2N1bWVudENoYXJzZXQ6ZnVu Y3Rpb24oKXtyZXR1cm4oIiIrKGguY2hhcmFjdGVyU2V0fHxoLmNoYXJzZXR8fCIi KSkudG9Mb3dlckNhc2UoKX0sZ2V0Um9vdEVsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIg YT1oLmRvY3VtZW50RWxlbWVudDtyZXR1cm4iQ1NTMUNvbXBhdCI9PWguY29tcGF0 TW9kZT9hOmguYm9keXx8YX0sZ2V0Vmlld3BvcnRTaXplOmZ1bmN0aW9uKCl7dmFy IGE9bS5nZXRSb290RWxlbWVudCgpO3JldHVyblthLmNsaWVudFdpZHRofHxnLmlu bmVyV2lkdGgsYS5jbGllbnRIZWlnaHR8fGcuaW5uZXJIZWlnaHRdfSxnZXREb2N1 bWVudFRpdGxlOmZ1bmN0aW9uKCl7dmFyIGE9aC50aXRsZTsKInN0cmluZyIhPXR5 cGVvZiBhJiYoYT0oYT1oLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0aXRsZSIpKSYm YS5sZW5ndGg/YVswXS5pbm5lckhUTUw6IiIpO3JldHVybiBhfX07cS5fc2lsdmVy bGlnaHRWZXJzaW9uPSIiO3EuZ2V0U2lsdmVybGlnaHRWZXJzaW9uPWZ1bmN0aW9u KCl7aWYoIXEuX3NpbHZlcmxpZ2h0VmVyc2lvbilpZihnLkFjdGl2ZVhPYmplY3Qp dHJ5e3ZhciBhPW5ldyBBY3RpdmVYT2JqZWN0KCJBZ0NvbnRyb2wuQWdDb250cm9s Iik7dmFyIGI9ZnVuY3Rpb24oYSxiLGQsZil7Zm9yKDtjKGEsYik7KWJbZF0rPWY7 YltkXS09Zn07dmFyIGM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5pc1ZlcnNpb25T dXBwb3J0ZWQoYlswXSsiLiIrYlsxXSsiLiIrYlsyXSsiLiIrYlszXSl9O3ZhciBk PVsxLDAsMCwwXTtiKGEsZCwwLDEpO2IoYSxkLDEsMSk7YihhLGQsMiwxRTQpO2Io YSxkLDIsMUUzKTtiKGEsZCwyLDEwMCk7YihhLGQsMiwxMCk7YihhLGQsMiwxKTti KGEsZCwzLDEpOwpxLl9zaWx2ZXJsaWdodFZlcnNpb249ZC5qb2luKCIuIil9Y2F0 Y2goZSl7fWVsc2UgaWYoYj1nLm5hdmlnYXRvcixiPWIucGx1Z2lucyYmYi5wbHVn aW5zWyJTaWx2ZXJsaWdodCBQbHVnLUluIl0pcS5fc2lsdmVybGlnaHRWZXJzaW9u PWIuZGVzY3JpcHRpb247cmV0dXJuIHEuX3NpbHZlcmxpZ2h0VmVyc2lvbnx8IiJ9 O3EuX2ZsYXNoVmVyc2lvbj0wO3EuZ2V0Rmxhc2hWZXJzaW9uPWZ1bmN0aW9uKCl7 aWYoIXEuX2ZsYXNoVmVyc2lvbil7dmFyIGE9Zy5uYXZpZ2F0b3I7aWYoInVuZGVm aW5lZCIhPXR5cGVvZiBhLnBsdWdpbnMmJiJvYmplY3QiPT10eXBlb2YgYS5wbHVn aW5zWyJTaG9ja3dhdmUgRmxhc2giXSl7dmFyIGI9YS5wbHVnaW5zWyJTaG9ja3dh dmUgRmxhc2giXTt2YXIgYz1iLnZlcnNpb247aWYoKGI9Yi5kZXNjcmlwdGlvbil8 fGMpaWYoYT1hLm1pbWVUeXBlcywidW5kZWZpbmVkIj09dHlwZW9mIGF8fCFhWyJh cHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCJdfHwKYVsiYXBwbGljYXRpb24v eC1zaG9ja3dhdmUtZmxhc2giXS5lbmFibGVkUGx1Z2luKWM/cS5fZmxhc2hWZXJz aW9uPWM6YiYmKHEuX2ZsYXNoVmVyc2lvbj1iLnJlcGxhY2UoLyhbYS16QS1aXXxc cykrLywiIikucmVwbGFjZSgvKFxzK3J8XHMrYlswLTldKykvLCIuIikpfWVsc2Ug aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBnLkFjdGl2ZVhPYmplY3QpdHJ5e2lmKGM9 bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNo IiksYj1jLkdldFZhcmlhYmxlKCIkdmVyc2lvbiIpKXEuX2ZsYXNoVmVyc2lvbj1i LnNwbGl0KCIgIilbMV0ucmVwbGFjZSgvLC9nLCIuIikucmVwbGFjZSgvW14uXGRd L2csIiIpfWNhdGNoKGQpe319cmV0dXJuIHEuX2ZsYXNoVmVyc2lvbn07cS5nZXRM YW5ndWFnZT1mdW5jdGlvbigpe3ZhciBhPShnLm5hdmlnYXRvcj9uYXZpZ2F0b3Iu bGFuZ3VhZ2V8fG5hdmlnYXRvci51c2VyTGFuZ3VhZ2V8fG5hdmlnYXRvci5icm93 c2VyTGFuZ3VhZ2V8fApuYXZpZ2F0b3Iuc3lzdGVtTGFuZ3VhZ2U6IiIpLnRvTG93 ZXJDYXNlKCk7cmV0dXJuIGYuaXNTdHJpbmcoYSk/YToiIn07cS5nZXRKYXZhRW5h YmxlZD1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmF2aWdhdG9yLmphdmFFbmFibGVk KCl9Y2F0Y2goYSl7cmV0dXJuITF9fTtmLmZudjMyYT1mdW5jdGlvbihhKXt2YXIg Yj0yMTY2MTM2MjYxLGM7dmFyIGQ9MDtmb3IoYz1hLmxlbmd0aDtkPGM7KytkKWJe PWEuY2hhckNvZGVBdChkKSxiKz0oYjw8MSkrKGI8PDQpKyhiPDw3KSsoYjw8OCkr KGI8PDI0KTtyZXR1cm4gYj4+PjB9O3EuZ2V0RmluZ2VyUHJpbnQ9ZnVuY3Rpb24o KXt2YXIgYT1bXSxiO2lmKG5hdmlnYXRvci5wbHVnaW5zJiZuYXZpZ2F0b3IucGx1 Z2lucy5sZW5ndGgpZm9yKGI9MDtiPG5hdmlnYXRvci5wbHVnaW5zLmxlbmd0aDti Kyspe3ZhciBjPW5hdmlnYXRvci5wbHVnaW5zW2JdO2YubWVyZ2VBcnJheXMoYSxb Yy5uYW1lLGMudmVyc2lvbixjLmRlc2NyaXB0aW9uLGMuZmlsZW5hbWVdKX1pZihu YXZpZ2F0b3IubWltZVR5cGVzJiYKbmF2aWdhdG9yLm1pbWVUeXBlcy5sZW5ndGgp Zm9yKGI9MDtiPG5hdmlnYXRvci5taW1lVHlwZXMubGVuZ3RoO2IrKyljPW5hdmln YXRvci5taW1lVHlwZXNbYl0sZi5tZXJnZUFycmF5cyhhLFtjLnR5cGUsYy5kZXNj cmlwdGlvbixjLnN1ZmZpeGVzXSk7cmV0dXJuIGYuZm52MzJhKGEuam9pbigiOyIp KSsiMDEifTtxLmdldFBsYXRmb3JtPXIoZnVuY3Rpb24oKXtyZXR1cm4iIituYXZp Z2F0b3IucGxhdGZvcm19LCIiLCEwKTtxLmdldE5vdGlmaWNhdGlvblBlcm1pc3Np b249ZnVuY3Rpb24oKXt0cnl7dmFyIGE9Tm90aWZpY2F0aW9uLnBlcm1pc3Npb259 Y2F0Y2goYil7fXN3aXRjaChhKXtjYXNlICJkZW5pZWQiOnJldHVybiAxO2Nhc2Ug ImdyYW50ZWQiOnJldHVybiAyfX07cS5pc0lmcmFtZT1mdW5jdGlvbigpe3RyeXty ZXR1cm4gZy50b3AhPWcuc2VsZn1jYXRjaChhKXtyZXR1cm4hMX19O3EuX25NYXA9 e290aGVyOiIwIixub25lOiIxIix1bmtub3duOiIyIix3aWZpOiIzIixldGhlcm5l dDoiNCIsCmJsdWV0b290aDoiNSIsY2VsbHVsYXI6IjYiLHdpbWF4OiI3IixtaXhl ZDoiOCJ9O3EubmV0VHlwZT1mdW5jdGlvbigpe3ZhciBhPShuYXZpZ2F0b3IuY29u bmVjdGlvbnx8e3R5cGU6IiJ9KS50eXBlO3JldHVybiBxLl9uTWFwW2FdfHxhfTtt LnJlbW92ZU5vZGU9ZnVuY3Rpb24oYSl7dmFyIGI9YSYmYS5wYXJlbnROb2RlO2Im JmIucmVtb3ZlQ2hpbGQoYSl9O2sucmVhZHk9ZnVuY3Rpb24oYSl7dmFyIGI9aC5y ZWFkeVN0YXRlO2lmKCJpbnRlcmFjdGl2ZSI9PT1ifHwiY29tcGxldGUiPT09Yiln LnNldFRpbWVvdXQocihhLCJldnQ6OnJlYWR5Iix2b2lkIDApLDApO2Vsc2V7dmFy IGM9ZnVuY3Rpb24oKXtrLnVuKGgsIkRPTUNvbnRlbnRMb2FkZWQiLGMpO2sudW4o ZywibG9hZCIsYyk7YSgpfTtrLm9uKGgsIkRPTUNvbnRlbnRMb2FkZWQiLGMpO2su b24oZywibG9hZCIsYyl9fTt2YXIgY2I9e3VybDpLLnByb3RvY29sKyIvLyIrSy5o b3N0KyIvbWV0cmlrYS8iLF92YWx1ZTpudWxsLAppbml0OmZ1bmN0aW9uKGEpe3Zh ciBiPXRoaXMuX2dldExzKCkucmVhZCgiaXNhZCIpO3RoaXMuZ2xvYmFsQ29uZmln PWF8fHc7Yj90aGlzLl9zZXQoYik6dGhpcy5fZ2V0UmVxU3RhdHVzKCl8fHRoaXMu X3NlbmQoKX0sZ2V0VmFsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfSxf c2V0OmZ1bmN0aW9uKGEpe3RoaXMuX3ZhbHVlPSIxIj09YXx8IjIiPT1hP2E6bnVs bH0sX3NlbmQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuX3NldFJlcVN0YXR1 cygicHJvY2VzcyIpO2sucmVhZHkoZnVuY3Rpb24oKXt2YXIgYj1oLmNyZWF0ZUVs ZW1lbnQoImltZyIpO2Iub25sb2FkPWZ1bmN0aW9uKCl7YS5fc2F2ZVJlcSghMSk7 bS5yZW1vdmVOb2RlKHRoaXMpfTtiLm9uZXJyb3I9ZnVuY3Rpb24oKXthLl9zYXZl UmVxKCEwKTttLnJlbW92ZU5vZGUodGhpcyl9O2Iuc3JjPWEudXJsK1N0cmluZy5m cm9tQ2hhckNvZGUoOTcsMTAwLDExOCwxMDEsMTE0LDExNiw0NiwxMDMsMTA1LDEw Mik7CnEuaXNTYWZhcmkoKSYmKGIuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixi LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsYi5zdHlsZS53aWR0aD0iMHB4Iixi LnN0eWxlLmhlaWdodD0iMHB4IixtLmdldFJvb3RFbGVtZW50KCkuYXBwZW5kQ2hp bGQoYikpfSl9LF9zYXZlUmVxOmZ1bmN0aW9uKGEpe3RoaXMuX3ZhbHVlPWE9YT8i MSI6IjIiO3RoaXMuX3NldFJlcVN0YXR1cygiY29tcGxldGUiKTt0aGlzLl9nZXRM cygpLmNyZWF0ZSgiaXNhZCIsYSwxMjAwKX0sX3NldFJlcVN0YXR1czpmdW5jdGlv bihhKXt0cnl7dGhpcy5nbG9iYWxDb25maWcuc2V0KCJhZFN0YXR1cyIsYSl9Y2F0 Y2goYil7fX0sX2dldFJlcVN0YXR1czpmdW5jdGlvbigpe3RyeXtyZXR1cm4gdGhp cy5nbG9iYWxDb25maWcuZ2V0KCJhZFN0YXR1cyIpfWNhdGNoKGEpe3JldHVybiJj b21wbGV0ZSJ9fSxfZ2V0THM6ZnVuY3Rpb24oKXt0aGlzLl9sc3x8KHRoaXMuX2xz PW5ldyBHKTtyZXR1cm4gdGhpcy5fbHN9fSwKY2E9e2VuY29kZTpmdW5jdGlvbihh KXt2YXIgYj1bXSxjO3ZhciBkPTA7Zm9yKGM9YS5sZW5ndGg7ZDxjO2QrKyl7dmFy IGU9YS5jaGFyQ29kZUF0KGQpOzEyOD5lP2IucHVzaChlKTooMTI3PGUmJjIwNDg+ ZT9iLnB1c2goZT4+NnwxOTIpOihiLnB1c2goZT4+MTJ8MjI0KSxiLnB1c2goZT4+ NiY2M3wxMjgpKSxiLnB1c2goZSY2M3wxMjgpKX1yZXR1cm4gYn0sZGVjb2RlOmZ1 bmN0aW9uKGEpe2Zvcih2YXIgYj0iIixjPTAsZCxlLGY7YzxhLmxlbmd0aDspZD1h LmNoYXJDb2RlQXQoYyksMTI4PmQ/KGIrPVN0cmluZy5mcm9tQ2hhckNvZGUoZCks YysrKToxOTE8ZCYmMjI0PmQ/KGU9YS5jaGFyQ29kZUF0KGMrMSksYis9U3RyaW5n LmZyb21DaGFyQ29kZSgoZCYzMSk8PDZ8ZSY2MyksYys9Mik6KGU9YS5jaGFyQ29k ZUF0KGMrMSksZj1hLmNoYXJDb2RlQXQoYysyKSxiKz1TdHJpbmcuZnJvbUNoYXJD b2RlKChkJjE1KTw8MTJ8KGUmNjMpPDw2fGYmNjMpLGMrPTMpO3JldHVybiBifX07 Ck4uZGVjb2RlPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPU4uYWJjKyhiP04udGFp bFNhZmU6Ti50YWlsKSxkPTAsZT0iIixmLGcsaCxrLG07YS5sZW5ndGglNDspYSs9 Ilx4M2QiO2Rve2Y9Yy5pbmRleE9mKGEuY2hhckF0KGQrKykpO2c9Yy5pbmRleE9m KGEuY2hhckF0KGQrKykpO2s9Yy5pbmRleE9mKGEuY2hhckF0KGQrKykpO209Yy5p bmRleE9mKGEuY2hhckF0KGQrKykpO2lmKDA+Znx8MD5nfHwwPmt8fDA+bSlyZXR1 cm4gbnVsbDtoPWY8PDE4fGc8PDEyfGs8PDZ8bTtmPWg+PjE2JjI1NTtnPWg+Pjgm MjU1O2gmPTI1NTtlPTY0PT1rP2UrU3RyaW5nLmZyb21DaGFyQ29kZShmKTo2ND09 bT9lK1N0cmluZy5mcm9tQ2hhckNvZGUoZixnKTplK1N0cmluZy5mcm9tQ2hhckNv ZGUoZixnLGgpfXdoaWxlKGQ8YS5sZW5ndGgpO3JldHVybiBlfTtpYS5wYXJzZT1m dW5jdGlvbihhKXt0cnl7cmV0dXJuIEpTT04ucGFyc2UoYSl9Y2F0Y2goYil7cmV0 dXJuIG51bGx9fTt2YXIgZGE9Ty5pbmhlcml0KHtoaXRJZDowLAp0cmFja0hhc2g6 ITEsdHJpbVBhcmFtczohMSx3ZWJ2aXNvcjohMSxjb3VudGVyOm51bGwsY291bnRl ck51bTowLHJlc291cmNlOiJ3YXRjaCIscmV0cnk6ITAscG9zdFBhcmFtczpbInNp dGUtaW5mbyJdLGNvdW50ZXJzTm9UaXRsZToiMjI4MzYyNzEgMTE0MzA1MCAyOTYy Njg3MCA5OTI4MTA1IDI2MTI4MzYyIDI5ODUwNzY5Ii5zcGxpdCgiICIpLGZha2U6 ITEsc2VuZFRpdGxlOiEwLF9pbml0Q29tcG9uZW50OmZ1bmN0aW9uKCl7ZGEuc3Vw ZXJjbGFzcy5faW5pdENvbXBvbmVudC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhp cy5fdHJhY2tIYXNoPXRoaXMudHJhY2tIYXNoOyIwIj09PSIiK3RoaXMuY291bnRl clR5cGUmJih0aGlzLnNlbmRUaXRsZT0tMT09PWYuYXJyYXlJbmRleE9mKHRoaXMu Y291bnRlcnNOb1RpdGxlLCIiK3RoaXMuY291bnRlcklkKSl9LHNldFRyYWNrSGFz aDpmdW5jdGlvbihhKXt0aGlzLl90cmFja0hhc2g9YX0sc2VuZEhpdDpmdW5jdGlv bihhKXt0aGlzLl9oaXRFeHQoe3VybDphLnVybCwKdGl0bGU6YS50aXRsZSxyZWZl cnJlcjphLnJlZmVycmVyLHZQYXJhbXM6YS52UGFyYW1zLG1vZGVzOnthcjohMCxz YXZlUmVmOiEwLHB2OiEwfSxjYWxsYmFjazphLmNhbGxiYWNrLGN0eDphLmN0eH0p fSxzZW5kRXhwZXJpbWVudHM6ZnVuY3Rpb24oYSl7dGhpcy5faGl0RXh0KHt1cmw6 eCgpLmhyZWYsdGl0bGU6IiIscmVmZXJyZXI6IiIsbW9kZXM6e2V4OiEwLGFyOiEw fSxleHBlcmltZW50czphLmV4cGVyaW1lbnRzLGNhbGxiYWNrOmEuY2FsbGJhY2ss Y3R4OmEuY3R4fSl9LHNlbmRQcmVyZW5kZXJIaXQ6ZnVuY3Rpb24oYSl7dGhpcy5f aGl0RXh0KHt1cmw6YS51cmwsdGl0bGU6YS50aXRsZSxyZWZlcnJlcjphLnJlZmVy cmVyLG1vZGVzOnthcjohMCxwcTohMH19KX0sc2VuZEFqYXhIaXQ6ZnVuY3Rpb24o YSl7dGhpcy5faGl0RXh0KHt1cmw6YS51cmwsdGl0bGU6YS50aXRsZSxyZWZlcnJl cjphLnJlZmVycmVyLG1vZGVzOmEubW9kZXN9KX0sc2VuZFBhcmFtczpmdW5jdGlv bihhLApiLGMpe3RoaXMuX2hpdEV4dCh7dXJsOngoKS5ocmVmLHRpdGxlOiIiLHJl ZmVycmVyOiIiLHZQYXJhbXM6YSxtb2Rlczp7YXI6ITAscGE6ITAsb25seURhdGE6 ITB9LGNhbGxiYWNrOmIsY3R4OmN9KX0sc2VuZEdvYWw6ZnVuY3Rpb24oYSxiKXtp ZigvW1wvJj0/I10vLnRlc3QoYSkpZi53YXJuaW5nKCJJbmNvcnJlY3QgZ29hbCIp O2Vsc2UgaWYoYSl7dmFyIGM9eCgpO3RoaXMuX2hpdEV4dCh7dXJsOiJnb2FsOi8v IitjLmhvc3RuYW1lKyIvIitlbmNvZGVVUklDb21wb25lbnQoYSksdGl0bGU6bS5n ZXREb2N1bWVudFRpdGxlKCkscmVmZXJyZXI6Yy5ocmVmLHZQYXJhbXM6Yi52UGFy YW1zLG1vZGVzOnthcjohMH0sY2FsbGJhY2s6Yi5jYWxsYmFjayxjdHg6Yi5jdHh9 KX1lbHNlIGYud2FybmluZygiRW1wdHkgZ29hbCIpfSxzZW5kQ2xpY2tMaW5rOmZ1 bmN0aW9uKGEpe3RoaXMuX2hpdEV4dCh7dXJsOmEudXJsLHRpdGxlOmEudGl0bGUs cmVmZXJyZXI6eCgpLmhyZWYsbW9kZXM6YS5tb2Rlc30pfSwKc2VuZEV4dExpbms6 ZnVuY3Rpb24oYSl7dGhpcy5faGl0RXh0KHt1cmw6YS51cmwsdGl0bGU6YS50aXRs ZXx8IiIscmVmZXJyZXI6eCgpLmhyZWYsdlBhcmFtczphLnZQYXJhbXMsbW9kZXM6 e2FyOiEwLGxuOiEwLHV0OkphfSxjYWxsYmFjazphLmNhbGxiYWNrLGN0eDphLmN0 eH0pfSxzZW5kRmlsZVVwbG9hZDpmdW5jdGlvbihhKXt0aGlzLl9oaXRFeHQoe3Vy bDphLnVybCx0aXRsZTphLnRpdGxlfHwiIixyZWZlcnJlcjp4KCkuaHJlZix2UGFy YW1zOmEudlBhcmFtcyxtb2Rlczp7YXI6ITAsbG46ITAsZGw6ITB9LGNhbGxiYWNr OmEuY2FsbGJhY2ssY3R4OmEuY3R4fSl9LHNlbmROb3RCb3VuY2U6ZnVuY3Rpb24o YSxiKXt0aGlzLl9oaXRFeHQoe3VybDp4KCkuaHJlZix0aXRsZToiIixyZWZlcnJl cjoiIixtb2Rlczp7Y2w6YSxhcjohMCxuYjohMCxvbmx5RGF0YTohMH0sY2FsbGJh Y2s6Yi5jYWxsYmFjayxjdHg6Yi5jdHh9KX0sc2VuZERldmljZTpmdW5jdGlvbihh KXt0aGlzLl9oaXRFeHQoe2Jyb3dzZXJJbmZvOntkaTphLmRhdGEsCmRpcDphLnBv cnR9LGNhbGxiYWNrOmEuY2FsbGJhY2ssY3R4OmEuY3R4fSl9LF9oaXRFeHQ6ZnVu Y3Rpb24oYSl7ZnVuY3Rpb24gYihhLGIpe2ImJihwW2FdPWIpfXZhciBjLGQsZSxn PXt9O2lmKCFmLmlzTWV0cmlrYVBsYXllcigpKXt2YXIgaD1hLm1vZGVzfHx7fTt2 YXIgaz1hLmJyb3dzZXJJbmZvfHx7fTt2YXIgbT0idW5kZWZpbmVkIiE9dHlwZW9m IGEucmVmZXJyZXI/YS5yZWZlcnJlcjpqYS5sYXN0UmVmZXJyZXI7dmFyIHQ9YS51 cmx8fCIiO3ZhciBwPXt9O2Eubm9oaXQmJmIoIm5vaGl0IiwxKTtoLmFyJiYhaC5v bmx5RGF0YSYmKG09bnVsbD09PW18fCIiPT09bT8iIjp0aGlzLl9wcmVwYXJlSGl0 VXJsKG0pLHQ9dGhpcy5fcHJlcGFyZUhpdFVybChhLnVybCkpO2IoInBhZ2UtcmVm IixmLnRyaW0obSxwYSkpO2IoInBhZ2UtdXJsIixmLnRyaW0odCxwYSkpO2YuaXM0 Qnl0ZXMoYS50aXRsZSkmJmIoImNoYXJzZXQiLCJ1dGYtOCIpO1ZhKCk/YigidXQi LEphKToidW5kZWZpbmVkIiE9CnR5cGVvZiBoLnV0JiZiKCJ1dCIsZi50cmltKGgu dXQsRGIpKTtiKCJleHAiLGEuZXhwZXJpbWVudHMpO2lmKGQ9YS52UGFyYW1zKWQu X195bSYmKGYuaXNOdW1iZXIoZC5fX3ltLnR1cmJvX3BhZ2UpJiYoZy50cD1kLl9f eW0udHVyYm9fcGFnZSksZi5pc051bWJlcihkLl9feW0udHVyYm9fcGFnZV9pZCkm JihnLnRwaWQ9ZC5fX3ltLnR1cmJvX3BhZ2VfaWQpKSxkLm9yZGVyX2lkJiZkLm9y ZGVyX3ByaWNlJiZmLndhcm5pbmcoIlRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQs IHBsZWFzZSB1c2UgbmV3IGVjb21tZXJjZSBtZXRob2RzIGluc3RlYWQ6IGh0dHBz Oi8vY2xjay5ydS9DTGp0biIpLHQ9Zi50b0pTT04oZCksdGhpcy50cmltUGFyYW1z JiZ0Lmxlbmd0aD5FYj9lPSEwOmIoInNpdGUtaW5mbyIsdCk7aC5zYXZlUmVmJiYo amEubGFzdFJlZmVycmVyPW0pO3RoaXMuZmFrZXx8KGM9dGhpcy5fZ2V0VGVjaElu Zm8oYS50aXRsZSxoLHRoaXMuY291bnRlcklkLGEudHMsYS50eix0aGlzLl90cmFj a0hhc2gsCnRoaXMuaGl0SWQsdGhpcy53ZWJ2aXNvcix0aGlzLmNvdW50ZXIsYS5u b2hpdCkpO2YubWl4aW4oayxjLGcpO3RoaXMuc2VuZChwLGssZnVuY3Rpb24oKXtl JiZ0aGlzLmNvdW50ZXIucGFyYW1zKGQpO2EudXNlclBhcmFtcyYmdGhpcy5jb3Vu dGVyLnVzZXJQYXJhbXMoYS51c2VyUGFyYW1zKTtmLmlzRnVuY3Rpb24oYS5jYWxs YmFjaykmJmEuY2FsbGJhY2suYXBwbHkoYS5jdHgsYXJndW1lbnRzKX0sdGhpcyl9 fSxfcHJlcGFyZUhpdFVybDpmdW5jdGlvbihhKXt2YXIgYj14KCksYz1iLmhvc3Qs Yj1iLmhyZWY7aWYoIWYuaXNTdHJpbmcoYSkpcmV0dXJuIGI7aWYoLTEhPWEuc2Vh cmNoKC9eXHcrOlwvXC8vKSlyZXR1cm4gYTt2YXIgZD1hLmNoYXJBdCgwKTtpZigi PyI9PWQpcmV0dXJuIGQ9Yi5zZWFyY2goL1w/LyksLTE9PWQ/YithOmIuc3Vic3Ry KDAsZCkrYTtpZigiIyI9PWQpcmV0dXJuIGQ9Yi5zZWFyY2goLyMvKSwtMT09ZD9i K2E6Yi5zdWJzdHIoMCxkKSthO2lmKCIvIj09ZCl7aWYoZD0KYi5zZWFyY2goYyks LTEhPWQpcmV0dXJuIGIuc3Vic3RyKDAsZCtjLmxlbmd0aCkrYX1lbHNlIHJldHVy biBjPWIuc3BsaXQoIi8iKSxjW2MubGVuZ3RoLTFdPWEsYy5qb2luKCIvIik7cmV0 dXJuIGF9LF9nZXRUZWNoSW5mbzpmdW5jdGlvbihhLGIsYyxkLGUsaCxrLG4sSSx0 KXtmdW5jdGlvbiBsKGEsYixjKXt2YXIgZD0iIitiO2EmJmImJihjfHwtMT09PWQu aW5kZXhPZigiOiIpKSYmKHJbYV09ZCl9ZnVuY3Rpb24gdihhKXtiW2FdJiZsKGEs IjEiKX12YXIgcj17fTtiPWJ8fHt9O2Q9ZHx8SC5nZXRUaW1lc3RhbXAoKTtlPWV8 fEguZ2V0VGltZXpvbmUoKTtsKCJqIixxLmdldEphdmFFbmFibGVkKCk/IjEiOiIi KTtsKCJudCIscS5uZXRUeXBlKCkpO2FhJiZsKCJzIixhYS53aWR0aCsieCIrYWEu aGVpZ2h0KyJ4IisoYWEuY29sb3JEZXB0aHx8YWEucGl4ZWxEZXB0aCkpO2cuZGV2 aWNlUGl4ZWxSYXRpbyYmbCgic2siLGcuZGV2aWNlUGl4ZWxSYXRpbyk7cS5pc0lm cmFtZSgpJiZsKCJpZnIiLAoiMSIpO2cuaWFfZG9jdW1lbnQmJmcuaWFfZG9jdW1l bnQuc2hhcmVVUkwmJmcuaWFfZG9jdW1lbnQucmVmZXJyZXImJmwoImlpYSIsIjEi KTtsKCJhZGIiLGNiLmdldFZhbCgpKTtsKCJmIixxLmdldEZsYXNoVmVyc2lvbigp KTtsKCJsIixxLmdldFNpbHZlcmxpZ2h0VmVyc2lvbigpKTtsKCJmcHIiLHEuZ2V0 RmluZ2VyUHJpbnQoKSk7bCgiY24iLHRoaXMuY291bnRlck51bSk7aWYoIWIucGEp e3ZhciB3PW0uZ2V0Vmlld3BvcnRTaXplKCk7bCgidyIsd1swXSsieCIrd1sxXSl9 bCgieiIsZSk7bCgiaSIsZCk7bCgiZXQiLEguZ2V0U2Vjb25kcygpKTtsKCJlbiIs bS5nZXREb2N1bWVudENoYXJzZXQoKSk7bCgidiIsdGhpcy5fZ2V0VmVyc2lvbigp KTtsKCJjIixuYXZpZ2F0b3IuY29va2llRW5hYmxlZD8iMSI6IiIpO2woImxhIixx LmdldExhbmd1YWdlKCkpO2woIm50ZiIscS5nZXROb3RpZmljYXRpb25QZXJtaXNz aW9uKCkpO2YucmFuZG9tKDEwMCl8fGwoIm5wIixOLmVuY29kZShjYS5lbmNvZGUo Zi50cmltKHEuZ2V0UGxhdGZvcm0oKSwKMTAwKSkpKTtoJiZsKCJ3aCIsIjEiKTtl PSJhciBsbiBkbCBjcGYgYWQgbmIgcGEgcHEgcHYgZXgiLnNwbGl0KCIgIik7Zm9y KGQ9MDtkPGUubGVuZ3RoO2QrKyl2KGVbZF0pO2U9WyJ2YSIsInZ0Iiwic24iLCJz YSIsImhlIl07Yi5uYiYmZS5wdXNoKCJjbCIpO2ZvcihkPTA7ZDxlLmxlbmd0aDtk KyspaD1lW2RdLGwoaCxiW2hdKTtlPW5ldyBRKHtjb3VudGVySWQ6Y30pO2UuaXNF bmFibGVkKCkmJihjPWUuZ2V0U3RvcmFnZUlkKCksZD1lLmdldCgicmVxTnVtIiks dHx8KGQ/ZCsrOmQ9MSksZS5zZXQoInJlcU51bSIsZCksZS5nZXQoInJlcU51bSIp PT1kPyhsKCJscyIsYyksbCgicnFuIixkKSk6KGUucmVtb3ZlKCJyZXFOdW0iKSxl LmNsZWFyU3RvcmFnZUlkKCksMTxkJiYobCgibHMiLGMpLGwoInJxbiIsMCkpKSk7 bCgicm4iLGYucmFuZG9tKCkpO2woImhpZCIsayk7bCgiZHMiLHhiKEkpKTtJLl9m aXJzdFBhaW50fHwoSS5fZmlyc3RQYWludD15YigpLGwoImZwIixJLl9maXJzdFBh aW50KSk7CmlmKG4pe2cubmFtZXx8KGcubmFtZT1NYXRoLnJvdW5kKDY1NTM1Kk1h dGgucmFuZG9tKCkpKTtpZihrPStnLm5hbWUpMD5rJiYoayo9LTEpLGslPTY1NTM1 O2woInduIixrfHxmLmZsZXRjaGVyKGcubmFtZSkpO3RyeXtnLmhpc3RvcnkmJmwo ImhsIixTdHJpbmcoZy5oaXN0b3J5Lmxlbmd0aCkpfWNhdGNoKE9hKXt9fWs9IiI7 dGhpcy5zZW5kVGl0bGUmJihrPXRoaXMuX2dldFRpdGxlKGEpKTtsKCJ0IixrLCEw KTtyZXR1cm4gcn0sX2dldFRpdGxlOmZ1bmN0aW9uKGEpe2E9InVuZGVmaW5lZCI9 PXR5cGVvZiBhPyhhPW0uZ2V0RG9jdW1lbnRUaXRsZSgpKT9mLnRyaW0oYSxkYik6 IiI6Zi50cmltKGEsZGIpO3JldHVybiBhfX0pO2YuYXJyYXkyUHJvcHM9ZnVuY3Rp b24oYSl7dmFyIGI9YS5sZW5ndGgsYz17fSxkPWMsZTtmb3IoZT0wO2U8Yi0xO2Ur Kyl7dmFyIGY9YVtlXTtkW2ZdPXt9O2U8Yi0yJiYoZD1kW2ZdKX1kW2ZdPWFbYi0x XTtyZXR1cm4gY307dmFyIGdhPUEuaW5oZXJpdCh7c2FtcGxpbmc6MSwKY291bnRl cklkOjI2MzAyNTY2LF9pbml0Q29tcG9uZW50OmZ1bmN0aW9uKCl7Z2Euc3VwZXJj bGFzcy5faW5pdENvbXBvbmVudC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5f c2VuZGVyPW5ldyBkYSh7cHJvdG9jb2w6Imh0dHBzOiIsY291bnRlcklkOnRoaXMu Y291bnRlcklkLHJldHJ5OiExLGNvdW50ZXI6e319KX0sbG9nOmZ1bmN0aW9uKCl7 dGhpcy5sb2dQYXJhbXMoZi5hcnJheTJQcm9wcyhhcmd1bWVudHMpKX0sbG9nUGFy YW1zOmZ1bmN0aW9uKGEpe01hdGgucmFuZG9tKCk8dGhpcy5zYW1wbGluZyYmdGhp cy5fc2VuZGVyLnNlbmRIaXQoe3VybDpFLmhyZWYsdGl0bGU6IiIscmVmZXJyZXI6 IiIsdlBhcmFtczphfSl9fSksRmI9Ty5pbmhlcml0KHtyZXNvdXJjZToid2Vidmlz b3IiLHJldHJ5OiEwLHBvc3RQYXJhbXM6WyJ3di1kYXRhIl0sc2VuZFBhY2tldDpm dW5jdGlvbihhLGIsYyxkLGUsaCxrLG4pe2lmKCFhfHwhYS5sZW5ndGgpcmV0dXJu ITE7dmFyIGw9Ti5lbmNvZGUoYSwKITApO2lmKDA9PWwuaW5kZXhPZigiQUFBQUFB QUFBRHciKSYmZy5FcnJvcil7dmFyIG09RXJyb3IoKTsic3RyaW5nIj09dHlwZW9m IG0uc3RhY2smJihuZXcgZ2Eoe3NhbXBsaW5nOi4xfSkpLmxvZygiYmFkIHZpc29y IHBhY2tldCA1IiwxKX1hPXtybjpmLnJhbmRvbSgpLCJwYWdlLXVybCI6Yix3bW9k ZTowLCJ3di10eXBlIjowLCJ3di1oaXQiOmMsInd2LXBhcnQiOmQrMSwid3YtY2hl Y2siOmYuZmxldGNoZXIoYSksInd2LWRhdGEiOmx9O2U9e3Y6dGhpcy5fZ2V0VmVy c2lvbigpLHo6ZSxpOmh9O3JldHVybiB0aGlzLnNlbmQoYSxlLGssbil9fSksRWE9 YmIuaW5oZXJpdCh7cHJvdG9jb2w6IiIsY291bnRlcklkOiIiLGNvdW50ZXJUeXBl OiIiLG1ldGE6bnVsbCxtYXhCdWZmZXJTaXplOjc1MDAsZmx1c2hUaW1lb3V0OjNF NCxzdG9yYWdlS2V5OiJ2aXNvcmJ1ZmYiLGFjdGl2ZTohMSxfaW5pdENvbXBvbmVu dDpmdW5jdGlvbigpe3RoaXMuc3RvcmFnZT1uZXcgUSh7Y291bnRlcklkOnRoaXMu Y291bnRlcklkfSk7CnRoaXMuX3NlbmRlcj1uZXcgRmIoe2dsb2JhbENvbmZpZzp0 aGlzLmdsb2JhbENvbmZpZyxwcm90b2NvbDp0aGlzLnByb3RvY29sLGNvdW50ZXJJ ZDp0aGlzLmNvdW50ZXJJZCxjb3VudGVyVHlwZTp0aGlzLmNvdW50ZXJUeXBlfSk7 RWEuc3VwZXJjbGFzcy5faW5pdENvbXBvbmVudC5hcHBseSh0aGlzLGFyZ3VtZW50 cyl9LG9uRmx1c2g6ZnVuY3Rpb24oYSxiLGMpe3RoaXMuX3NlbmRlci5zZW5kUGFj a2V0KGEsYi51cmwsYi5oaXRJZCxjLGIudGltZXpvbmUsYi50aW1lc3RhbXApfX0p LHRiPU8uaW5oZXJpdCh7cmVzb3VyY2U6IndlYnZpc29yIix0cmFuc3BvcnRzOltX LFRdLHBvc3RQYXJhbXM6WyJ3di1kYXRhIl0sc2VuZENvbnRlbnQ6ZnVuY3Rpb24o YSxiLGMsZCxlLGYsZyl7aWYoIWEpcmV0dXJuITE7LTE8YS5pbmRleE9mKCJcciIp JiYoYT1hLnJlcGxhY2UoL1xyXG4vZywiXG4iKSk7YT17Ind2LXR5cGUiOjEsInBh Z2UtdXJsIjp4KCkuaHJlZiwid3YtaGl0IjpjLCJ3di1kYXRhIjpOLmVuY29kZShj YS5lbmNvZGUoYSkpfTsKcmV0dXJuIDI0NUUzPGFbInd2LWRhdGEiXS5sZW5ndGg/ ITE6dGhpcy5zZW5kKGEse3o6ZCxpOmUscGN0OmJ8fCIifSxmLGcpfX0pO20uZ2V0 RG9jdW1lbnRIVE1MPWZ1bmN0aW9uKCl7dmFyIGE9IiI7dmFyIGI9aC5kb2N1bWVu dEVsZW1lbnQ7dmFyIGM9Yi5vdXRlckhUTUwsZCxlO2lmKGMpYj1jO2Vsc2V7Yz1i LmF0dHJpYnV0ZXM7dmFyIGY9IiI7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKykoZT1j W2RdKSYmKGYrPSIgIitlLm5hbWUrJ1x4M2QiJysoZS52YWx1ZXx8IiIpKyciJyk7 Yj0iXHgzY2h0bWwiK2YrIlx4M2UiK2IuaW5uZXJIVE1MKyJceDNjL2h0bWxceDNl In1pZihjPWguZG9jdHlwZSlhPWMucHVibGljSWQ/JyBQVUJMSUMgIicrYy5wdWJs aWNJZCsnIic6IiIsZj1jLnN5c3RlbUlkPycgIicrYy5zeXN0ZW1JZCsnIic6IiIs YT0iXHgzYyFET0NUWVBFICIrYy5uYW1lK2ErZisiXHgzZVxuIjtyZXR1cm4gYSti fTttLmdldERvY3VtZW50U2Nyb2xsPWZ1bmN0aW9uKCl7cmV0dXJuW2cucGFnZVhP ZmZzZXR8fApoLmRvY3VtZW50RWxlbWVudCYmaC5kb2N1bWVudEVsZW1lbnQuc2Ny b2xsTGVmdHx8aC5ib2R5JiZoLmJvZHkuc2Nyb2xsTGVmdHx8MCxnLnBhZ2VZT2Zm c2V0fHxoLmRvY3VtZW50RWxlbWVudCYmaC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xs VG9wfHxoLmJvZHkmJmguYm9keS5zY3JvbGxUb3B8fDBdfTttLmdldEVsZW1lbnRQ YXJlbnQ9ZnVuY3Rpb24oYSl7aWYoIWF8fGE9PWguZG9jdW1lbnRFbGVtZW50KXJl dHVybiBudWxsO2lmKGE9PWguYm9keSlyZXR1cm4gaC5kb2N1bWVudEVsZW1lbnQ7 dmFyIGI9bnVsbDt0cnl7Yj1hLnBhcmVudE5vZGV9Y2F0Y2goYyl7fXJldHVybiBi fTttLmdldEVsZW1lbnRDaGlsZHJlbj1mdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQs ZSxnO2lmKGEmJihkPWEuY2hpbGROb2Rlcykpe3ZhciBoPTA7Zm9yKGc9ZC5sZW5n dGg7aDxnO2grKyl7dmFyIGs9ZFtoXTsoZT0iSU5QVVQiPT1rLm5vZGVOYW1lJiZr LnR5cGUmJiJoaWRkZW4iPT1rLnR5cGUudG9Mb2NhbGVMb3dlckNhc2UoKSl8fApi JiZrLm5vZGVOYW1lIT1ifHxmLm1lcmdlQXJyYXlzKGMsW2tdKX19cmV0dXJuIGN9 O20uZ2V0RWxlbWVudE5laWdoYm9yUG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGI9 bS5nZXRFbGVtZW50UGFyZW50KGEpLGM7aWYoYil7dmFyIGQ9MDtiPWIuY2hpbGRO b2Rlczt2YXIgZT1hJiZhLm5vZGVOYW1lO2ZvcihjPTA7YzxiLmxlbmd0aDtjKysp e3ZhciBmPWJbY10mJmJbY10ubm9kZU5hbWU7aWYoZT09Zil7aWYoYT09YltjXSly ZXR1cm4gZDtkKyt9fX1yZXR1cm4gMH07bS5nZXRFbGVtZW50WFk9ZnVuY3Rpb24o YSl7dmFyIGI7aWYoIWF8fCFhLm93bmVyRG9jdW1lbnR8fCJQQVJBTSI9PWEudGFn TmFtZXx8YT09aC5ib2R5fHxhPT1oLmRvY3VtZW50RWxlbWVudClyZXR1cm5bMCww XTtpZihhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7YT1hLmdldEJvdW5kaW5nQ2xp ZW50UmVjdCgpO3ZhciBjPW0uZ2V0RG9jdW1lbnRTY3JvbGwoKTtyZXR1cm5bTWF0 aC5yb3VuZChhLmxlZnQrY1swXSksCk1hdGgucm91bmQoYS50b3ArY1sxXSldfWZv cihiPWM9MDthOyljKz1hLm9mZnNldExlZnQsYis9YS5vZmZzZXRUb3AsYT1hLm9m ZnNldFBhcmVudDtyZXR1cm5bYyxiXX07bS5nZXREb2N1bWVudFNpemU9ZnVuY3Rp b24oKXt2YXIgYT1tLmdldFJvb3RFbGVtZW50KCksYj1tLmdldFZpZXdwb3J0U2l6 ZSgpO3JldHVybltNYXRoLm1heChhLnNjcm9sbFdpZHRoLGJbMF0pLE1hdGgubWF4 KGEuc2Nyb2xsSGVpZ2h0LGJbMV0pXX07bS5nZXRFbGVtZW50U2l6ZT1mdW5jdGlv bihhKXt2YXIgYjtyZXR1cm4gYT09aC5ib2R5fHxhPT1oLmRvY3VtZW50RWxlbWVu dD9tLmdldERvY3VtZW50U2l6ZSgpOihiPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0 JiZhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKT9bYi53aWR0aCxiLmhlaWdodF06 W2Eub2Zmc2V0V2lkdGgsYS5vZmZzZXRIZWlnaHRdfTttLmdldEVsZW1lbnRSZWdp b249ZnVuY3Rpb24oYSl7dmFyIGI9bS5nZXRFbGVtZW50WFkoYSk7YT1tLmdldEVs ZW1lbnRTaXplKGEpOwpyZXR1cm5bYlswXSxiWzFdLGFbMF0sYVsxXV19O20uY2Fs Y0NoaWxkcmVuQ2hlY2tzdW09ZnVuY3Rpb24oYSl7dmFyIGI9cihmdW5jdGlvbigp e3JldHVybiBhLmlubmVySFRNTH0sIiIsITApKCl8fCIiO3JldHVybiBmLmZsZXRj aGVyKGIucmVwbGFjZSgvKDxbXj5dKj58W1x1MDAwMC1cdTAwMjBdKS9nLCIiKSl9 O20uZ2V0Rm9ybU51bWJlcj1mdW5jdGlvbihhKXt2YXIgYj1oLmdldEVsZW1lbnRz QnlUYWdOYW1lKCJmb3JtIiksYzt2YXIgZD0wO2ZvcihjPWIubGVuZ3RoO2Q8Yztk KyspaWYoYltkXT09YSlyZXR1cm4gZDtyZXR1cm4tMX07bS5pc0VtcHR5RmllbGQ9 ZnVuY3Rpb24oYSl7cmV0dXJuIklOUFVUIj09YS5ub2RlTmFtZSYmInN1Ym1pdCIh PWEudHlwZSYmImltYWdlIiE9YS50eXBlJiYiaGlkZGVuIiE9YS50eXBlPyJyYWRp byI9PWEudHlwZXx8ImNoZWNrYm94Ij09YS50eXBlPyFhLmNoZWNrZWQ6IWEudmFs dWU6IlRFWFRBUkVBIj09YS5ub2RlTmFtZT8hYS52YWx1ZToKIlNFTEVDVCI9PWEu bm9kZU5hbWU/MD5hLnNlbGVjdGVkSW5kZXg6ITB9O20uY2FsY1RleHRDaGVja3N1 bT1mdW5jdGlvbihhKXt2YXIgYj0iIjthPWEuY2hpbGROb2Rlczt2YXIgYzt2YXIg ZD0wO2ZvcihjPWEubGVuZ3RoO2Q8YztkKyspYVtkXSYmMz09YVtkXS5ub2RlVHlw ZSYmKGIrPWFbZF0ubm9kZVZhbHVlKTtyZXR1cm4gZi5mbGV0Y2hlcihiLnJlcGxh Y2UoL1tcdTAwMDAtXHUwMDIwXSsvZywiIikpfTttLmNhbGNBdHRyaWJDaGVja3N1 bT1mdW5jdGlvbihhKXt2YXIgYj0iIixjPSJ3aWR0aCBoZWlnaHQgYWxpZ24gdGl0 bGUgYWx0IG5hbWUiLnNwbGl0KCIgIiksZDsiSU1HIj09YS50YWdOYW1lJiYoYis9 YS5zcmMudG9Mb3dlckNhc2UoKSk7IkEiPT1hLnRhZ05hbWUmJihiKz1hLmhyZWYu dG9Mb3dlckNhc2UoKSk7Yis9U3RyaW5nKGEuY2xhc3NOYW1lfHwiIikudG9Mb3dl ckNhc2UoKTtmb3IoZD0wO2Q8Yy5sZW5ndGg7ZCsrKWEuZ2V0QXR0cmlidXRlJiYo Yis9U3RyaW5nKGEuZ2V0QXR0cmlidXRlKGNbZF0pfHwKIiIpLnRvTG93ZXJDYXNl KCkpO3JldHVybiBmLmZsZXRjaGVyKGIucmVwbGFjZSgvW1x1MDAwMC1cdTAwMjBd Ky9nLCIiKSl9O20uY2xhc3NOYW1lRXhpc3RzPWZ1bmN0aW9uKGEsYil7dHJ5e3Jl dHVybihuZXcgUmVnRXhwKCIoPzpefFxccykiK2IrIig/Olxcc3wkKSIpKS50ZXN0 KGEuY2xhc3NOYW1lKX1jYXRjaChjKXtyZXR1cm4hMX19O20uZ2V0RWxlbWVudHNC eUNsYXNzTmFtZT1mdW5jdGlvbihhLGIpe3ZhciBjO2I9Ynx8aDt2YXIgZD1iLmdl dEVsZW1lbnRzQnlUYWdOYW1lKCIqIik7dmFyIGU9W107Zm9yKGM9MDtjPGQubGVu Z3RoO2MrKyltLmNsYXNzTmFtZUV4aXN0cyhkW2NdLGEpJiZlLnB1c2goZFtjXSk7 cmV0dXJuIGV9O2YuYXJyYXlGaWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtd LGU7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKyliLmNhbGwoYyxhW2VdLGUsYSkmJmQu cHVzaChhW2VdKTtyZXR1cm4gZH07Zi5hcnJEaWZmPWZ1bmN0aW9uKGEsYil7cmV0 dXJuIGYuYXJyYXlGaWx0ZXIoYSwKZnVuY3Rpb24oYSl7cmV0dXJuLTE9PT1mLmFy cmF5SW5kZXhPZihiLGEpfSl9O2YuZW5jb2RlVVJJQ29tcG9uZW50PWZ1bmN0aW9u KGEsYil7YT1TdHJpbmcoYSk7YiYmYS5sZW5ndGg+YiYmKGE9YS5zdWJzdHIoMCxi KSk7cmV0dXJuKGcuZW5jb2RlVVJJQ29tcG9uZW50fHxnLmVzY2FwZSkoYSkucmVw bGFjZSgvXCsvZywiJTJCIil9O2YuYmluZD1mdW5jdGlvbihhLGIpe3ZhciBjPVtd LnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3JldHVy biBhLmFwcGx5KGJ8fHRoaXMsYy5jb25jYXQoW10uc2xpY2UuY2FsbChhcmd1bWVu dHMsMCkpKX19O2YucGFkPWZ1bmN0aW9uKGEpe3JldHVybigxMD5hPyIwIjoiIikr YX07Zi5jbGVhclRpbWVvdXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZ2V0TmF0aXZl RnVuY3Rpb24oImNsZWFyVGltZW91dCIpKGEpfTtmLl91cmxQYXJzZXI9bnVsbDtm LnBhcnNlVXJsPWZ1bmN0aW9uKGEpe2lmKCF0aGlzLl91cmxQYXJzZXIpdHJ5e3Ro aXMuX3VybFBhcnNlcj0KaC5jcmVhdGVFbGVtZW50KCJhIil9Y2F0Y2goYil7fXJl dHVybiB0aGlzLl91cmxQYXJzZXI/KHRoaXMuX3VybFBhcnNlci5ocmVmPWEse3By b3RvY29sOnRoaXMuX3VybFBhcnNlci5wcm90b2NvbCxob3N0OnRoaXMuX3VybFBh cnNlci5ob3N0LHBvcnQ6dGhpcy5fdXJsUGFyc2VyLnBvcnQsaG9zdG5hbWU6dGhp cy5fdXJsUGFyc2VyLmhvc3RuYW1lLGhhc2g6dGhpcy5fdXJsUGFyc2VyLmhhc2gs c2VhcmNoOnRoaXMuX3VybFBhcnNlci5zZWFyY2gscXVlcnk6dGhpcy5fdXJsUGFy c2VyLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKSxwYXRobmFtZTp0aGlzLl91cmxQ YXJzZXIucGF0aG5hbWV8fCIvIixwYXRoOih0aGlzLl91cmxQYXJzZXIucGF0aG5h bWV8fCIvIikrdGhpcy5fdXJsUGFyc2VyLnNlYXJjaCxocmVmOnRoaXMuX3VybFBh cnNlci5ocmVmfSk6e319O2Yuc2FmZURlY29kZVVSSUNvbXBvbmVudD1mdW5jdGlv bihhKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChhKX1jYXRjaChiKXty ZXR1cm4iIn19OwpmLmdldFRsZD1mdW5jdGlvbigpe2lmKCF0aGlzLl90bGQpe3Zh ciBhPUUuaG9zdG5hbWUuc3BsaXQoIi4iKTt0aGlzLl90bGQ9YVthLmxlbmd0aC0x XX1yZXR1cm4gdGhpcy5fdGxkfTtmLnJlZHVjZT1mdW5jdGlvbihhLGIsYyl7dmFy IGQ9MDtiPT1QJiYoYj1jWzBdLGQrKyk7Zm9yKDtkPGMubGVuZ3RoOyliPWEoYixj W2RdKSxkKys7cmV0dXJuIGJ9O2YuZmlsdGVyPWZ1bmN0aW9uKGEsYil7dmFyIGMs ZD1bXTtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKWEoYltjXSkmJmQucHVzaChiW2Nd KTtyZXR1cm4gZH07Zi5pc0Rldj1mdW5jdGlvbigpe2lmKGYuX2lzRGV2U2V0dGVk KXJldHVybiBmLl9pc0Rldjt0cnl7Zi5faXNEZXZTZXR0ZWQ9ITA7dmFyIGE9bmV3 IEltYWdlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJpZCIse2dldDpmdW5jdGlv bigpe2YuX2lzRGV2PSEwfX0pfWNhdGNoKGIpe319O3ZhciBzYj0hbGEoL3dlYmtp dC8pJiZsYSgvZ2Vja28vKSxlYj1BLmluaGVyaXQoe2hpZDowLAp0ejowLHRzOjAs Y291bnRlcklkOjAsY291bnRlclR5cGU6MCx1cmw6IiIscHJvdG9jb2w6IiIsZW5h YmxlZDohMSxfaW5pdENvbXBvbmVudDpmdW5jdGlvbigpe2lmKHRoaXMuaXNFbmFi bGVkKCkpe3ZhciBhPXRoaXMuX2dldFN0b3JhZ2UoKTt2YXIgYj1hLnJlYWQoInZp c29yYyIpOyJiIiE9YiYmInciIT1iJiYoYj0iIik7aWYoIWEuaXNFbmFibGVkKCl8 fGxhKCJvcGVyYSBtaW5pIikpYj0iYiI7dGhpcy5fdmM9YjsiYiIhPWImJih0aGlz Ll9yZWNvcmRlcj1uZXcgbGIodGhpcy5wcm90b2NvbCx0aGlzLmNvdW50ZXJJZCx0 aGlzLmNvdW50ZXJUeXBlLHRoaXMuaGlkLHRoaXMuZ2xvYmFsQ29uZmlnKSk7ZWIu c3VwZXJjbGFzcy5faW5pdENvbXBvbmVudC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9 fSxzdGFydDpmdW5jdGlvbihhKXtpZih0aGlzLmlzRW5hYmxlZCgpJiZ0aGlzLl9y ZWNvcmRlcil7YT1hfHx7fTt2YXIgYj0rYS5yZWNwO2lmKCFpc0Zpbml0ZShiKXx8 MD5ifHwxPGIpdmFyIGM9CiJ3IjtjfHwoYz10aGlzLmhpZCUxRTQvMUU0PGI/Inci OiJiIik7dGhpcy5fZ2V0U3RvcmFnZSgpLmNyZWF0ZSgidmlzb3JjIixjLDMwKTsi dyI9PWM/KHRoaXMuX3JlY29yZGVyLnN0YXJ0KCksYj1hLmFyY2hfdHlwZSwoYT1h LnVybHMpJiZiJiYibm9uZSIhPWImJnRoaXMuX3JlY29yZGVyLnVwbG9hZFBhZ2Vz KGEsYikpOnRoaXMuX3JlY29yZGVyLnN0b3AoKX19LGlzRW5hYmxlZDpmdW5jdGlv bigpe3ZhciBhPSF0aGlzLmdsb2JhbENvbmZpZy5nZXQoIm9vIik7cmV0dXJuIHRo aXMuZW5hYmxlZCYmYX0sZ2V0VmM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmN9 LF9nZXRTdG9yYWdlOmZ1bmN0aW9uKCl7dGhpcy5fc3RvcmFnZXx8KHRoaXMuX3N0 b3JhZ2U9bmV3IEcoe2NvdW50ZXJJZDp0aGlzLmNvdW50ZXJJZH0pKTtyZXR1cm4g dGhpcy5fc3RvcmFnZX19KTtILmdldE1pbnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4g TWF0aC5mbG9vcigrbmV3IERhdGUvMUUzLzYwKX07dmFyIG9hPQpTLmluaGVyaXQo e2lkOiJzY3JpcHQiLGluZGV4OjYscmVxdWVzdDpmdW5jdGlvbihhLGIsYyxkKXt2 YXIgZT0hMSxsPWYuZ2V0TmF0aXZlRnVuY3Rpb24oImNyZWF0ZUVsZW1lbnQiLGgp KCJzY3JpcHQiKTt0aGlzLnRpbWVvdXQmJmYuc2V0VGltZW91dChmdW5jdGlvbigp e2V8fChlPSEwLG0ucmVtb3ZlTm9kZShsKSxjLmNhbGwoZCwhMSkpfSx0aGlzLnRp bWVvdXQpO2lmKCFsKXJldHVybiBlPSEwLGMuY2FsbChkLCExKSwhMTt2YXIgaz0i X3ltanNwIitmLnJhbmRvbSgpO2dba109cihmdW5jdGlvbigpe2lmKCFlKXt0cnl7 ZGVsZXRlIGdba119Y2F0Y2goSSl7Z1trXT1QfWMuYXBwbHkoZCxmLm1lcmdlQXJy YXlzKFshMF0sYXJndW1lbnRzKSk7ZT0hMDttLnJlbW92ZU5vZGUobCl9fSwidHJh bnNwb3J0LnNjcmlwdCIpO2wudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtsLnNyYz10 aGlzLl9idWlsZFVybChhLGYubWl4aW4oe3dtb2RlOjUsY2FsbGJhY2s6a30sYikp O2wuYXN5bmM9ImFzeW5jIjsKdmFyIG49aC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi aGVhZCIpWzBdO258fChuPWguY3JlYXRlRWxlbWVudCgiaGVhZCIpLGguZG9jdW1l bnRFbGVtZW50LmFwcGVuZENoaWxkKG4pKTtmLmFzeW5jKGZ1bmN0aW9uKCl7bi5p bnNlcnRCZWZvcmUobCxuLmZpcnN0Q2hpbGQpfSk7bC5vbmVycm9yPWZ1bmN0aW9u KCl7ZT0hMDtjLmNhbGwoZCwhMSk7Z1trXT1QfTtyZXR1cm4hMH19KSxmYj1XLmlu aGVyaXQoe2lkOiJYSFJoaXQiLGluZGV4OjEwLF9idWlsZFVybDpmdW5jdGlvbihh LGIpe2Iud21vZGU9NztyZXR1cm4gZmIuc3VwZXJjbGFzcy5fYnVpbGRVcmwuYXBw bHkodGhpcyxbYSxiXSl9LF9wYXJzZVJlc3A6ZnVuY3Rpb24oYSl7dmFyIGI9aWEu cGFyc2UoYSk7aWYoIWIpdGhyb3ciIjtyZXR1cm4gZi5tYXAoZnVuY3Rpb24oYSl7 cmV0dXJuIGJbYV19LGYua2V5cyhiKSl9fSksS2E9ZGEuaW5oZXJpdCh7dHJhbnNw b3J0czpbZmIsb2FdLHRyaW1QYXJhbXM6ITAsX2luaXRDb21wb25lbnQ6ZnVuY3Rp b24oKXtLYS5zdXBlcmNsYXNzLl9pbml0Q29tcG9uZW50LmFwcGx5KHRoaXMsCmFy Z3VtZW50cyk7dGhpcy5faWxTdG9yYWdlPW5ldyBRKHtjb3VudGVySWQ6dGhpcy5j b3VudGVySWR9KX0sY2hlY2tZYW5kZXhIb3N0OmZ1bmN0aW9uKGEpe2lmKGEpe2E6 e2lmKGE9Zi5wYXJzZVVybChhKS5ob3N0Lm1hdGNoKC8oPzpefFwuKSg/OnlhfHlh bmRleClcLig/Olx3K3xjb20/XC5cdyspJC8pKWlmKGE9YVswXS5zcGxpdCgieWFu ZGV4IikucmV2ZXJzZSgpWzBdLnN1YnN0cmluZygxKSwtMSE9Zi5hcnJheUluZGV4 T2YoSy55YW5kZXhXaGl0ZUxpc3RUbGQsYSkpYnJlYWsgYTthPSExfWEmJih0aGlz Lmhvc3Q9Sy5iYXNlVXJsK2EpfX0sc2VuZEhpdDpmdW5jdGlvbihhKXt2YXIgYj17 fSxjPXRoaXMuX2lsU3RvcmFnZS5nZXQoImlsIik7YS52aXNpdENvbG9yJiYoYi52 Yz1hLnZpc2l0Q29sb3IpO2EuaGFzUHJlcmVuZGVyJiYoYi5wcj0xKTtjJiYodGhp cy5faWxTdG9yYWdlLnJlbW92ZSgiaWwiKSxiLmlsdD1OLmVuY29kZShjYS5lbmNv ZGUoZi50cmltKGMsZ2IpKSkpOwp0aGlzLmNoZWNrWWFuZGV4SG9zdChhLnJlZmVy cmVyKTt0aGlzLl9oaXRFeHQoe3VybDphLnVybCxub2hpdDphLm5vaGl0LHRpdGxl OmEudGl0bGUscmVmZXJyZXI6YS5yZWZlcnJlcix2UGFyYW1zOmEudlBhcmFtcyx1 c2VyUGFyYW1zOmEudXNlclBhcmFtcyxleHBlcmltZW50czphLmV4cGVyaW1lbnRz LG1vZGVzOmEubW9kZXMsYnJvd3NlckluZm86Yix0czphLnRzLHR6OmEudHosY2Fs bGJhY2s6YS5jYWxsYmFjayxjdHg6YS5jdHh9KX19KSxHYj1BLmluaGVyaXQoe2Np ZDozLGNudDowLF9pbml0Q29tcG9uZW50OmZ1bmN0aW9uKCl7dGhpcy5fc3RvcmFn ZT1uZXcgUX0saGl0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz10aGlzLl9zdG9y YWdlLmdldCgid2FzU3luY2VkIik7YyYmYy50aW1lKzg2NEU1PituZXcgRGF0ZXx8 dGhpcy5nbG9iYWxDb25maWcuZ2V0KCJmYWtlSGl0Iik/YSgpOih0aGlzLmdsb2Jh bENvbmZpZy5zZXQoImZha2VIaXQiLCEwKSx0aGlzLl9nZXRTZW5kZXIoKS5zZW5k SGl0KHtjYWxsYmFjazpmdW5jdGlvbigpe2IuX3N0b3JhZ2Uuc2V0KCJ3YXNTeW5j ZWQiLAp7dGltZTorbmV3IERhdGV9KTthKCl9fSkpfSxfZ2V0U2VuZGVyOmZ1bmN0 aW9uKCl7dGhpcy5fc2VuZGVyfHwodGhpcy5fc2VuZGVyPW5ldyBLYSh7cHJvdG9j b2w6Imh0dHBzOiIsY291bnRlclR5cGU6dGhpcy5jbnQsY291bnRlcklkOnRoaXMu Y2lkLHNlbmRUaXRsZTohMSxnbG9iYWxDb25maWc6dGhpcy5nbG9iYWxDb25maWcs ZmFrZTohMH0pKTtyZXR1cm4gdGhpcy5fc2VuZGVyfX0pLGhiPUEuaW5oZXJpdCh7 YmFzZVVybDpLLmJhc2VVcmwsZ2xvYmFsQ29uZmlnOncsYmFzZVRsZDoicnUiLF9p bml0Q29tcG9uZW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcztoYi5zdXBlcmNsYXNz Ll9pbml0Q29tcG9uZW50LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnN5bmNU bGRzPWYucmVkdWNlKGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGMoYSl9LEsueWFuZGV4 V2hpdGVMaXN0VGxkLFtmLmJpbmQoZi5maWx0ZXIsbnVsbCxmdW5jdGlvbihiKXty ZXR1cm4gYiE9PWEuYmFzZVRsZH0pLGYuYmluZChmLnJlZHVjZSwKbnVsbCxmdW5j dGlvbihhLGMpe2FbY109W2NdO3JldHVybiBhfSx7fSldKX0sbGFuZ1RvRG9tYWlu OntrYToiZ2UiLHJvOiJtZCIsdGc6InRqIix0azoidG0iLGV0OiJlZSIsaHk6ImNv bS5hbSIsaGU6ImNvLmxpIixreToia2ciLHVrOiJ1YSIsYmU6ImJ5Iix0cjoiY29t LnRyIixrazoia3oifSxzeW5jOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz10aGlz Ll9uZWVkKCksZD1WYSgpOyF0aGlzLl9pcygpJiZjPyh0aGlzLl9zZXRTdGF0dXMo ITApLGQ/dGhpcy5fZ2V0Q24oKS5oaXQoZnVuY3Rpb24oKXtiLl9zeW5jKGMsYSl9 KTphKGZ1bmN0aW9uKCl7fSkpOmEoKTtkJiZ0aGlzLl9hZGRNZGEoKX0sX2FkZE1k YTpmdW5jdGlvbigpe3ZhciBhPW5ldyBHKHtza2lwUHJlZml4OiEwfSksYj1uZXcg RyxjPWEucmVhZCgibWRhIik7IjAiIT09YyYmIjEiIT09YyYmYS5jcmVhdGUoIm1k YSIsIjAiLDEwMzY4MDApO2IucmVhZCgibWRhIikmJmIuZXJhc2UoIm1kYSIpfSxf aXM6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuISF0aGlzLmdsb2JhbENvbmZpZy5nZXQo InN0YXJ0U3luYyIpfWNhdGNoKGEpe3JldHVybiExfX0sCl9zZXRTdGF0dXM6ZnVu Y3Rpb24oYSl7dHJ5e3RoaXMuZ2xvYmFsQ29uZmlnLnNldCgic3RhcnRTeW5jIixh KX1jYXRjaChiKXt9fSxfbmVlZDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2dldERv bWFpbkJ5TGFuZygpLGI9dGhpcy5fZ2V0VGxkKCksYz1bXSxkOyhkPXRoaXMuc3lu Y1RsZHNbYl0pJiZjLnB1c2guYXBwbHkoYyxkKTtkPXRoaXMuc3luY1RsZHNbYV07 YSE9PWImJmQmJmMucHVzaC5hcHBseShjLGQpO3ZhciBlPXRoaXMuX2dldExzKCku Z2V0KCJzeW5jZWQiKXx8e307Yz1mLmFycmF5RmlsdGVyKGMsZnVuY3Rpb24oYSl7 cmV0dXJuKGVbYV18fDEpKzE0NDA8SC5nZXRNaW51dGVzKCl9KTtyZXR1cm4gYy5s ZW5ndGgmJmN8fCExfSxfc3luYzpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MCxlPUsu cHJvdG9jb2wrIi8vIixmPWEubGVuZ3RoLGc9dGhpcztpZigwPGYpe2I9Ynx8ZnVu Y3Rpb24oKXt9O3ZhciBoPWZ1bmN0aW9uKCl7ZCsrO2Y9PT1kJiZiKCl9O3ZhciBr PWcuX2dldExzKCk7CnZhciBtPW5ldyBaKHt9KTtmb3IoYz0wO2M8ZjtjKyspKGZ1 bmN0aW9uKGEpe20ucmVxdWVzdChlKyhnLmJhc2VVcmwrYSkrIi9zeW5jX2Nvb2tp ZV9pbWFnZV9jaGVjayIse30sZnVuY3Rpb24oYil7aCgpO3ZhciBjPUguZ2V0TWlu dXRlcygpO2J8fChjLT0xNDM1KTtiPWsuZ2V0KCJzeW5jZWQiKXx8e307YlthXT1j O2suc2V0KCJzeW5jZWQiLGIpfSl9KShhW2NdKX1lbHNlIGIoKX0sX2dldENuOmZ1 bmN0aW9uKCl7dGhpcy5fY258fCh0aGlzLl9jbj1uZXcgR2Ioe2Zha2U6ITAsZ2xv YmFsQ29uZmlnOnRoaXMuZ2xvYmFsQ29uZmlnfSkpO3JldHVybiB0aGlzLl9jbn0s X2dldExzOmZ1bmN0aW9uKCl7dGhpcy5fbHN8fCh0aGlzLl9scz1uZXcgUSk7cmV0 dXJuIHRoaXMuX2xzfSxfZ2V0VGxkOmZ1bmN0aW9uKCl7dmFyIGE9Zi5nZXRUbGQo KTtyZXR1cm57YW06ImNvbS5hbSIsdHI6ImNvbS50ciIsZ2U6ImNvbS5nZSIsaWw6 ImNvLmlsIiwiXHUwNDQwXHUwNDQ0IjoicnUiLCJ4bi0tcDFhaSI6InJ1IiwKIlx1 MDQ0M1x1MDQzYVx1MDQ0MCI6InVhIiwieG4tLWoxYW1oIjoidWEiLCJcdTA0MzFc dTA0MzVcdTA0M2IiOiJieSIsInhuLS05MGFpcyI6ImJ5In1bYV18fGF9LF9nZXRE b21haW5CeUxhbmc6ZnVuY3Rpb24oKXtpZighZy5uYXZpZ2F0b3IpcmV0dXJuInJ1 Ijt0cnl7dmFyIGE9bmF2aWdhdG9yLmxhbmd1YWdlcz9uYXZpZ2F0b3IubGFuZ3Vh Z2VzWzBdOnEuZ2V0TGFuZ3VhZ2UoKX1jYXRjaChiKXt9YT0oYXx8IiIpLnRvTG93 ZXJDYXNlKCkuc3BsaXQoIi0iKVswXTtyZXR1cm4gdGhpcy5sYW5nVG9Eb21haW5b YV18fCJydSJ9fSksSGI9Vy5pbmhlcml0KHtpZDoiUmF3Qm9keVhIUiIsaW5kZXg6 OSxwb3N0UGFyYW1zOlsiYm9keSJdLF9zZXRIZWFkZXJzOmZ1bmN0aW9uKCl7fSxf cHJlcGFyZVBvc3RQYXJhbXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucG9zdC5ib2R5 fHwiIn19KTtxLmlzQW5kcm9pZD1yKGZ1bmN0aW9uKCl7dmFyIGE9bmF2aWdhdG9y LnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLApiPXEuZ2V0UGxhdGZvcm0oKXx8IiI7 cmV0dXJuLTE8YS5pbmRleE9mKCJhbmRyb2lkIikmJi0xPGEuaW5kZXhPZigibW9i aWxlIikmJmIubWF0Y2goL15hbmRyb2lkfGxpbnV4IGFybXYvaSl9LCIiLCEwKTtx LmlzSU9TPXIoZnVuY3Rpb24oKXt2YXIgYT1xLmdldFBsYXRmb3JtKCl8fCIiO3Jl dHVybiJpUGhvbmUiPT09YXx8ImlQYWQiPT09YX0sIiIsITApO3ZhciBlYT17X3Vy bDpLLnByb3RvY29sKyIvLyIrSy5ob3N0KyIvdXNlcl9zdG9yYWdlX3NldD8iLF9w YXJhbXM6e30saW5pdDpmdW5jdGlvbihhKXt0aGlzLl9wYXJhbXM9YXx8e319LHNh dmU6ZnVuY3Rpb24oYSxiKXt0aGlzLl9nZXRSZXEoKS5yZXF1ZXN0KHRoaXMuX3Vy bCtVLnN0cmluZ2lmeSh7a2V5OmEsdmFsdWU6Zi50b0pTT04oYil9KSk7dGhpcy5f Z2V0THMoKS5zZXQoYSxiKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybntyZW1vdGU6 dGhpcy5fcGFyYW1zW2FdLGxvY2FsOnRoaXMuX2dldExzKCkuZ2V0KGEpfX0sZ2V0 TnVtOmZ1bmN0aW9uKGEpe2E9CnRoaXMuZ2V0KGEpO3JldHVybiBNYXRoLm1heCgr YS5yZW1vdGV8fDAsK2EubG9jYWx8fDApfSxfZ2V0THM6ZnVuY3Rpb24oKXt0aGlz Ll9sc3x8KHRoaXMuX2xzPW5ldyBRKTtyZXR1cm4gdGhpcy5fbHN9LF9nZXRSZXE6 ZnVuY3Rpb24oKXt0aGlzLl9yZXF8fCh0aGlzLl9yZXE9bmV3IFopO3JldHVybiB0 aGlzLl9yZXF9fSxJYj17c3luYzpyKGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPVsi MzAxMDIiLCIyOTAwOSJdLGY9e3Q6J1VWfEw3LCEiVFtyd2VceDI2RF9ceDNlWkli XFxhVyM5OFkuUEM2ayd9O3RoaXMuZ2xvYmFsQ29uZmlnPWR8fHc7aWYodGhpcy5f ZW5hYmxlZChhLGIsYykpe3RoaXMuX3NldFN0YXR1cyghMCk7dmFyIGc9bmV3IEhi KHttZXRob2Q6IkdFVCIsd2l0aENyZWRlbnRpYWxzOiExfSk7dmFyIGg9ZS5sZW5n dGg7KGZ1bmN0aW9uIHQoYSl7dmFyIGI9ZVthXTthPGg/Zy5yZXF1ZXN0KCJodHRw Oi8vMTI3LjAuMC4xOiIrYisiL3AiLGYsZnVuY3Rpb24oYyxkKXtjPwp0aGlzLl9z YXZlKGMsZCxiKTp0LmNhbGwodGhpcyxhKzEpfSx0aGlzKTp0aGlzLl9zYXZlKCEx KX0pLmNhbGwodGhpcywwKX19LCJkcyIpLF9zYXZlOmZ1bmN0aW9uKGEsYixjKXt2 YXIgZD1ILmdldE1pbnV0ZXMoKTthPyhuZXcgZGEoe3Byb3RvY29sOiJodHRwczoi LGNvdW50ZXJUeXBlOjAsY291bnRlcklkOjQyODIyODk5LHNlbmRUaXRsZTohMSxm YWtlOiEwfSkpLnNlbmREZXZpY2Uoe2RhdGE6Zi50cmltKGIpLHBvcnQ6Y30pOmQt PTQ1O2VhLnNhdmUoImRzIixkKX0sX2lzOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiEh dGhpcy5nbG9iYWxDb25maWcuZ2V0KCJkU3luYyIpfWNhdGNoKGEpe3JldHVybiEx fX0sX2VuYWJsZWQ6ZnVuY3Rpb24oYSxiLGMpe2lmKCEoNjA8SC5nZXRNaW51dGVz KCktZWEuZ2V0TnVtKCJkcyIpKXx8dGhpcy5faXMoKXx8Zi5pc0RldigpKXJldHVy biExO2E9MD09PWImJjA8PWYuYXJyYXlJbmRleE9mKFszOTM3MDA5NSwxMjgyMjUz LDI5MzAyMzM1LDQzNjUzNDg0LAo0MTczNDk0NCwzMTA0ODA4MSwxNjQ0MzEzOSwy NzczNzM0Niw0MTg3MDQ5OSwzMzkxMTUxNCwzMDc0NDg3Myw1NTY0Mzk1LDI1ODA0 ODddLGEpO2E9MD09eCgpLmhvc3RuYW1lLnNlYXJjaCgvXiguKlwuKT8oKHlhfHlh bmRleChcLXRlYW0pPylcLihjb21cLik/XHcrfChhdXRvfGtpbm9wb2lzaylcLnJ1 fHlhZGlcLnNrfHlhc3RhdGljXC5uZXQpJC8pfHwhYyYmLjE+PU1hdGgucmFuZG9t KCkmJmE7Yz0iaHR0cDoiPT09RS5wcm90b2NvbCYmcS5pc0lPUygpJiZhO3JldHVy biBxLmlzQW5kcm9pZCgpJiZhfHxjfSxfc2V0U3RhdHVzOmZ1bmN0aW9uKGEpe3Ry eXt0aGlzLmdsb2JhbENvbmZpZy5zZXQoImRTeW5jIixhKX1jYXRjaChiKXt9fX0s Qz17Z2V0UG9zOmZ1bmN0aW9uKGEpe3ZhciBiPW0uZ2V0Um9vdEVsZW1lbnQoKSxj PW0uZ2V0RG9jdW1lbnRTY3JvbGwoKTtyZXR1cm5bYS5wYWdlWHx8YS5jbGllbnRY K2NbMF0tKGIuY2xpZW50TGVmdHx8MCl8fDAsYS5wYWdlWXx8YS5jbGllbnRZKwpj WzFdLShiLmNsaWVudFRvcHx8MCl8fDBdfSxnZXRUYXJnZXQ6ZnVuY3Rpb24oYSl7 dmFyIGI9bnVsbDt0cnl7KGI9YS50YXJnZXR8fGEuc3JjRWxlbWVudCkmJiFiLm93 bmVyRG9jdW1lbnQmJmIuZG9jdW1lbnRFbGVtZW50JiYoYj1iLmRvY3VtZW50RWxl bWVudCl9Y2F0Y2goYyl7fXJldHVybiBifSxnZXRNb3VzZUJ1dHRvbjpmdW5jdGlv bihhKXtyZXR1cm4gYS53aGljaHx8YS5idXR0b249PVA/YS53aGljaDphLmJ1dHRv biYxPzE6YS5idXR0b24mMj8zOmEuYnV0dG9uJjQ/MjowfSxwcmV2ZW50OmZ1bmN0 aW9uKGEpe2E9YXx8Zy5ldmVudDthLnByZXZlbnREZWZhdWx0P2EucHJldmVudERl ZmF1bHQoKTphLnJldHVyblZhbHVlPSExfX07Qy5kaXNwYXRjaEN1c3RvbUV2ZW50 PXIoZnVuY3Rpb24oYSxiKXt2YXIgYztiPWJ8fGg7aWYoYz1mLmdldE5hdGl2ZUZ1 bmN0aW9uKCJjcmVhdGVFdmVudCIsaCkoIkV2ZW50IikpYy5pbml0RXZlbnQoYSwh MSwhMSksZi5nZXROYXRpdmVGdW5jdGlvbigiZGlzcGF0Y2hFdmVudCIsCmIpKGMp fSwiZXZ0LmRpc3BhdGNoIik7dmFyIGphPXtsYXN0UmVmZXJyZXI6bnVsbH07cS5p c0lFPWZ1bmN0aW9uKCl7cmV0dXJuIGgmJiFoLmFkZEV2ZW50TGlzdGVuZXJ8fCEx fTtxLmlzQ2hyb21lUGRmPWZ1bmN0aW9uKCl7dmFyIGEsYj1uYXZpZ2F0b3IucGx1 Z2lucztpZihiJiZiLmxlbmd0aClmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKWlmKC9D aHJvbWUgUERGIFZpZXdlci8udGVzdChiW2FdLm5hbWUpKXJldHVybiEwO3JldHVy biExfTt2YXIgZmE9e307ZmEuX2Nvb2tpZT1uZXcgRyh7b25seUN1cnJlbnREb21h aW46ITB9KTtmYS5sb2c9cihmdW5jdGlvbigpe3ZhciBhPS0xPEUuaHJlZi5pbmRl eE9mKCJfeW1fZGVidWdceDNkMSIpfHxnLl95bV9kZWJ1ZzthJiZ0aGlzLl9jb29r aWUuY3JlYXRlKCJkZWJ1ZyIsIjEiKTtnLmNvbnNvbGUmJmNvbnNvbGUubG9nJiYo YXx8IjEiPT09dGhpcy5fY29va2llLnJlYWQoImRlYnVnIikpJiZjb25zb2xlLmxv Zy5hcHBseShjb25zb2xlLAphcmd1bWVudHMpfSwiRGVidWdDb25zb2xlLmxvZyIp O3ZhciBKYj1PLmluaGVyaXQoe3Jlc291cmNlOiJjbG1hcCIscmV0cnk6ITAsdHJh bnNwb3J0czpbWl0sc2VuZENsaWNrOmZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuc2Vu ZCh7InBhZ2UtdXJsIjphLCJwb2ludGVyLWNsaWNrIjpifSx7fSxjLGQpfX0pLEti PUEuaW5oZXJpdCh7ZmlsdGVyOm51bGwsaWdub3JlVGFnczpbXSxxdW90YTowLGlz VHJhY2tIYXNoOiExLHByb3RvY29sOiIiLGNvdW50ZXJJZDowLGNvdW50ZXJUeXBl OjAsc3RhcnRUaW1lOjAsTUFYX0xFTl9QQVRIOjEyOCxUSU1FT1VUX0NMSUNLOjUw LFRJTUVPVVRfU0FNRV9DTElDS1M6MUUzLERFTFRBX1NBTUVfQ0xJQ0tTOjIsdGFn czoiQSBCIEJJRyBCT0RZIEJVVFRPTiBERCBESVYgREwgRFQgRU0gRklFTERTRVQg Rk9STSBIMSBIMiBIMyBINCBINSBINiBIUiBJIElNRyBJTlBVVCBMSSBPTCBQIFBS RSBTRUxFQ1QgU01BTEwgU1BBTiBTVFJPTkcgU1VCIFNVUCBUQUJMRSBUQk9EWSBU RCBURVhUQVJFQSBURk9PVCBUSCBUSEVBRCBUUiBVIFVMIEFCQlIgQVJFQSBCTE9D S1FVT1RFIENBUFRJT04gQ0VOVEVSIENJVEUgQ09ERSBDQU5WQVMgREZOIEVNQkVE IEZPTlQgSU5TIEtCRCBMRUdFTkQgTEFCRUwgTUFQIE9CSkVDVCBRIFMgU0FNUCBT VFJJS0UgVFQgQVJUSUNMRSBBVURJTyBBU0lERSBGT09URVIgSEVBREVSIE1FTlUg TUVURVIgTkFWIFBST0dSRVNTIFNFQ1RJT04gVElNRSBWSURFTyBOT0lOREVYIE5P QlIgTUFJTiIuc3BsaXQoIiAiKSwKX2luaXRDb21wb25lbnQ6ZnVuY3Rpb24oKXt2 YXIgYSxiO3RoaXMuX2xhc3RDbGljaz1udWxsO3RoaXMuaGFzUXVvdGE9ISF0aGlz LnF1b3RhO3RoaXMuX3F1b3RhPXRoaXMucXVvdGE7dGhpcy5faWdub3JlVGFncz1b XTtpZih0aGlzLmlnbm9yZVRhZ3MpZm9yKGE9MDthPHRoaXMuaWdub3JlVGFncy5s ZW5ndGg7YSsrKXRoaXMuaWdub3JlVGFnc1thXSYmZi5tZXJnZUFycmF5cyh0aGlz Ll9pZ25vcmVUYWdzLFtTdHJpbmcodGhpcy5pZ25vcmVUYWdzW2FdKS50b1VwcGVy Q2FzZSgpXSk7dGhpcy5fY2FjaGVUYWdzPXt9O2E9NTk7dmFyIGM9U3RyaW5nLmZy b21DaGFyQ29kZTtmb3IoYj0wO2I8dGhpcy50YWdzLmxlbmd0aDtiKyspdGhpcy5f Y2FjaGVUYWdzW3RoaXMudGFnc1tiXV09YyhhKSxjKGEpLGErKzt0aGlzLl9zZW5k ZXI9bmV3IEpiKHtnbG9iYWxDb25maWc6dGhpcy5nbG9iYWxDb25maWcscHJvdG9j b2w6dGhpcy5wcm90b2NvbCxjb3VudGVySWQ6dGhpcy5jb3VudGVySWQsCmNvdW50 ZXJUeXBlOnRoaXMuY291bnRlclR5cGV9KTt0aGlzLl9zdGFydD0hMTt0aGlzLnN0 YXJ0KCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnN0b3AoKX0sc3RhcnQ6ZnVu Y3Rpb24oKXtpZighdGhpcy5fc3RhcnQpay5vbihoLCJjbGljayIsdGhpcy5faGFu ZGxlcix0aGlzKTt0aGlzLl9zdGFydD0hMH0sc3RvcDpmdW5jdGlvbigpe3RoaXMu X3N0YXJ0JiZrLnVuKGgsImNsaWNrIix0aGlzLl9oYW5kbGVyLHRoaXMpO3RoaXMu X3N0YXJ0PSExfSxzZXRUcmFja0hhc2g6ZnVuY3Rpb24oYSl7dGhpcy5pc1RyYWNr SGFzaD1hfSxfaXNJZ25vcmU6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uY2xhc3NOYW1l RXhpc3RzKGEsIih5bS1kaXNhYmxlLWNsaWNrbWFwfHltLWNsaWNrbWFwLWlnbm9y ZSkiKX0sX2hhbmRsZXI6ZnVuY3Rpb24oYSl7YT17ZWw6Qy5nZXRUYXJnZXQoYSks cG9zOkMuZ2V0UG9zKGEpLGJ1dHRvbjpDLmdldE1vdXNlQnV0dG9uKGEpLHRpbWU6 K25ldyBEYXRlfTtpZih0aGlzLl9pc1RyYWNraW5nQ2xpY2soYSkpe3ZhciBiPQpt LmdldEVsZW1lbnRTaXplKGEuZWwpO3ZhciBjPW0uZ2V0RWxlbWVudFhZKGEuZWwp O2I9WyJybiIsZi5yYW5kb20oKSwieCIsTWF0aC5mbG9vcig2NTUzNSooYS5wb3Nb MF0tY1swXSkvKGJbMF18fDEpKSwieSIsTWF0aC5mbG9vcig2NTUzNSooYS5wb3Nb MV0tY1sxXSkvKGJbMV18fDEpKSwidCIsTWF0aC5mbG9vcigoYS50aW1lLXRoaXMu c3RhcnRUaW1lKS8xMDApLCJwIix0aGlzLl9nZXRFbFBhdGgoYS5lbCldO2M9eCgp LmhyZWY7dGhpcy5pc1RyYWNrSGFzaD9mLm1lcmdlQXJyYXlzKGIsWyJ3aCIsIjEi XSk6Yz1jLnNwbGl0KCIjIilbMF07dGhpcy5fc2VuZGVyLnNlbmRDbGljayhmLnRy aW0oYyxwYSksYi5qb2luKCI6IikpO3RoaXMuX2xhc3RDbGljaz1hfX0sX2lzVHJh Y2tpbmdDbGljazpmdW5jdGlvbihhKXt2YXIgYjtpZihnLnltRGlzYWJsZWRDbGlj a21hcHx8Zi5pc01ldHJpa2FQbGF5ZXIoKXx8IWEuZWwpcmV0dXJuITE7dmFyIGM9 YS5lbC50YWdOYW1lO2lmKCgyPT0KYS5idXR0b258fDM9PWEuYnV0dG9uKSYmIkEi IT1jfHx0aGlzLmZpbHRlciYmIXRoaXMuZmlsdGVyKGEuZWwsYykpcmV0dXJuITE7 Zm9yKGI9MDtiPHRoaXMuX2lnbm9yZVRhZ3MubGVuZ3RoO2IrKylpZih0aGlzLl9p Z25vcmVUYWdzW2JdPT1jKXJldHVybiExO2ZvcihjPWEuZWw7Yzspe2lmKHRoaXMu X2lzSWdub3JlKGMpKXJldHVybiExO2M9Yy5wYXJlbnROb2RlfWlmKHRoaXMuX2xh c3RDbGljayl7aWYoYS50aW1lLXRoaXMuX2xhc3RDbGljay50aW1lPHRoaXMuVElN RU9VVF9DTElDSylyZXR1cm4hMTtjPU1hdGguYWJzKHRoaXMuX2xhc3RDbGljay5w b3NbMF0tYS5wb3NbMF0pO2I9TWF0aC5hYnModGhpcy5fbGFzdENsaWNrLnBvc1sx XS1hLnBvc1sxXSk7dmFyIGQ9YS50aW1lLXRoaXMuX2xhc3RDbGljay50aW1lO2lm KHRoaXMuX2xhc3RDbGljay5lbD09YS5lbCYmYzx0aGlzLkRFTFRBX1NBTUVfQ0xJ Q0tTJiZiPHRoaXMuREVMVEFfU0FNRV9DTElDS1MmJmQ8dGhpcy5USU1FT1VUX1NB TUVfQ0xJQ0tTKXJldHVybiExfWlmKHRoaXMuaGFzUXVvdGEpe2lmKCF0aGlzLl9x dW90YSlyZXR1cm4hMTsKdGhpcy5fcXVvdGEtLX1yZXR1cm4hMH0sX2dldEVsUGF0 aDpmdW5jdGlvbihhKXtmb3IodmFyIGI9IiI7YSYmYS5wYXJlbnROb2RlJiYiQk9E WSIhPWEudGFnTmFtZSYmIkhUTUwiIT1hLnRhZ05hbWU7KWIrPXRoaXMuX2NhY2hl VGFnc1thLnRhZ05hbWVdfHwiKiIsYis9bS5nZXRFbGVtZW50TmVpZ2hib3JQb3Np dGlvbihhKXx8IiIsYT1hLnBhcmVudE5vZGU7cmV0dXJuIGYudHJpbShiLHRoaXMu TUFYX0xFTl9QQVRIKX19KTttLmxvYWRTY3JpcHQ9ZnVuY3Rpb24oYSxiKXtiPWJ8 fGc7dmFyIGM9Zi5taXhpbih7dHlwZToidGV4dC9qYXZhc2NyaXB0IixjaGFyc2V0 OiJ1dGYtOCIsYXN5bmM6ITB9LGEpLGQ9Yi5kb2N1bWVudCxlPWYuZ2V0TmF0aXZl RnVuY3Rpb24oImNyZWF0ZUVsZW1lbnQiLGQpLGg9ZSgic2NyaXB0Iik7aWYoaCl7 aC50eXBlPWMudHlwZTtoLmNoYXJzZXQ9Yy5jaGFyc2V0O2guc3JjPWMuc3JjO2Mu YXN5bmMmJihoLmFzeW5jPSEwKTt0cnl7dmFyIGs9ZC5nZXRFbGVtZW50c0J5VGFn TmFtZSgiaGVhZCIpWzBdOwppZighayl7dmFyIG49ZC5nZXRFbGVtZW50c0J5VGFn TmFtZSgiaHRtbCIpWzBdO2s9ZSgiaGVhZCIpO24mJm4uYXBwZW5kQ2hpbGQoayl9 ay5pbnNlcnRCZWZvcmUoaCxrLmZpcnN0Q2hpbGQpO3JldHVybiBofWNhdGNoKEkp e319fTt2YXIgaWI9QS5pbmhlcml0KHtpbmplY3RIYXNoOiJkRzlzYjJ0aCIsQVNT RVNTT1JfQ09PS0lFOiJhc3Nlc3NvciIsY2hlY2tBc3Nlc3NvcjpmdW5jdGlvbigp e3ZhciBhPShuZXcgUmVnRXhwKHRoaXMuaW5qZWN0SGFzaCkpLnRlc3QoZy5sb2Nh dGlvbi5oYXNoKTthJiZHLnNldCh0aGlzLkFTU0VTU09SX0NPT0tJRSk7cmV0dXJu IGF8fEcuZ2V0KHRoaXMuQVNTRVNTT1JfQ09PS0lFKX0sX2luaXRDb21wb25lbnQ6 ZnVuY3Rpb24oKXt0aGlzLmdsb2JhbENvbmZpZy5nZXQoInJlbW90ZUN0cmxJbml0 ZWQiKXx8KHRoaXMuZ2xvYmFsQ29uZmlnLnNldCgicmVtb3RlQ3RybEluaXRlZCIs ITApLGliLnN1cGVyY2xhc3MuX2luaXRDb21wb25lbnQuYXBwbHkodGhpcywKYXJn dW1lbnRzKSx0aGlzLl9leGVjdXRlZE1zZ3M9e30say5vbihnLCJtZXNzYWdlIix0 aGlzLl9vbk1lc3NhZ2UsdGhpcyksdGhpcy5jaGVja0Fzc2Vzc29yKCkmJih0aGlz Lmdsb2JhbENvbmZpZy5zZXQoIm9vIiwhMCksdGhpcy5nbG9iYWxDb25maWcuZ2V0 KCJzdG9wUmVjb2RlciIsZnVuY3Rpb24oKXt9KSgpLG0ubG9hZFNjcmlwdCh7c3Jj OiJodHRwczovL3lhc3RhdGljLm5ldC9tZXRyaWthLXN0YXRpYy13YXRjaC9hc3Nl c3Nvci1pbml0LmpzIn0sZykpKX0sX2J1aWxkUmVtb3RlSWZyYW1lOmZ1bmN0aW9u KGEpe3ZhciBiPWYuZ2V0TmF0aXZlRnVuY3Rpb24oImNyZWF0ZUVsZW1lbnQiLGgp KCJkaXYiKSxjPWguYm9keXx8aC5kb2N1bWVudEVsZW1lbnQ7aWYoYyl7Yi5pbm5l ckhUTUw9J1x4M2NpZnJhbWUgbmFtZVx4M2QiUmVtb3RlSWZyYW1lIiBhbGxvd3Ry YW5zcGFyZW5jeVx4M2QidHJ1ZSIgc3R5bGVceDNkInBvc2l0aW9uOiBhYnNvbHV0 ZTsgbGVmdDogLTk5OXB4OyB0b3A6IC05OTlweDsgd2lkdGg6IDFweDsgaGVpZ2h0 OiAxcHg7Ilx4M2VceDNjL2lmcmFtZVx4M2UnOwp2YXIgZD1iLmZpcnN0Q2hpbGQ7 ZC5vbmxvYWQ9ZnVuY3Rpb24oKXttLmxvYWRTY3JpcHQoe3NyYzphfSxkLmNvbnRl bnRXaW5kb3cpfTtnLl95bV9fcmVtb3RlSWZyYW1lRWw9ZDtiLmNyZWF0ZVNoYWRv d1Jvb3R8fGIud2Via2l0Q3JlYXRlU2hhZG93Um9vdD8oYy5hcHBlbmRDaGlsZChi KSxiLnJlbW92ZUNoaWxkKGQpLChjPWIuY3JlYXRlU2hhZG93Um9vdD9iLmNyZWF0 ZVNoYWRvd1Jvb3QoKTpiLndlYmtpdENyZWF0ZVNoYWRvd1Jvb3QoKSkmJmMuYXBw ZW5kQ2hpbGQoZCksZy5feW1fX3JlbW90ZUlmcmFtZUNvbnRhaW5lcj1iKTooYy5h cHBlbmRDaGlsZChkKSxnLl95bV9fcmVtb3RlSWZyYW1lQ29udGFpbmVyPWQpfX0s X2lzQWxsb3dlZExhbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLTEhPT1mLmFycmF5SW5k ZXhPZihbInJ1IiwidWsiLCJlbiIsInRyIl0sYSl9LF9pc0FsbG93ZWRPcmlnaW46 ZnVuY3Rpb24oYSl7cmV0dXJuL15odHRwOlwvXC8oLitcLik/d2Vidmlzb3JcLmNv bVwvPyQvLnRlc3QoYSl9LApfaXNBbGxvd2VkU3RhdGljOmZ1bmN0aW9uKGEpe3Jl dHVybi9eaHR0cHM/OlwvXC8oKCguK1wuKT9kZXZcLndlYnZpc29yXC5jb20pfCh5 YXN0YXRpY1wubmV0KSkoXC8uKik/JC8udGVzdChhKX0sX29uTWVzc2FnZTpmdW5j dGlvbihhKXt0cnl7dmFyIGI9YS5vcmlnaW59Y2F0Y2goYyl7fWImJnRoaXMuX2lz QWxsb3dlZE9yaWdpbihiKSYmKGI9aWEucGFyc2UoYS5kYXRhKSkmJiJhcHBlbmRy ZW1vdGUiPT09Yi5hY3Rpb24mJnRoaXMuX2lzQWxsb3dlZFN0YXRpYyhiLmRvbWFp bikmJnRoaXMuX2lzQWxsb3dlZExhbmcoYi5sYW5nKSYmIXRoaXMuX2V4ZWN1dGVk TXNnc1tiLmlkXSYmKHRoaXMuX2V4ZWN1dGVkTXNnc1tiLmlkXT0hMCxnLl95bV9f cG9zdE1lc3NhZ2VFdmVudD1hLGcuX3ltX19pbnBhZ2VNb2RlPWIuaW5wYWdlTW9k ZSxnLl95bV9faW5pdE1lc3NhZ2U9Yi5pbml0TWVzc2FnZSx0aGlzLl9idWlsZFJl bW90ZUlmcmFtZShiLmRvbWFpbisiL2Nkbi9pbnBhZ2UtcmVtb3RlLyIrCihiLm5l d1NjcmlwdEFkZHI/Il9pbnBhZ2UtcmVtb3RlXyI6ImlucGFnZS1yZW1vdGUuIikr Yi5sYW5nKyIuanMiKSl9fSk7SC5nZXRUaW1lc3RhbXA9ZnVuY3Rpb24oKXt2YXIg YT1uZXcgRGF0ZSxhPVthLmdldEZ1bGxZZWFyKCksYS5nZXRNb250aCgpKzEsYS5n ZXREYXRlKCksYS5nZXRIb3VycygpLGEuZ2V0TWludXRlcygpLGEuZ2V0U2Vjb25k cygpXSxiPSIiLGM7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKyliKz1mLnBhZChhW2Nd KTtyZXR1cm4gYn07SC5nZXRUaW1lem9uZT1mdW5jdGlvbigpe3JldHVybi0obmV3 IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCl9O3ZhciBqYj1BLmluaGVyaXQoe2Nv dW50ZXI6bnVsbCxwcmVmc0Vjb21tZXJjZTpudWxsLGRhdGFMYXllck5hbWU6ImRh dGFMYXllciIsYWxsb3dlZEV2ZW50czoiY3VycmVuY3lDb2RlIGFkZCBkZWxldGUg cmVtb3ZlIHB1cmNoYXNlIGRldGFpbCIuc3BsaXQoIiAiKSxfaW5pdENvbXBvbmVu dDpmdW5jdGlvbigpe3ZhciBhPQoiY3VzdG9tQXJyIjtqYi5zdXBlcmNsYXNzLl9p bml0Q29tcG9uZW50LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLl9vdmVycmlk ZVB1c2godGhpcy5wcmVmc0Vjb21tZXJjZSl8fChmLmlzU3RyaW5nKHRoaXMucHJl ZnNFY29tbWVyY2UpJiYodGhpcy5kYXRhTGF5ZXJOYW1lPXRoaXMucHJlZnNFY29t bWVyY2UpLGE9dGhpcy5kYXRhTGF5ZXJOYW1lLHRoaXMuX3RyeVRpbWVvdXQ9Zi5i aW5kKHRoaXMuX3RyeVRpbWVvdXQsdGhpcyksdGhpcy5fdHJ5VGltZW91dCgpKTt0 aGlzLmNvdW50ZXIuX2Vjb21tZXJjZT1hfSxfb3ZlcnJpZGVQdXNoOmZ1bmN0aW9u KGEpe2lmKGEmJiJmdW5jdGlvbiI9PXR5cGVvZiBhLnB1c2gpe3ZhciBiPXRoaXM7 Yi5fc2VuZChhKTt2YXIgYz1hLnB1c2g7YS5wdXNoPWZ1bmN0aW9uKCl7Yi5fc2Vu ZChbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSk7Yy5hcHBseSh0aGlzLGFyZ3Vt ZW50cyl9O3JldHVybiEwfXJldHVybiExfSxfdHJ5VGltZW91dDpmdW5jdGlvbigp e3RoaXMuX292ZXJyaWRlUHVzaChnW3RoaXMuZGF0YUxheWVyTmFtZV0pfHwKZi5z ZXRUaW1lb3V0KHRoaXMuX3RyeVRpbWVvdXQsMUUzLCJkbE9ic2VydmVyIil9LF9z ZW5kOmZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9dGhpcy5hbGxvd2VkRXZlbnRzLGQs ZTt2YXIgZz0wO2ZvcihlPWEubGVuZ3RoO2c8ZTtnKyspaWYoKGQ9YVtnXSkmJmQu ZWNvbW1lcmNlKXt2YXIgaD17fTt2YXIgaz0hMTtmLmZvckVhY2hLZXkoZC5lY29t bWVyY2UsZnVuY3Rpb24oYSxiKXswPD1mLmFycmF5SW5kZXhPZihjLGEpJiYoaz0h MCxoW2FdPWIpfSk7ayYmYi5wdXNoKGgpfWIubGVuZ3RoJiZ0aGlzLmNvdW50ZXIu cGFyYW1zKHtfX3ltOntlY29tbWVyY2U6Yn19KX19KSxMYj17bWF0Y2g6ZnVuY3Rp b24oKXt0aGlzLmVuYWJsZWQoKSYmay5yZWFkeShmdW5jdGlvbigpe3ZhciBhPWYu Z2V0TmF0aXZlRnVuY3Rpb24oImNyZWF0ZUVsZW1lbnQiLGgpKCJpZnJhbWUiKTth Lm9ubG9hZD1mdW5jdGlvbigpe2VhLnNhdmUoImNtIixILmdldE1pbnV0ZXMoKSk7 bS5yZW1vdmVOb2RlKGEpfTthLnN0eWxlLmRpc3BsYXk9CiJub25lIjthLnNyYz1L LnByb3RvY29sKyIvLyIrSy5ob3N0KyIvbWV0cmlrYS93YXRjaF9tYXRjaC5odG1s IjtoLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChhKX0pfSxlbmFibGVkOmZ1 bmN0aW9uKCl7cmV0dXJuIDE0NDA8SC5nZXRNaW51dGVzKCktZWEuZ2V0TnVtKCJj bSIpJiYidHIiPT09Zi5nZXRUbGQoKX19O3IoZnVuY3Rpb24oKXsoZnVuY3Rpb24o YSl7ZnVuY3Rpb24gYihkKXtpZihjW2RdKXJldHVybiBjW2RdLmV4cG9ydHM7dmFy IGU9Y1tkXT17aTpkLGw6ITEsZXhwb3J0czp7fX07YVtkXS5jYWxsKGUuZXhwb3J0 cyxlLGUuZXhwb3J0cyxiKTtlLmw9ITA7cmV0dXJuIGUuZXhwb3J0c312YXIgYz17 fTtiLm09YTtiLmM9YztiLmQ9ZnVuY3Rpb24oYSxjLGYpe2IubyhhLGMpfHxPYmpl Y3QuZGVmaW5lUHJvcGVydHkoYSxjLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJs ZTohMCxnZXQ6Zn0pfTtiLm49ZnVuY3Rpb24oYSl7dmFyIGM9YSYmYS5fX2VzTW9k dWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGFbImRlZmF1bHQiXX06CmZ1bmN0aW9uKCl7 cmV0dXJuIGF9O2IuZChjLCJhIixjKTtyZXR1cm4gY307Yi5vPWZ1bmN0aW9uKGEs Yil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChh LGIpfTtiLnA9IiI7cmV0dXJuIGIoYi5zPTMpfSkoezA6ZnVuY3Rpb24oYSxiLGMp e2IuX19lc01vZHVsZT0hMDtiLmxpc3RUb0FycmF5PWZ1bmN0aW9uKGEpe3JldHVy biBhP1tdLnNsaWNlLmNhbGwoYSk6W119fSwxOmZ1bmN0aW9uKGEsYixjKXtiLl9f ZXNNb2R1bGU9ITA7dmFyIGQ9WyIuZ29vZ2xlc3luZGljYXRpb24uY29tLyIsIi9n b29nbGVhZHMiXTtiLmlzR29vZ2xlU3JjPWZ1bmN0aW9uKGEpe3JldHVybiEoIWF8 fCFkLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gMDxhLmluZGV4T2YoYil9KS5s ZW5ndGgpfX0sMzpmdW5jdGlvbihhLGIsYyl7Yi5fX2VzTW9kdWxlPSEwO2E9e2Rl dGVjdEFkOmMoNCkuZGV0ZWN0QWR9O2cuWWE/Zy5ZYS5BZERldGVjdG9yP2E9Zy5Z YS5BZERldGVjdG9yOgpnLllhLkFkRGV0ZWN0b3I9YTpnLllhPXtBZERldGVjdG9y OmF9O2IuQWREZXRlY3Rvcj1hfSwzNDpmdW5jdGlvbihhLGIsYyl7Yi5fX2VzTW9k dWxlPSEwO2IuZ2V0UGFyZW50RWxlbWVudHNDb3VudD1mdW5jdGlvbihhKXtmb3Io dmFyIGI9MDs7KWlmKGE9YS5wYXJlbnRFbGVtZW50KWIrKztlbHNlIHJldHVybiBi fX0sNDpmdW5jdGlvbihhLGIsYyl7Yi5fX2VzTW9kdWxlPSEwO3ZhciBkPWMoNSks ZT1jKDkpLGY9YygzNCksaz1jKDYpLG09aC5ib2R5LHE9aC5kb2N1bWVudEVsZW1l bnQ7Yi5kZXRlY3RBZD1mdW5jdGlvbigpe3ZhciBhPWcucGFnZVlPZmZzZXR8fHEu c2Nyb2xsVG9wfHxtLnNjcm9sbFRvcCxiPWcucGFnZVhPZmZzZXR8fHEuc2Nyb2xs TGVmdHx8bS5zY3JvbGxMZWZ0LGM9cS5jbGllbnRUb3B8fG0uY2xpZW50VG9wfHww LGg9cS5jbGllbnRMZWZ0fHxtLmNsaWVudExlZnR8fDAsbD1xLnNjcm9sbFdpZHRo fHxxLm9mZnNldFdpZHRofHxnLmlubmVyV2lkdGgsbj1xLnNjcm9sbEhlaWdodHx8 CnEub2Zmc2V0SGVpZ2h0fHxnLmlubmVySGVpZ2h0LHI9ay5nZXRGcmllbmx5V2lu ZG93c1RyZWUoZyksdj1bXTtrLndpbmRvd3NUcmVlRWFjaChyLGZ1bmN0aW9uKGEp e3ZhciBiPWEud2luZG93LGM9YS5wYXJlbnQsZj0wPGQuZ2V0UGFyZW50RnJpZW5k bHlJRnJhbWVzKGIuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5sZW5ndGgsZz1l LmdldEFkc0luV2luZG93KGIse2lzSW5JRnJhbWU6Zn0pLGY9Zy5hZEVsZW1lbnRz LGc9Zy5pZnJhbWVQcm92aWRlcnM7aWYoYyl7dmFyIGg9Yi5mcmFtZUVsZW1lbnQs az12LmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS53aW5kb3dzVHJlZT09PWN9 KVswXS5hZEVsZW1lbnRzO2cuZm9yRWFjaChmdW5jdGlvbihhKXtrLnB1c2goe3By b3ZpZGVyOmEsZWxlbWVudDpofSl9KX12LnB1c2goe3dpbmRvd3NUcmVlOmEsYWRF bGVtZW50czpmfSl9KTt2LmZvckVhY2goZnVuY3Rpb24oYSl7YS5hZEVsZW1lbnRz PWEuYWRFbGVtZW50cy5zb3J0KGZ1bmN0aW9uKGEsCmIpe3JldHVybiBmLmdldFBh cmVudEVsZW1lbnRzQ291bnQoYS5lbGVtZW50KS1mLmdldFBhcmVudEVsZW1lbnRz Q291bnQoYi5lbGVtZW50KX0pfSk7dmFyIHc9W10seWE9W107di5mb3JFYWNoKGZ1 bmN0aW9uKGEpe3ZhciBiPWEud2luZG93c1RyZWUsYz1iLnBhcmVudDthPWEuYWRF bGVtZW50czt2YXIgYj1kLmdldFBhcmVudEZyaWVuZGx5SUZyYW1lcyhiLndpbmRv dy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLGU9YltiLmxlbmd0aC0xXTthLmZv ckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5lbGVtZW50O3lhLnB1c2goe3Byb3Zp ZGVyOmEucHJvdmlkZXIsZWxlbWVudDpjP2U6Yn0pfSl9KTt5YS5mb3JFYWNoKGZ1 bmN0aW9uKGQpe3ZhciBlPWQuZWxlbWVudDt2YXIgZj1lLmdldEJvdW5kaW5nQ2xp ZW50UmVjdCgpO3ZhciBnPWYudG9wK2EtYztmPWYubGVmdCtiLWg7dmFyIGs9ZS5j bGllbnRXaWR0aDtlPWUuY2xpZW50SGVpZ2h0O3ZhciBtPWYrayxwPWcrZSx0PTA+ Zj8wOgpmPGw/ZjpsLHE9MD5nPzA6ZzxuP2c6bjsxMDA8PSgobT5sP2w6bT50P206 dCktdCkqKChwPm4/bjpwPnE/cDpxKS1xKSYmdy5wdXNoKHt0b3A6ZyxsZWZ0OmYs d2lkdGg6ayxoZWlnaHQ6ZSxwcm92aWRlcjpkLnByb3ZpZGVyfSl9KTtyZXR1cm57 cGFnZTp7d2lkdGg6bCxoZWlnaHQ6bn0sd2luZG93Ont0b3A6YSxsZWZ0OmIsd2lk dGg6Zy5pbm5lcldpZHRoLGhlaWdodDpnLmlubmVySGVpZ2h0fSxhZHM6d319fSw1 OmZ1bmN0aW9uKGEsYixjKXtiLl9fZXNNb2R1bGU9ITA7Yi5nZXRQYXJlbnRGcmll bmRseUlGcmFtZXM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdOzspdHJ5e2lmKGE9 YS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudCliLnB1c2go YSk7ZWxzZSByZXR1cm4gYn1jYXRjaChsKXtyZXR1cm4gYn19fSw2OmZ1bmN0aW9u KGEsYixjKXtmdW5jdGlvbiBkKGEpe3JldHVybiBoLmxpc3RUb0FycmF5KGEuZG9j dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpKS5maWx0ZXIoZnVu Y3Rpb24oYSl7aWYoZy5pc1NhZmFyaSlyZXR1cm4hMTsKdHJ5e3JldHVybiBhLmNv bnRlbnRXaW5kb3cuZG9jdW1lbnR9Y2F0Y2gocCl7cmV0dXJuITF9fSkubWFwKGZ1 bmN0aW9uKGEpe3JldHVybiBhLmNvbnRlbnRXaW5kb3d9KX1mdW5jdGlvbiBlKGEs Yil7dmFyIGM9e3dpbmRvdzphLGNoaWxkcmVuOltdLHBhcmVudDpifTtjLmNoaWxk cmVuPWQoYSkubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBlKGEsYyl9KTtyZXR1cm4g Y31mdW5jdGlvbiBmKGEsYil7YihhKTthLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rp b24oYSl7cmV0dXJuIGYoYSxiKX0pfWIuX19lc01vZHVsZT0hMDt2YXIgZz1jKDcp LGg9YygwKTtiLmdldEZyaWVubHlXaW5kb3dzVHJlZT1lO2Iud2luZG93c1RyZWVF YWNoPWZ9LDc6ZnVuY3Rpb24oYSxiLGMpe2IuX19lc01vZHVsZT0hMDthPWMoOCk7 Yi5pc1NhZmFyaT1hLmlzU2FmYXJpKCl9LDg6ZnVuY3Rpb24oYSxiLGMpe2IuX19l c01vZHVsZT0hMDtiLmlzU2FmYXJpPWZ1bmN0aW9uKCl7dmFyIGE9bmF2aWdhdG9y LnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpOwpyZXR1cm4tMSE9PWEuaW5kZXhPZigi c2FmYXJpIikmJi0xPT09YS5pbmRleE9mKCJjaHJvbWUiKSYmLTE9PT1hLmluZGV4 T2YoImFuZHJvaWQiKX19LDk6ZnVuY3Rpb24oYSxiLGMpe2IuX19lc01vZHVsZT0h MDt2YXIgZD1jKDApLGU9YygxKTtiLmdldEFkc0luV2luZG93PWZ1bmN0aW9uKGEs Yil7ZnVuY3Rpb24gYyhhLGIpe2IuZm9yRWFjaChmdW5jdGlvbihiKXtxLnB1c2go e3Byb3ZpZGVyOmEsZWxlbWVudDpifSl9KX12YXIgZj1iLmlzSW5JRnJhbWUsZz1h LmRvY3VtZW50LmJvZHksaD1kLmxpc3RUb0FycmF5KGcucXVlcnlTZWxlY3RvckFs bCgiaW1nIikpLGs9ZC5saXN0VG9BcnJheShnLnF1ZXJ5U2VsZWN0b3JBbGwoImlm cmFtZSIpKSxsPWQubGlzdFRvQXJyYXkoZy5xdWVyeVNlbGVjdG9yQWxsKCJzY3Jp cHQiKSksbT1kLmxpc3RUb0FycmF5KGcucXVlcnlTZWxlY3RvckFsbCgiZGl2Iikp LHE9W10scj1bXSx2PWQubGlzdFRvQXJyYXkoZy5xdWVyeVNlbGVjdG9yQWxsKCJ5 YXRhZyIpKSwKdz1kLmxpc3RUb0FycmF5KGcucXVlcnlTZWxlY3RvckFsbCgieWF0 YWcgeWF0YWciKSk7YygieWFuZGV4Iix2LmZpbHRlcihmdW5jdGlvbihhKXtyZXR1 cm4tMT09PXcuaW5kZXhPZihhKX0pKTtjKCJhZHJpdmVyIixrLmZpbHRlcihmdW5j dGlvbihhKXtyZXR1cm4oYT1hLnNyYykmJi0xPGEuaW5kZXhPZigiLmFkcml2ZXIu cnUvIil9KSk7YygiYWRmb3giLGsuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybihh PWEuaWQpJiYtMTxhLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiYWRmb3giKX0pKTtj KCJhZGZveCIsaC5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5zcmMpJiYt MTxhLmluZGV4T2YoIi9iYW5uZXJzLmFkZm94LnJ1LyIpfSkpO2MoImFkZm94Iixt LmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4tMTxhLmlkLmluZGV4T2YoIkFkRm94 X2Jhbm5lcl8iKX0pKTtmJiZoLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4oYT1h LnNyYykmJi0xPGEuaW5kZXhPZigiLmFkZm94LnJ1LyIpfSkubGVuZ3RoJiYKci5w dXNoKCJhZGZveCIpO2suZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBlLmlzR29v Z2xlU3JjKGEuc3JjKX0pLmZvckVhY2goZnVuY3Rpb24oYSl7cS5wdXNoKHtwcm92 aWRlcjoiZ29vZ2xlIixlbGVtZW50OmF9KX0pO2YmJmwuZmlsdGVyKGZ1bmN0aW9u KGEpe3JldHVybiBlLmlzR29vZ2xlU3JjKGEuc3JjKX0pLmxlbmd0aCYmci5wdXNo KCJnb29nbGUiKTtjKCJhd2FwcyIsay5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJu KGE9YS5zcmMpJiYtMTxhLmluZGV4T2YoImF3YXBzLnlhbmRleC5uZXQvIil9KSk7 YygiY3JpdGVvIixrLmZpbHRlcihmdW5jdGlvbihhKXt2YXIgYj1hLnNyYzthPWEu aWQ7cmV0dXJuIGImJigtMTxiLmluZGV4T2YoIi5jcml0ZW8uY29tLyIpfHxhJiYt MTxhLmluZGV4T2YoImN0b19pZnJhbWVfIikpPyEwOiExfSkpO3JldHVybnthZEVs ZW1lbnRzOnEsaWZyYW1lUHJvdmlkZXJzOnJ9fX19KX0sIiIsITApKCk7dmFyIE1i PXtpbml0OmZ1bmN0aW9uKGEsCmIpe2lmKE1hdGgucmFuZG9tKCk8KGJ8fC4wMDUp JiYhdy5nZXQoImFkRGV0ZWN0Iikpe3cuc2V0KCJhZERldGVjdCIsITApO3ZhciBj PWZ1bmN0aW9uKGIpe3ZhciBjPWcuWWEuQWREZXRlY3Rvci5kZXRlY3RBZCgpO3Zh ciBkPWMud2luZG93O3ZhciBlPWMucGFnZTthLnNlbmRQYXJhbXMoe19feW06e2Fk czp7dzp7dDpkLnRvcCxsOmQubGVmdCx3OmQud2lkdGgsaDpkLmhlaWdodH0scDp7 dzplLndpZHRoLGg6ZS5oZWlnaHR9LGE6Zi5tYXAoZnVuY3Rpb24oYSl7cmV0dXJu e3Q6YS50b3AsbDphLmxlZnQsdzphLndpZHRoLGg6YS5oZWlnaHQscDphLnByb3Zp ZGVyfX0sYy5hZHMpLGZ1bGw6Yj8xOjB9fX0pfTt2YXIgZD1yKGZ1bmN0aW9uKCl7 ay51bihnLCJsb2FkIixkKTtjKCEwKX0sIiIsITApO2sub24oZywibG9hZCIsZCk7 Zy5zZXRUaW1lb3V0KHIoYywic2V0VGltZW91dCIsITApLDFFNCl9fX07VS5wYXJz ZT1mdW5jdGlvbihhLGIpe3ZhciBjPXt9LGQ7YT1hJiZhLnJlcGxhY2UoL15cPy8s CiIiKXx8IiI7aWYoYS5sZW5ndGgpe3ZhciBlPWEuc3BsaXQoIlx4MjYiKTtmb3Io ZD0wO2Q8ZS5sZW5ndGg7ZCsrKWlmKGVbZF0pe3ZhciBnPWVbZF0uc3BsaXQoIlx4 M2QiKTtpZihnWzBdKXt2YXIgaD1mLnNhZmVEZWNvZGVVUklDb21wb25lbnQoZ1sw XSk7Zz1mLnNhZmVEZWNvZGVVUklDb21wb25lbnQoKGdbMV18fCIiKS5yZXBsYWNl KC9cKy9nLCIlMjAiKSk7YiYmaCBpbiBjP2YuaXNBcnJheShjW2hdKT9jW2hdLnB1 c2goZyk6Y1toXT1bY1toXSxnXTpjW2hdPWd9fX1yZXR1cm4gY307dmFyIFY9W10s RT14KCksdWE9SC5nZXRUaW1lem9uZSgpLHZhPUguZ2V0VGltZXN0YW1wKCksYWE9 Zy5zY3JlZW4sRGI9NjQscGE9cS5pc0lFKCk/NTEyOjIwNDgsRWI9cS5pc0lFKCk/ NTEyOjIwNDgsZGI9cS5pc0lFKCk/MTAwOjQwMCxnYj0xMDAsSmE9Im5vaW5kZXgi LGtiPS9cLigzZ3B8N3p8YWFjfGFjM3xhY3N8YWl8YXZpfGFwZXxhcGt8YXNmfGJt cHxiejJ8Y2FifGNkcnxjcmMzMnxjc3N8Y3N2fGN1ZXxkaXZ4fGRtZ3xkanZ1P3xk b2MoeHxtfGIpP3xlbWZ8ZXBzfGV4ZXxmbGFjP3xmbHZ8aXNvfHN3ZnxnaWZ8dD9n enxqcGU/Zz98anN8bTN1OD98bTRhfG1wKDN8NHxlP2c/KXxtNHZ8bWQ1fG1rdnxt b3Z8bXNpfG9kc3xvZyhnfG18dil8cHNkfHJhcnxyc3N8cnRmfHNlYXxzZnZ8c2l0 fHNoYTF8c3ZnfHRhcnx0aWY/Znx0b3JyZW50fHRzfHR4dHx2b2J8d2F2ZT98d21h fHdtdnx3bWZ8d2VibXxwcHQoeHxtfGIpP3x4bHMoeHxtfGIpP3xwZGZ8cGhwc3xw bmd8eHBpfGc/emlwKSQvaSwKTmI9K25ldyBEYXRlLExhLGthLFg9IjkzMiI7dy5p bml0KCkuc2V0U2FmZSgiY291bnRlcnMiLHt9KS5zZXRTYWZlKCJoaXRQYXJhbSIs e30pLnNldFNhZmUoImNvdW50ZXJOdW0iLDApLnNldFNhZmUoImhpdElkIixmLnJh bmRvbSgxLDEwNzM3NDE4MjQpKS5zZXRTYWZlKCJfZ2xvYmFsTWV0cmlrYUhpdElk IixmLnJhbmRvbSgpKS5zZXRTYWZlKCJ2IixYKTtnLllhLk1ldHJpa2E9ZnVuY3Rp b24oYSxiLGMsZCl7dmFyIGU9dGhpcztyZXR1cm4gcihmdW5jdGlvbigpe2Z1bmN0 aW9uIGwobCl7dmFyIHU9ITE7aWYody5nZXQoImhpdFBhcmFtIilbaGFdKXtpZigx IT1jfHx3LmdldCgiY291bnRlcnMiKVtoYV0pcmV0dXJuITE7dT0hMH13LmdldCgi Y291bnRlcnMiKVtoYV09ZTt3LmdldCgiaGl0UGFyYW0iKVtoYV09MTtlLl93ZWJ2 aXNvcj16JiZ6LndlYnZpc29yfHwhMTtlLl9kaXJlY3RDYW1wYWlnbj16JiZ6LmRp cmVjdENhbXBhaWduO3omJnoudHJhY2tIYXNoJiZLKCEwKTtpZighdSl7dmFyIEw9 Cm5ldyBlYih7cHJvdG9jb2w6Imh0dHBzOiIsZ2xvYmFsQ29uZmlnOncsY291bnRl cklkOmEsY291bnRlclR5cGU6YyxoaWQ6bGEsdHo6dWEsdHM6dmEsdXJsOkUuaHJl ZixlbmFibGVkOmUuX3dlYnZpc29yfSk7ZS5yZXBsYWNlUGhvbmVzKCk7dT1uZXcg aGIoe2dsb2JhbENvbmZpZzp3fSk7dmFyIHA9ZnVuY3Rpb24odSl7dmFyIG49bmV3 IEthKHtwcm90b2NvbDoiaHR0cHM6Iixjb3VudGVyVHlwZTpjLGNvdW50ZXJJZDph LHRyYWNrSGFzaDpZLGhpdElkOmxhLHdlYnZpc29yOmUuX3dlYnZpc29yLGNvdW50 ZXI6ZSxnbG9iYWxDb25maWc6dyxjb3VudGVyTnVtOm9hfSksTT17dXQ6VCxoZTp6 P35+ei5odHRwRXJyb3I6MCxhZDoxPT1jJiZnLllhJiZnLllhLkRpcmVjdCxwdjoh MCxjcGY6cS5pc0Nocm9tZVBkZigpLHNhdmVSZWY6ITB9O0xhPStuZXcgRGF0ZTtu LnNlbmRIaXQoe3VybDptYSxyZWZlcnJlcjpYLHRpdGxlOm0uZ2V0RG9jdW1lbnRU aXRsZSgpLHZQYXJhbXM6Yix1c2VyUGFyYW1zOlosCm5vaGl0OmQsZXhwZXJpbWVu dHM6YWEsbW9kZXM6TSx2aXNpdENvbG9yOkwuZ2V0VmMoKSxoYXNQcmVyZW5kZXI6 bCx0czp2YSx0ejp1YSxjYWxsYmFjazpmdW5jdGlvbihkLGwpe2Q9ZHx8e307dmFy IG09IjAiIT09ZC5wY3M7ZWEuaW5pdChsKTtMYi5tYXRjaCgpO0liLnN5bmMoYSxj LG0sdyk7ZmEubG9nKCJQYWdlVmlldy4gQ291bnRlciAiLGEsIi4gVVJMOiAiLEUu aHJlZiwiLiBSZWZlcnJlcjogIitoLnJlZmVycmVyLCIuIFBhcmFtczogIixiKTtr YXx8KGthPStuZXcgRGF0ZSk7TC5zdGFydChkLndlYnZpc29yKTt2YXIgbj1kLm1w MjttPW5ldyBHKHtjb3VudGVySWQ6YX0pO20uZXJhc2UoIm1wMl9zdWJzdHMiKTtp ZihuKXtiOnt2YXIgTT1uLmNvbmRpdGlvbnM7dmFyIHE7aWYoTSYmTS5sZW5ndGgp Zm9yKHE9MDtxPE0ubGVuZ3RoO3ErKyl7dmFyIHA9TVtxXTtpZigicmVmIj09cC50 eXBlKXA9emIocCk7ZWxzZSBpZigiYWR2Ij09cC50eXBlKXt2YXIgRDt2YXIgcj1w O3ZhciB0PQpZYS5fbWV0cmlrYS5jb3VudGVyLl9kaXJlY3RDYW1wYWlnbjt2YXIg dj1yLlNlcnZpY2VOYW1lUGF0dGVybjt2YXIgYmE9ci5SZWZlcmVyUGF0dGVybjtw PXQ/ci5kaXJlY3Rfb3JkZXJzOnIuZGlyZWN0X2NhbXA7dmFyIHFhPWgucmVmZXJy ZXIsej1VLnBhcnNlKEUuc2VhcmNoKSxBPUFiKEUuc2VhcmNoLEUuaGFzaCksQj17 fTt2YXIgeD1bInNvdXJjZSIsIm1lZGl1bSIsImNhbXBhaWduIiwidGVybSIsImNv bnRlbnQiXTtmb3IoRD0wO0Q8eC5sZW5ndGg7RCsrKXpbInV0bV8iK3hbRF1dJiYo Qlt4W0RdXT16WyJ1dG1fIit4W0RdXSk7dmFyIEM9dD8iZGlyZWN0LnlhbmRleC5y dSI6QSYmQS5zZXJ2aWNlfHxCLnNvdXJjZTtEPSExO2lmKCFEJiZ2JiZ2Lmxlbmd0 aClmb3IoeD0wO3g8di5sZW5ndGg7eCsrKWlmKChuZXcgUmVnRXhwKHZbeF0sImki KSkudGVzdChDKSl7RD0hMDticmVha31pZighRCYmIXIueWFuZGV4X2RpcmVjdCYm YmEmJmJhLmxlbmd0aClmb3Iodj0wO3Y8YmEubGVuZ3RoO3YrKylpZigobmV3IFJl Z0V4cChiYVt2XSwKImkiKSkudGVzdChxYSkpe0Q9ITA7YnJlYWt9IUQmJnIuZ29v Z2xlX2Fkd29yZHMmJnouZ2NsaWQmJihEPSEwKTtpZihEJiZwJiZwLmxlbmd0aCYm KEQ9ITEsdD10fHxBJiZBLmNhbXBhaWdufHxCJiZCLmNhbXBhaWduKSlmb3Iocj0w O3I8cC5sZW5ndGg7cisrKWlmKHBbcl09PXQpe0Q9ITA7YnJlYWt9cD1EfWVsc2Ug cD0hMTtpZihwKXtNW3FdLnRyYWNrX2lkJiZtLmNyZWF0ZSgibXAyX3RyYWNrIixN W3FdLnRyYWNrX2lkLDQzMjAwKTticmVhayBifX19TT1tLnJlYWQoIm1wMl90cmFj ayIpO249bi5zdWJzdHMmJm4uc3Vic3RzW01dO00mJm4/KG0uY3JlYXRlKCJtcDJf c3Vic3RzIixmLnRvSlNPTihuKSksbT0kYShuKSxlLnBhcmFtcygiX195bSIsbT8i bXBfdHJhY2tpZCI6Im1wX3RyYWNraWRfYmFkIixNKSk6YWIoKX1lbHNlIGFiKCk7 ay5vbihnLCJsb2FkIixlLnJlcGxhY2VQaG9uZXMsZSk7ZS5faW5pdGVkPSEwO3Um JnUoKX19KX07dS5zeW5jKHApfW4oKTt6JiYoei5lbmFibGVBbGw/Cih2KCEwKSx0 KCEwKSxBKCkpOih6LmNsaWNrbWFwJiZ0KHouY2xpY2ttYXApLHoudHJhY2tMaW5r cyYmdih6LnRyYWNrTGlua3MpLHouYWNjdXJhdGVUcmFja0JvdW5jZSYmQSh6LmFj Y3VyYXRlVHJhY2tCb3VuY2UpKSwoei5lY29tbWVyY2V8fHoudXNlRGF0YUxheWVy KSYmbmV3IGpiKHtjb3VudGVyOmUscHJlZnNFY29tbWVyY2U6ei5lY29tbWVyY2V9 KSx6LnRyaWdnZXJFdmVudCYmZi5hc3luYyhmdW5jdGlvbigpe0MuZGlzcGF0Y2hD dXN0b21FdmVudCgieWFjb3VudGVyIithKyJpbml0ZWQiKX0pKX1mdW5jdGlvbiB2 KGEpe3ZhciBiPXt9O3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSAic3RyaW5nIjpiLm9u PSEwO2JyZWFrO2Nhc2UgIm9iamVjdCI6Yi5vbj0hMDticmVhaztjYXNlICJib29s ZWFuIjpiLm9uPWE7YnJlYWs7ZGVmYXVsdDpyZXR1cm59ZS5fdHJhY2tMaW5rcz1i fWZ1bmN0aW9uIG4oKXt2KCExKTtrLm9uKGgsImNsaWNrIixmdW5jdGlvbihhKXtl Ll90cmFja0xpbmtzJiYKZS5fdHJhY2tMaW5rcy5vbiYmSShhKX0pfWZ1bmN0aW9u IEkoYSl7dmFyIGI9dWIoYSksYztpZihiKXthPSExO3ZhciBkPShjPSIiK2IuaHJl Zik/Yy5zcGxpdCgvXD8vKVswXToiIjt2YXIgZT1mdW5jdGlvbihhKXt2YXIgZD1X YShiKTtSLnNlbmRDbGlja0xpbmsoe3VybDpjLHRpdGxlOmM9PWQ/IiI6ZCxtb2Rl czphfSl9O2lmKGtiLnRlc3QoZCl8fGtiLnRlc3QoYyl8fFhhKGMsQil8fFhhKGQs QikpYT0hMDt2YXIgZz1tLmNsYXNzTmFtZUV4aXN0cyhiLCJ5bS1kaXNhYmxlLXRy YWNrbGluayIpO2Q9bS5jbGFzc05hbWVFeGlzdHMoYiwieW0tZXh0ZXJuYWwtbGlu ayIpO2d8fChnPXtsbjohMCxkbDphfSxkP2UoZyk6KGQ9Yi5ob3N0bmFtZXx8Zi5w YXJzZVVybChiLmhyZWYpLmhvc3RuYW1lfHwiIix2Yih4KCkuaG9zdG5hbWUsZCk/ YT8oZy5sbj0hMSxlKGcpKTooYT1XYShiKSkmJmEhPWMmJkouc2V0KCJpbCIsZi50 cmltKGEsZ2IpKTpjJiYtMSE9Yy5zZWFyY2goL14gKihkYXRhfGphdmFzY3JpcHQp Oi9pKXx8CihnLnV0PUphLGUoZykpKSl9fWZ1bmN0aW9uIHQoYil7InVuZGVmaW5l ZCI9PXR5cGVvZiBiJiYoYj0hMCk7ITA9PT1iJiYoYj17fSk7ZS5fY2xpY2ttYXAm JmUuX2NsaWNrbWFwLmRlc3Ryb3koKTtiJiYoZS5fY2xpY2ttYXA9bmV3IEtiKHtn bG9iYWxDb25maWc6dyxmaWx0ZXI6Yi5maWx0ZXIsaWdub3JlVGFnczpiLmlnbm9y ZVRhZ3MscXVvdGE6Yi5xdW90YSxpc1RyYWNrSGFzaDpiLmlzVHJhY2tIYXNoLHBy b3RvY29sOiJodHRwczoiLGNvdW50ZXJJZDphLGNvdW50ZXJUeXBlOmMsc3RhcnRU aW1lOk5ifSkpfWZ1bmN0aW9uIHAoYSxiKXtmdW5jdGlvbiBjKCl7aWYoIXIpe3Am JmYuY2xlYXJUaW1lb3V0KHApO3ZhciBjPW0/TDpMKyArbmV3IERhdGUtbjtjPWIt YzswPmMmJihjPTApO3A9Zi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cj0hMDtlKCEx KTthKCl9LGMsInRyYWNrVXNlclRpbWUiKX19ZnVuY3Rpb24gZCgpe2x8fCh1PSEw LG09ITEsbD0hMCxjKCkpfWZ1bmN0aW9uIGUoYSl7dmFyIGI7CmZvcihiPTA7Yjx0 Lmxlbmd0aDtiKz0zKWlmKGEpay5vbih0W2JdLHRbYisxXSx0W2IrMl0pO2Vsc2Ug ay51bih0W2JdLHRbYisxXSx0W2IrMl0pfXZhciB1PSExLGw9ITEsbT0hMCxMPTAs bj0rbmV3IERhdGUscD1udWxsLHI9ITE7aWYocS5pc0lFKCkpZi5zZXRUaW1lb3V0 KGEsYiwidHJhY2tVc2VyVGltZSIpO2Vsc2V7dmFyIHQ9W2csImJsdXIiLGZ1bmN0 aW9uKCl7bT11PWw9ITA7TCs9K25ldyBEYXRlLW47bj0rbmV3IERhdGU7YygpfSxn LCJmb2N1cyIsZnVuY3Rpb24oKXt1fHxsfHwoTD0wKTtuPStuZXcgRGF0ZTt1PWw9 ITA7bT0hMTtjKCl9LGgsImNsaWNrIixkLGgsIm1vdXNlbW92ZSIsZCxoLCJrZXlk b3duIixkLGgsInNjcm9sbCIsZF07ZSghMCk7YygpfX1mdW5jdGlvbiBBKGIpeyJu dW1iZXIiIT10eXBlb2YgYiYmKGI9MTVFMyk7aWYoIWUuX2lzQWNjdXJhdGVUcmFj a0JvdW5jZSl7ZS5faXNBY2N1cmF0ZVRyYWNrQm91bmNlPSEwO3ZhciBjPW5ldyBR KHtjb3VudGVySWQ6YX0pOwp2YXIgZD1jLmdldCgibGFzdEhpdCIpO2Muc2V0KCJs YXN0SGl0IiwrbmV3IERhdGUpOygoYz1jLmdldCgibGFzdEhpdCIpKSYmKCFkfHxk PGMtMThFNSl8fCF3YihoLnJlZmVycmVyLHgoKS5ocmVmKXx8LjE+TWF0aC5yYW5k b20oKSkmJnAoZnVuY3Rpb24oKXtlLm5vdEJvdW5jZSgpfSxiKX19ZnVuY3Rpb24g SChhKXt2YXIgYj1mdW5jdGlvbigpe3ZhciBhPXgoKS5oYXNoLnNwbGl0KCIjIilb MV07aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhKXJldHVybiExO3ZhciBiPWEuaW5k ZXhPZigiPyIpOzA8YiYmKGE9YS5zdWJzdHJpbmcoMCxiKSk7cmV0dXJuIGF9O3Zh ciBjPWIoKTsoZnVuY3Rpb24gYmEoKXt2YXIgZD1iKCk7ZCE9PWMmJihhKCksYz1k KTtwYT1mLnNldFRpbWVvdXQoYmEsMjAwLCJ0cmFja0hhc2giKX0pKCl9ZnVuY3Rp b24gSyhhKXtpZighMT09PWEpWSYmKCJvbmhhc2hjaGFuZ2UiaW4gZz9rLnVuKGcs Imhhc2hjaGFuZ2UiLE4pOmYuY2xlYXJUaW1lb3V0KHBhKSxZPSExKTsKZWxzZSBp ZihhPU4sIVkpe2lmKCJvbmhhc2hjaGFuZ2UiaW4gZylrLm9uKGcsImhhc2hjaGFu Z2UiLGEpO2Vsc2UgSChhKTtZPSEwfVIuc2V0VHJhY2tIYXNoKFkpO2UuX3RyYWNr SGFzaD1ZfWZ1bmN0aW9uIE4oKXt2YXIgYT17dXQ6VCxhZDoxPT1jJiZnLllhJiZn LllhLkRpcmVjdCx3aDohMCxzYXZlUmVmOiEwLHB2OiEwfTtWPWphLmxhc3RSZWZl cnJlcj1XO1Iuc2VuZEFqYXhIaXQoe3VybDp4KCkuaHJlZix0aXRsZTptLmdldERv Y3VtZW50VGl0bGUoKSxyZWZlcnJlcjpWLG1vZGVzOmF9KTtXPXgoKS5ocmVmfWZ1 bmN0aW9uIFMoYSxiLGMpe2E9eGEucGFyc2VWYWxpZGF0ZShhLGIpO2I9W107YSYm KGIucHVzaChhKSxjPWN8fHt9LGYuaXNGdW5jdGlvbihjLmNhbGxiYWNrKSYmKGIu cHVzaChjLmNhbGxiYWNrKSxjLmN0eCYmYi5wdXNoKGMuY3R4KSkpO2IubGVuZ3Ro JiZlLnBhcmFtcy5hcHBseShlLGIpfXZhciBUPSIiLFY9IiIsVz1qYS5sYXN0UmVm ZXJyZXI9RS5ocmVmO3cuc2V0U2FmZSgiY291bnRlciIsCmUpO2lmKCJvYmplY3Qi PT10eXBlb2YgYSl7dmFyIHo9YTtkPWEuZGVmZXI7VD1hLnV0O2M9YS50eXBlO2I9 YS5wYXJhbXM7dmFyIFo9YS51c2VyUGFyYW1zO3ZhciBhYT16LmV4cGVyaW1lbnRz O3ZhciBjYT16Lm5jazt2YXIgbWE9YS51cmw7dmFyIFg9YS5yZWZlcnJlcjthPWEu aWR9KGZ1bmN0aW9uKGEpe2lmKGcucGVyZm9ybWFuY2UmJiJmdW5jdGlvbiI9PT10 eXBlb2YgcGVyZm9ybWFuY2UuZ2V0RW50cmllcyYmKGE9PT1QJiYoYT0xKSwhKE1h dGgucmFuZG9tKCk+PWEpKSl7YT17MTg4MjY4OTYyMjoxLDIzMTgyMDUwODA6MSwz MTE1ODcxMTA5OjEsMzYwNDg3NTEwMDoxLDMzOTM2Njk5NDoxLDI4OTA0NTIzNjU6 MSw4NDkzNDAxMjM6MSwxNzM4NzI2NDY6MSwyMzQzOTQ3MTU2OjEsNjU1MDEyOTM3 OjEsMTk5NjUzOTY1NDoxLDIwNjU0OTgxODU6MSw4MjM2NTEyNzQ6MSwxMjI4MjQ2 MToxLDE1NTU3MTkzMjg6MSwxNDE3MjI5MDkzOjEsMTM4Mzk2OTg1OjF9O3ZhciBi PXBlcmZvcm1hbmNlLmdldEVudHJpZXMoKSwKYz17fSxkO2ZvcihkPTA7ZDxiLmxl bmd0aDtkKyspe3ZhciBlPWJbZF07dmFyIGg9ZS5uYW1lLnJlcGxhY2UoL15odHRw cz86XC9cLy8sIiIpLnNwbGl0KCI/IilbMF07dmFyIGs9Zi5mbnYzMmEoaCk7YVtr XSYmIWNbaF0mJihjW2hdPXtkbnM6TWF0aC5yb3VuZChlLmRvbWFpbkxvb2t1cEVu ZC1lLmRvbWFpbkxvb2t1cFN0YXJ0KSx0Y3A6TWF0aC5yb3VuZChlLmNvbm5lY3RF bmQtZS5jb25uZWN0U3RhcnQpLGR1cmF0aW9uOk1hdGgucm91bmQoZS5kdXJhdGlv bikscmVzcG9uc2U6TWF0aC5yb3VuZChlLnJlc3BvbnNlRW5kLWUucmVxdWVzdFN0 YXJ0KSxwYWdlczpFLmhyZWZ9KX1mLmtleXMoYykubGVuZ3RoJiYobmV3IGdhKS5s b2dQYXJhbXMoe3RpbWluZ3M4OmN9KX19KSgyNDIyNjQ0Nz09YT8xOi4wMDIpO21h PW1hP21hOkUuaHJlZjtYPVg/WDpoLnJlZmVycmVyO2E9YXx8MDsvXlxkKyQvLnRl c3QoYSl8fChhPTApO2M9Y3x8MDt2YXIgaGE9YSsiOiIrYztpZih3LmdldCgiY291 bnRlcnMiKVtoYV0pcmV0dXJuIHcuZ2V0KCJjb3VudGVycyIpW2hhXTsKdmFyIGxh PXcuZ2V0KCJoaXRJZCIpO3cuc2V0KCJjb3VudGVyTnVtIix3LmdldCgiY291bnRl ck51bSIpKzEpO3ZhciBvYT13LmdldCgiY291bnRlck51bSIpO2NhfHwoTy5pbml0 Q29va2llKCksY2IuaW5pdCh3KSk7Ty5yZXRyYW5zbWl0KHcpO3ZhciBSPW5ldyBk YSh7cHJvdG9jb2w6Imh0dHBzOiIsY291bnRlclR5cGU6Yyxjb3VudGVySWQ6YSxo aXRJZDpsYSxjb3VudGVyOmUsZ2xvYmFsQ29uZmlnOncsY291bnRlck51bTpvYX0p O2UucmVwbGFjZVBob25lcz1yKGZ1bmN0aW9uKCl7dmFyIGIsYzt0cnl7KGI9KG5l dyBHKHtjb3VudGVySWQ6YX0pKS5yZWFkKCJtcDJfc3Vic3RzIikpJiYoYz1pYS5w YXJzZShiKSkmJiRhKGMsITApfWNhdGNoKE0pe31yZXR1cm4gZX0sImNvdW50ZXIu cmVwbGFjZVBob25lcyIpO2UucmVhY2hHb2FsPXIoZnVuY3Rpb24oYixjLGQsZil7 Mjw9YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09PXR5cGVvZiBjJiYoZj1k LGQ9YyxjPVApO2ZhLmxvZygiUmVhY2ggZ29hbC4gQ291bnRlcjogIisKYSsiLiBH b2FsIGlkOiAiK2IrIi4gUGFyYW1zOiAiLGMpO1Iuc2VuZEdvYWwoYix7dlBhcmFt czpjLGNhbGxiYWNrOmQsY3R4OmZ9KTtyZXR1cm4gZX0sImNvdW50ZXIucmVhY2hH b2FsIik7ZS50cmFja0xpbmtzPXIoZnVuY3Rpb24oYSl7dihhKTtyZXR1cm4gZX0s ImNvdW50ZXIudHJhY2tMaW5rcyIpO3ZhciBKPW5ldyBRKHtjb3VudGVySWQ6YX0p O2UuaGl0PXIoZnVuY3Rpb24oYixjLGQsZyxoLGspe2I/KGYuaXNPYmplY3QoYykm JihkPWMucmVmZXJlcixnPWMucGFyYW1zLGg9Yy5jYWxsYmFjayxrPWMuY3R4LGM9 Yy50aXRsZSksZmEubG9nKCJQYWdlVmlldy4gQ291bnRlciAiK2EsIi4gVVJMOiAi K2IsIi4gUmVmZXJyZXI6ICIrZCwiLiBQYXJhbXM6ICIsZyksUi5zZW5kSGl0KHt1 cmw6Yix0aXRsZTpjLHJlZmVycmVyOmQsdlBhcmFtczpnLGNhbGxiYWNrOmgsY3R4 Omt9KSk6Zi53YXJuaW5nKCJFbXB0eSBoaXQgdXJsIik7cmV0dXJuIGV9LCJjb3Vu dGVyLmhpdCIpO2UucGFyYW1zPQpyKGZ1bmN0aW9uKGIpe3ZhciBjPWFyZ3VtZW50 cy5sZW5ndGgsZD1jLGc9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7aWYoYil7 aWYoMTxhcmd1bWVudHMubGVuZ3RoKXtpZihmLmlzRnVuY3Rpb24oYXJndW1lbnRz W2MtMV0pKXt2YXIgaD1hcmd1bWVudHNbYy0xXTtkPWMtMX1lbHNlIGlmKGYuaXNG dW5jdGlvbihhcmd1bWVudHNbYy0yXSkpe2g9YXJndW1lbnRzW2MtMl07dmFyIGs9 YXJndW1lbnRzW2MtMV07ZD1jLTJ9Zz1bXS5zbGljZS5jYWxsKGcsMCxkKTsxPGcu bGVuZ3RoJiYoZz1bZi5hcnJheTJQcm9wcyhnKV0pfWZhLmxvZygiVXNlciBwYXJh bXMuIENvdW50ZXIgIithKyIuIFBhcmFtczogIixnWzBdKTtSLnNlbmRQYXJhbXMo Z1swXSxoLGspfWVsc2UgZi53YXJuaW5nKCJXcm9uZyBwYXJhbXMiKTtyZXR1cm4g ZX0sImNvdW50ZXIucGFyYW1zIik7ZS5maWxlPXIoZnVuY3Rpb24oYSxiKXthPyhi PWJ8fHt9LFIuc2VuZEZpbGVVcGxvYWQoe3VybDphLHRpdGxlOmIudGl0bGUsCnZQ YXJhbXM6Yi5wYXJhbXMsY2FsbGJhY2s6Yi5jYWxsYmFjayxjdHg6Yi5jdHh9KSk6 Zi53YXJuaW5nKCJFbXB0eSBmaWxlIHVybCIpO3JldHVybiBlfSwiY291bnRlci5m aWxlIik7ZS5leHRMaW5rPXIoZnVuY3Rpb24oYSxiKXthPyhiPWJ8fHt9LFIuc2Vu ZEV4dExpbmsoe3VybDphLHRpdGxlOmIudGl0bGUsdlBhcmFtczpiLnBhcmFtcyxj YWxsYmFjazpiLmNhbGxiYWNrLGN0eDpiLmN0eH0pKTpmLndhcm5pbmcoIkVtcHR5 IGxpbmsiKTtyZXR1cm4gZX0sImNvdW50ZXIuZXh0TGluayIpO2Uubm90Qm91bmNl PXIoZnVuY3Rpb24oYSl7dmFyIGI9MDthPWF8fHt9O0xhJiZrYSYmKGI9a2EtTGEp O1Iuc2VuZE5vdEJvdW5jZShiLHtjYWxsYmFjazphLmNhbGxiYWNrLGN0eDphLmN0 eH0pO3JldHVybiBlfSwiY291bnRlci5ub3RCb3VuY2UiKTt2YXIgQj1bXTtlLmFk ZEZpbGVFeHRlbnNpb249ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIGYud2Fybmlu ZygiRW1wdHkgZXh0ZW5zaW9uIiksCmU7InN0cmluZyI9PXR5cGVvZiBhP0IucHVz aChhKTpCPUIuY29uY2F0KGEpO3JldHVybiBlfTtlLmNsaWNrbWFwPWZ1bmN0aW9u KGEpe3QoYSk7cmV0dXJuIGV9O2UuYWNjdXJhdGVUcmFja0JvdW5jZT1mdW5jdGlv bihhKXtBKGEpO3JldHVybiBlfTt2YXIgcGE9bnVsbDt2YXIgWT0hMTtlLnRyYWNr SGFzaD1mdW5jdGlvbihhKXtLKGEpO3JldHVybiBlfTt2YXIgeGE9e3JlcXVpcmVk RWNvbW1lcmNlRmllbGRzOlsiY3VycmVuY3kiLCJnb29kcyJdLHBhcnNlVmFsaWRh dGU6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnZhbGlkYXRlKGEsYiksZDtpZigh Yy5pc1ZhbGlkKXJldHVybiBjb25zb2xlJiZjb25zb2xlLmxvZyhjLm1lc3NhZ2Up LCExO2M9e307Y1thXT17fTtiLmN1cnJlbmN5JiYoYy5jdXJyZW5jeUNvZGU9Yi5j dXJyZW5jeSk7Yi5nb29kcyYmKGNbYV0ucHJvZHVjdHM9Yi5nb29kcyk7Zm9yKGQg aW4gYiliLmhhc093blByb3BlcnR5KGQpJiYtMT09PWYuYXJyYXlJbmRleE9mKHRo aXMucmVxdWlyZWRFY29tbWVyY2VGaWVsZHMsCmQpJiYoY1thXS5hY3Rpb25GaWVs ZHx8KGNbYV0uYWN0aW9uRmllbGQ9e30pLGNbYV0uYWN0aW9uRmllbGRbZF09Yltk XSk7cmV0dXJue19feW06e2Vjb21tZXJjZTpbY119fX0sdmFsaWRhdGU6ZnVuY3Rp b24oYSxiKXt2YXIgYz0hMSxkPSIiO2lmKGYuaXNPYmplY3QoYikpc3dpdGNoKGEp e2Nhc2UgImRldGFpbCI6Y2FzZSAiYWRkIjpjYXNlICJyZW1vdmUiOmYuaXNBcnJh eShiLmdvb2RzKSYmYi5nb29kcy5sZW5ndGg/KGM9Zi5hcnJheUV2ZXJ5KGIuZ29v ZHMsZnVuY3Rpb24oYSl7cmV0dXJuIGYuaXNPYmplY3QoYSkmJihmLmlzU3RyaW5n KGEuaWQpfHxmLmlzTnVtYmVyKGEuaWQpfHxmLmlzU3RyaW5nKGEubmFtZSl8fGYu aXNTdHJpbmcoYS5uYW1lKSl9KSl8fChkPSJBbGwgaXRlbXMgaW4gJ2dvb2RzJyBz aG91bGQgYmUgb2JqZWN0cyBhbmQgY29udGFpbiAnaWQnIG9yICduYW1lJyBmaWVs ZCIpOmQ9IkVjb21tZXJjZSBkYXRhIHNob3VsZCBjb250YWluICdnb29kcycgbm9u LWVtcHR5IGFycmF5IjsKYnJlYWs7Y2FzZSAicHVyY2hhc2UiOmYuaXNOdW1iZXIo Yi5pZCl8fGYuaXNTdHJpbmcoYi5pZCk/Yz0hMDpkPSJQdXJjaGFzZSBvYmplY3Qg c2hvdWxkIGNvbnRhaW4gc3RyaW5nIG9yIG51bWJlciAnaWQnIGZpZWxkIn1lbHNl IGQ9IkVjb21tZXJjZSBkYXRhIHNob3VsZCBiZSBhbiBvYmplY3QiO3JldHVybntp c1ZhbGlkOmMsbWVzc2FnZTpkfX19O2UuZWNvbW1lcmNlRGV0YWlsPXIoZnVuY3Rp b24oYSxiKXtTKCJkZXRhaWwiLGEsYik7cmV0dXJuIGV9LCJlY29tbWVyY2UuZGV0 YWlsIik7ZS5lY29tbWVyY2VBZGQ9cihmdW5jdGlvbihhLGIpe1MoImFkZCIsYSxi KTtyZXR1cm4gZX0sImVjb21tZXJjZS5hZGQiKTtlLmVjb21tZXJjZVJlbW92ZT1y KGZ1bmN0aW9uKGEsYil7UygicmVtb3ZlIixhLGIpO3JldHVybiBlfSwiZWNvbW1l cmNlLnJlbW92ZSIpO2UuZWNvbW1lcmNlUHVyY2hhc2U9cihmdW5jdGlvbihhLGIp e1MoInB1cmNoYXNlIixhLGIpO3JldHVybiBlfSwiZWNvbW1lcmNlLnB1cmNoYXNl Iik7CmUudXNlclBhcmFtcz1yKGZ1bmN0aW9uKGEsYixjKXtmLmlzT2JqZWN0KGEp P2UucGFyYW1zKHtfX3ltdTphfSxifHxmdW5jdGlvbigpe30sYyk6Zi53YXJuaW5n KCJXcm9uZyB1c2VyIHBhcmFtcyIpO3JldHVybiBlfSwidXBhcmFtcyIpO2UuZXhw ZXJpbWVudHM9cihmdW5jdGlvbihhLGIsYyl7Ui5zZW5kRXhwZXJpbWVudHMoe2Nh bGxiYWNrOmIsY3R4OmMsZXhwZXJpbWVudHM6YX0pO3JldHVybiBlfSwiZXhwcyIp O2UuaWQ9ZS5zZXRVc2VySUQ9cihmdW5jdGlvbihhLGIsYyl7Zi5pc1N0cmluZyhh KXx8Zi5pc051bWJlcihhKT9lLnBhcmFtcyh7X195bTp7dXNlcl9pZDphfX0sYnx8 ZnVuY3Rpb24oKXt9LGMpOmYud2FybmluZygiSW5jb3JyZWN0IHVzZXIgSUQiKTty ZXR1cm4gZX0sImlkIik7dmFyIEVhPW5ldyBHO2UuZ2V0Q2xpZW50SUQ9cihmdW5j dGlvbigpe3JldHVybiBFYS5yZWFkKCJ1aWQiKX0sImd1aWQiKTtlLmVuYWJsZUFs bD1mdW5jdGlvbigpe3YoITApO3QoITApOwpBKCk7cmV0dXJuIGV9O2UudXBsb2Fk UGFnZT1mdW5jdGlvbigpe307TWIuaW5pdChSKTtlLl9wZXJmb3JtYW5jZVRpbWlu Zz1aYTtpZihhKWlmKCJwcmVyZW5kZXIiPT1oLndlYmtpdFZpc2liaWxpdHlTdGF0 ZSl7Ui5zZW5kUHJlcmVuZGVySGl0KHt1cmw6RS5ocmVmLHRpdGxlOm0uZ2V0RG9j dW1lbnRUaXRsZSgpLHJlZmVycmVyOmgucmVmZXJyZXJ9KTt2YXIgd2E9ZnVuY3Rp b24oKXsicHJlcmVuZGVyIiE9aC53ZWJraXRWaXNpYmlsaXR5U3RhdGUmJihrLnVu KGgsIndlYmtpdHZpc2liaWxpdHljaGFuZ2UiLHdhKSxsKCEwKSl9O2sub24oaCwi d2Via2l0dmlzaWJpbGl0eWNoYW5nZSIsd2EpfWVsc2UgbCghMSl9LCJpbml0Iiko KX07bmV3IGliKHtnbG9iYWxDb25maWc6d30pO2cuWWEuTWV0cmlrYS5jb3VudGVy cz1mdW5jdGlvbigpe3ZhciBhPVtdO2YuZm9yRWFjaEtleSh3LmdldCgiY291bnRl cnMiKSxmdW5jdGlvbihiLGMpe3ZhciBkPWIuc3BsaXQoIjoiKTthLnB1c2goe2lk OitkWzBdLAp0eXBlOitkWzFdLGFjY3VyYXRlVHJhY2tCb3VuY2U6Yy5faXNBY2N1 cmF0ZVRyYWNrQm91bmNlLGNsaWNrbWFwOmMuX2NsaWNrbWFwJiZjLl9jbGlja21h cC5fc3RhcnQsb2xkQ29kZTohIWcueWFfY2lkLHRyYWNrSGFzaDohIWMuX3RyYWNr SGFzaCx0cmFja0xpbmtzOmMuX3RyYWNrTGlua3MmJmMuX3RyYWNrTGlua3Mub24s d2Vidmlzb3I6ISFjLl93ZWJ2aXNvcn0pfSk7cmV0dXJuIGF9O3cuc2V0U2FmZSgi Z2V0Q291bnRlcnMiLGZ1bmN0aW9uKCl7dmFyIGE9W107Zi5mb3JFYWNoS2V5KHcu Z2V0KCJjb3VudGVycyIpLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9Yi5zcGxpdCgiOiIp O2EucHVzaCh7aWQ6K2RbMF0sdHlwZTorZFsxXSxhY2N1cmF0ZVRyYWNrQm91bmNl OmMuX2lzQWNjdXJhdGVUcmFja0JvdW5jZSxjbGlja21hcDpjLl9jbGlja21hcCYm Yy5fY2xpY2ttYXAuX3N0YXJ0LG9sZENvZGU6ISFnLnlhX2NpZCx0cmFja0hhc2g6 ISFjLl90cmFja0hhc2gsdHJhY2tMaW5rczpjLl90cmFja0xpbmtzJiYKYy5fdHJh Y2tMaW5rcy5vbix3ZWJ2aXNvcjohIWMuX3dlYnZpc29yfSl9KTtyZXR1cm4gYX0p O2cueWFfY2lkJiZZYS5NZXRyaWthJiZuZXcgWWEuTWV0cmlrYShnLnlhX2NpZCxn LnlhX3BhcmFtcyxnLnlhX2NsYXNzKTtnLnlhX2NpZCYmIWcueWFfaGl0JiYoZy55 YV9oaXQ9ZnVuY3Rpb24oYSxiKXtZYS5fbWV0cmlrYS5jb3VudGVyJiZZYS5fbWV0 cmlrYS5jb3VudGVyLnJlYWNoR29hbChhLGIpfSk7KGZ1bmN0aW9uKCl7ZnVuY3Rp b24gYShhKXt0cnl7ZGVsZXRlIGdbYV19Y2F0Y2gobCl7Z1thXT1QfX12YXIgYj1n LnlhbmRleF9tZXRyaWthX2NhbGxiYWNrLGM9Zy55YW5kZXhfbWV0cmlrYV9jYWxs YmFja3MsZDsiZnVuY3Rpb24iPT10eXBlb2YgYiYmYigpO2lmKCJvYmplY3QiPT10 eXBlb2YgYylmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKWlmKGQ9Y1tiXSljW2JdPW51 bGwsZCgpO2EoInlhbmRleF9tZXRyaWthX2NhbGxiYWNrIik7YSgieWFuZGV4X21l dHJpa2FfY2FsbGJhY2tzIil9KSgpOwpnLllhLk1ldHJpa2EuaW5mb3JtZXI9ZnVu Y3Rpb24oYSl7dmFyIGI9ISFZYS5NZXRyaWthLl9pbmZvcm1lcjtZYS5NZXRyaWth Ll9pbmZvcm1lcj1hO2J8fG0ubG9hZFNjcmlwdCh7c3JjOiJodHRwczovL2luZm9y bWVyLnlhbmRleC5ydS9tZXRyaWthL2luZm9ybWVyLmpzIn0pfTtrLm9uKGgsImNs aWNrIixyKGZ1bmN0aW9uKGEpe3ZhciBiPUMuZ2V0VGFyZ2V0KGEpO2lmKGImJiJ5 bS1hZHZhbmNlZC1pbmZvcm1lciI9PWIuY2xhc3NOYW1lKXt2YXIgYz1iLmdldEF0 dHJpYnV0ZSgiZGF0YS1sYW5nIik7dmFyIGQ9Yi5nZXRBdHRyaWJ1dGUoImRhdGEt Y2lkIik7WWEuTWV0cmlrYS5pbmZvcm1lcih7aTpiLGlkOitkLGxhbmc6Y30pO0Mu cHJldmVudChhKX19LCJhZHYtaW5mIiksbnVsbCx7cGFzc2l2ZTohMX0pfSkodGhp cyx0aGlzLmRvY3VtZW50KTs= ------------fIzuf6Oyt4t75FHoI40g63--