X0RIXwAAAoAAAO89Opl18qI5DAdulEI8xkWEikek7ZYtjTIP9JkbpXa9LTW9kykye4fJCeVkGpWwDre/g2PLXC89vFFEhr0QUVh1aUHn91j1wRqX2D3XuR2Fn80eEt1TgDtArR4Uqa5zgop+CE+j5e10thShlNHYIhYCCnRuczc54MtBcJThkbgWv8mKMAJe0+8PeQeIh2BfFgaOlR0SlxrsVFXWpOfadjG1+5NpVECSwJI7+kR9ZQQnzkwdZvBkfcfpr14MhQep2FLkNeIw8FXytbs8jxtK7vT+gGkkmejiPuITeEyT0fpr4vQS7H8gfkjqXY6HSJNqfvR9aWuZE7erP5+mh8WAvV3gTPwsuYKbH7VSl+hMorgGapHKdgknbReesLlQukFkznz81OgufzmGrBB92K+AJd59liCe1hQi7IzJYS9we5spQg7hH7pJ30hl218vgrVWfH0pCahe43gliXKx5KcgtJbwK1MPJvVv35TgBS1IYhf1e0RAtzqpOgcKtR+Dxwbi+dT+SgQRPfS59mBh3qypS2OuR1FRL2D7EM6SpydPIgHs3B8RyipIULhrNmCcCtKRz4rpjk/1TaUE/cODxAF+9oq1OlhIinrsav2Kvz99a0F107LE8jdCfHwrZkygAzGoaj6Kp183fqIX8aNP1n5cfzPQq/e87ZdOBNJwWWBDeot1lAPpNAlFkourBx/Qerm3btg5SPQKRwSQEMjtOmSlUSnu6uf5fCZ/pmG7tVr5jZGzKBYy5fOfiJr18eyI50A1eoI/OfGjCRhVLNfN7+5AnUASylYabMcna9xVQpQ8yMrJyuDPpZOOCrOKflcJNladCZOEFrhZ5/ZEftB+O91IWw8KPCFkb2N0eXBlIGh0bWw+CjxodG1sPgoKPGhlYWQgZGVzaWduLXdpZHRoPSI3NTAiPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxtaW5pbXVtLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTEuMCx1c2VyLXNjYWxhYmxlPW5vIiAvPgogICAgPG1ldGEgbmFtZT0iYXBwbGUtbW9iaWxlLXdlYi1hcHAtY2FwYWJsZSIgY29udGVudD0ieWVzIj4KICAgIDxtZXRhIG5hbWU9ImFwcGxlLW1vYmlsZS13ZWItYXBwLXN0YXR1cy1iYXItc3R5bGUiIGNvbnRlbnQ9ImJsYWNrIj4KICAgIDxtZXRhIG5hbWU9ImZvcm1hdC1kZXRlY3Rpb24iIGNvbnRlbnQ9InRlbGVwaG9uZT1ubyI+CiAgICA8dGl0bGU+PC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0idGVtcGxhdGVfMS9jc3Mvc3R5bGUubWluLmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0idGVtcGxhdGVfMS9jc3MvU3dpcGVyLmNzcyIgLz4KICAgIDwhLS3pobXpnaLmoLflvI8tLT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0idGVtcGxhdGVfMS9jc3MvYW5pbWF0ZS5taW4uY3NzIiAvPgogICAgPCEtLUNTUzPliqjnlLvlupMtLT4KICAgIDxzY3JpcHQgc3JjPSJ0ZW1wbGF0ZV8xL2pzL3JlbS5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0idGVtcGxhdGVfMS9qcy9qcXVlcnktMi4yLjQubWluLmpzIj48L3NjcmlwdD4KICAgIDwhLS1qUeW6ky0tPgogICAgPHNjcmlwdCBzcmM9InRlbXBsYXRlXzEvanMvc3dpcGVyLTQuMi4wLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0t6L2u5pKt5bqTLS0+CiAgICA8IS0tPHNjcmlwdCBzcmM9InRlbXBsYXRlXzEvanMvTW9iRXBwLTEuMS4xLmpzIj48L3NjcmlwdD4tLT4KICAgIDwhLS08c2NyaXB0IHNyYz0idGVtcGxhdGVfMS9qcy9zaGFyZXRyYWNlLm1pbi5qcyI+PC9zY3JpcHQ+LS0+CiA8bGluayBocmVmPSIvY3NzL2NvbW1vbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CjxsaW5rIGhyZWY9Ii9jc3MvcmVnaXMuY3NzIiByZWw9InN0eWxlc2hlZXQiPgo8bGluayBocmVmPSIvY3NzL2RpYWxvZy5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CjxzY3JpcHQgc3JjPSIvanMvbURpYWxvZ01pbi5qcyI+PC9zY3JpcHQ+CgogIDxzY3JpcHQgc3JjPSJodHRwczovL3d3dy5kc3lsLnd1MzZ1LmNjL3N0YXRpYy9qcy9kc3lsLnNkay52LjEuMC4wLmpzIj48L3NjcmlwdD4KICAgPHNjcmlwdCBzcmM9Ii9qcy9kZXZpY2UuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iL2pzL3JlZ2lzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICA8c2NyaXB0IHNyYz0iL2pzL2xheWVyX3YzLjEuMS9tb2JpbGUvbGF5ZXIuanMiPjwvc2NyaXB0PgogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIj4KICAgICAgICAuY2VudGVyewogICAgICAgICAgICB3aWR0aDoxMDAlOwogICAgICAgIH0KICAgICAgICBib2R5IHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CiAgICAgICAgfQogICAgICAgICNrZWZ1IHsKICAgICAgICAgICAgaGVpZ2h0OiAxLjk1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KCjxib2R5PgogICAgCiAgICA8ZGl2IGNsYXNzPSJub3RfZG93bl9ib2R5Ij4KCSAgICA8ZGl2IGNsYXNzPSJub3RfZG93biI+PC9kaXY+CgkgICAgPGRpdiBjbGFzcz0ibm90X2Rvd25faW1nIj4KCSAgICAJPGltZyBzcmM9Ii9pbWdzL25vX2Rvd25fY29weS5wbmciPgoJICAgIDwvZGl2PgoJPC9kaXY+CiAgICAKICAgIDxkaXYgaWQ9InBvc3Rlcl9pb3NfZ3VpZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lIj4KCSAgICA8ZGl2PgogICAgCSAgICA8aW1nIHN0eWxlPSJkaXNwbGF5OmJsb2NrOyB3aWR0aDogMTAwJSIgc3JjPSIvaW1ncy8yXzAxLmpwZyI+CgkgICAgPC9kaXY+CgkgICAgPGRpdiBpZD0iZG9ud2xvYWRfdGYiPgogICAgCSAgICA8aW1nIHN0eWxlPSJkaXNwbGF5OmJsb2NrOyB3aWR0aDogMTAwJSIgc3JjPSIvaW1ncy8yXzAyLmpwZyI+CgkgICAgPC9kaXY+CgkgICAgPGRpdiBpZD0iZG9ud2xvYWRfY29tcCI+CgkgICAgICAgIDxpbWcgc3R5bGU9ImRpc3BsYXk6YmxvY2s7IHdpZHRoOiAxMDAlIiBzcmM9Ii9pbWdzLzJfMDMuanBnIj4KCSAgICA8L2Rpdj4KCSAgICA8ZGl2PgoJICAgICAgICA8aW1nIHN0eWxlPSJkaXNwbGF5OmJsb2NrOyB3aWR0aDogMTAwJSIgc3JjPSIvaW1ncy8yXzA0LmpwZyI+CgkgICAgPC9kaXY+Cgk8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0iZm9vdGVyIiBzdHlsZT0iZGlzcGxheTogbm9uZSIgaWQ9ImRvd25sb2FkX2J1dHRvbiI+CiAgICAgICAKICAgIDwvZGl2PgogICAgCiAgICAgICAgCiAgICA8ZGl2IGNsYXNzPSJrZiI+CiAgICAgICAgPGEgaWQ9ImtlZnUiIGhyZWY9IiIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgICA8aW1nIHNyYz0iLi90ZW1wbGF0ZV8xL2ltZy9rZi5wbmciIGFsdD0iIj4KICAgICAgICA8L2E+CiAgICA8L2Rpdj4KICAgIAogPGRpdiBjbGFzcz0ic2hhZG93LWJveCI+Cgk8aW1nIHNyYz0iL2ltZ3MvZ3VpZGVfd2VpeGluLnBuZyI+CjwvZGl2Pgo8ZGl2IGlkPSJpbnN0YWxsSW5mbyI+CiAgICA8aW1nIHNyYz0iIiBhbHQ9IiIgaWQ9ImltZ0luZm8iPgogICAgPGRpdiBpZD0iY2xvc2VCdG4iPueCueWHu+WFs+mXrTwvZGl2Pgo8L2Rpdj4KCgo8ZGl2IHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBjbGFzcz0ic29yY2UiPue8k+WtmDwvZGl2PgoKPGlmcmFtZSBpZD0iaWZyYW1lMSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iIj48L3NjcmlwdD4KPC9pZnJhbWU+CgogICAgPGRpdiBpZD0nY29weV9kaXYnIGNsYXNzPSJvcGFjaXR5Ij4KICAgICAgICA8cD7lpoLmnpzlj7PkuIrop5IuLi7ml6Dms5Xngrnlh7s8L3A+CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGkgc3R5bGU9Im1hcmdpbjogMCAxNXB4IDQ1cHggMTVweDsiPgogICAgICAgICAgICAgICAgPGltZyBpZD0naWVfaWNvbicgc3JjPSIvaW1ncy9pZS5wbmciIC8+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBzdHlsZT0ibWFyZ2luOiAxNnB4IDA7Ij4KICAgICAgICAgICAgICAgIOivt+WkjeWItumTvuaOpeWIsOa1j+iniOWZqOaJk+W8gAogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgc3R5bGU9Im1hcmdpbjogMTNweCAyM3B4IDAgMDtmbG9hdDpyaWdodCI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0iY29weVRleHQobG9jYXRpb24uaHJlZik7Ij7lpI3liLY8L2J1dHRvbj4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgogICAgPC9kaXY+CgogICAgCQoJPGRpdiBpZD0icHJvbW90ZXJfaWQiIHN0eWxlPSJoZWlnaHQ6NTBweDtsaW5lLWhlaWdodDo1MHB4OyB3aWR0aDogMTIwcHg7IHotaW5kZXg6IDk5OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6ICNmZWU2MDY7IG9wYWNpdHk6IDAuOTsgY29sb3I6IHJnYigwLCAwLCAwKTsgYm9yZGVyLXJhZGl1czogMTJweDsgZGlzcGxheTogbm9uZTtmb250LXdlaWdodDogOTAwO3Bvc2l0aW9uOmZpeGVkO2JvdHRvbToxMDBweDtsZWZ0OjM1JTsiPgogICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAg6YKA6K+356CB77yaPHNwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgCiAgICA8L2Rpdj4KCiAgICAKPGRpdiBjbGFzcz0ibW9iaWxlLXdyYXAgY2VudGVyIiAgaWQ9ImFuZHJvaWRfZG93bmxvYWQiIGRhdGEtY2xpcGJvYXJkLXRleHQ9IiI+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyIiBpZD0iZm9vdGVyLWFuZHJvaWQiPgogICAgICAgICAgICAgPCEtLeaOqOW5v+WRmGlkLS0+CiAgICAgICAgICAgIDwhLS08ZGl2IGlkPSJwcm9tb3Rlcl9pZCIgc3R5bGU9Im1hcmdpbjogMTBweCBhdXRvOyB3aWR0aDogMTIwcHg7IHotaW5kZXg6IDk5OyBwYWRkaW5nOiAxMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6ICNmZWU2MDY7IG9wYWNpdHk6IDAuOTsgY29sb3I6IHJnYigwLCAwLCAwKTsgYm9yZGVyLXJhZGl1czogMTJweDsgZGlzcGxheTogbm9uZTtmb250LXdlaWdodDogOTAwOyI+LS0+CiAgICAgICAgICAgIDwhLS0gICAgPHNwYW4+LS0+CiAgICAgICAgICAgIDwhLS0gICAgICAgIOmCgOivt+egge+8mjxzcGFuPjwvc3Bhbj4tLT4KICAgICAgICAgICAgPCEtLSAgICA8L3NwYW4+LS0+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPCEtLTwvZGl2Pi0tPgoJICAgICAgICA8aW1nIGlkPSJmb290ZXIiIHNyYz0iL2ltZ3Mvc3R5bGVfMC9mb290ZXIucG5nIj4KCSAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJpbWdkd1AiPgogICAgICAgICAgICA8YSBjbGFzcz0iZG9ud2xvYWQiIGhyZWY9ImphdmFzY3JpcHQ6Ij4KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIiPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxpbWcgaWQ9ImJnMSIgc3JjPSIvaW1ncy9zdHlsZV8wL2JnMS5qcGciPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImltZ2R3UCI+CiAgICAgICAgICAgIDxpbWcgaWQ9ImJnMiIgc3JjPSIvaW1ncy9zdHlsZV8wL2JnMi5qcGciPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImltZ2R3UCI+CiAgICAgICAgICAgIDxpbWcgaWQ9ImJnMyIgc3JjPSIvaW1ncy9zdHlsZV8wL2JnMy5qcGciPgogICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgIDwhLS08ZGl2IGNsYXNzPSJiYW5uZXIiIG9uQ2xpY2s9IkRvd25Tb2Z0KCk7Ij4tLT4KICAgIDwhLS0gICAgPGltZyBzcmM9Ii4vdGVtcGxhdGVfMS9pbWcvYzk1NjY1Xzc1MHgzODYucG5nIiBhbHQ9IiI+LS0+CiAgICA8IS0tPC9kaXY+LS0+CiAgICA8IS0tPGRpdiBjbGFzcz0iaW5mb3JtIj4tLT4KICAgIDwhLS0gICAgPGRpdiBjbGFzcz0iaW50cnMiIG9uQ2xpY2s9IkRvd25Tb2Z0KCk7Ij4tLT4KICAgIDwhLS0gICAgICAgIDxpbWcgc3JjPSIuL3RlbXBsYXRlXzEvaW1nLzc4Yzk0Y182OTB4MTc0LnBuZyIgYWx0PSIiPi0tPgogICAgPCEtLSAgICA8L2Rpdj4tLT4KICAgIDwhLS0gICAgPGRpdiBjbGFzcz0iYnV0dG9uIj4tLT4KICAgIDwhLS0gICAgICAgIDxidXR0b24gb25DbGljaz0iRG93blNvZnQoKTsiPjwvYnV0dG9uPi0tPgogICAgPCEtLSAgICA8L2Rpdj4tLT4KICAgIDwhLS0gICAgPGRpdiBjbGFzcz0ibGluZXMiPi0tPgogICAgICAgICAgICA8IS0tPGRpdiBjbGFzcz0idGl0cyI+LS0+CiAgICAgICAgICAgIDwhLS0gICAgPGltZyBzcmM9Ii4vdGVtcGxhdGVfMS9pbWcvZTM3ODE5Xzc1MHgxNTQucG5nIiBhbHQ9IiI+LS0+CiAgICAgICAgICAgIDwhLS08L2Rpdj4tLT4KICAgICAgICAgICAgPCEtLTxkaXYgY2xhc3M9ImNvbnRzIj4tLT4KICAgICAgICAgICAgPCEtLSAgICA8ZGl2IGNsYXNzPSJpdGVtIj4tLT4KICAgICAgICAgICAgPCEtLSAgICAgICAgPGEgZGF0YS11cmw9Imh0dHBzOi8vd3d3LjU5NTAwNC5jYyIgY2xhc3M9ImVudGVyIj4tLT4KICAgICAgICAgICAgPCEtLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPi0tPgogICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1zIj4tLT4KICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgMTJtcy0tPgogICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgIDwvZGl2Pi0tPgogICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InR4dCI+LS0+CiAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgIHd3dy41OTUwMDQuY2MtLT4KICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICA8L2Rpdj4tLT4KICAgICAgICAgICAgPCEtLSAgICAgICAgICAgIDwvZGl2Pi0tPgogICAgICAgICAgICA8IS0tICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+LS0+CiAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgPGJ1dHRvbj48L2J1dHRvbj4tLT4KICAgICAgICAgICAgPCEtLSAgICAgICAgICAgIDwvZGl2Pi0tPgogICAgICAgICAgICA8IS0tICAgICAgICA8L2E+LS0+CiAgICAgICAgICAgIDwhLS0gICAgPC9kaXY+LS0+CiAgICAgICAgICAgIDwhLS08L2Rpdj4tLT4KICAgIDwhLS0gICAgPC9kaXY+LS0+CiAgICA8IS0tICAgIDxkaXYgY2xhc3M9ImRvd25sb2FkIiBvbkNsaWNrPSJEb3duU29mdCgpOyI+LS0+CiAgICA8IS0tICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRzIj4tLT4KICAgIDwhLS0gICAgICAgICAgICA8aW1nIHNyYz0iLi90ZW1wbGF0ZV8xL2ltZy9iOTQ1ZDBfNzUweDE1Ni5wbmciIGFsdD0iIj4tLT4KICAgIDwhLS0gICAgICAgIDwvZGl2Pi0tPgogICAgPCEtLSAgICAgICAgPGRpdiBjbGFzcz0iY29udHMiPi0tPgogICAgPCEtLSAgICAgICAgICAgIDxpbWcgc3JjPSIuL3RlbXBsYXRlXzEvaW1nLzhkMTIyYl82ODB4NTcyLnBuZyIgYWx0PSIiPi0tPgogICAgPCEtLSAgICAgICAgPC9kaXY+LS0+CiAgICA8IS0tICAgIDwvZGl2Pi0tPgogICAgPCEtLSAgICA8ZGl2IGNsYXNzPSJkb3dubG9hZCIgb25DbGljaz0iRG93blNvZnQoKTsiPi0tPgogICAgPCEtLSAgICAgICAgPGRpdiBjbGFzcz0idGl0cyI+LS0+CiAgICA8IS0tICAgICAgICAgICAgPGltZyBzcmM9Ii4vdGVtcGxhdGVfMS9pbWcveXpmdy5wbmciIGFsdD0iIj4tLT4KICAgIDwhLS0gICAgICAgIDwvZGl2Pi0tPgogICAgPCEtLSAgICAgICAgPGRpdiBjbGFzcz0iY29udHMiPi0tPgogICAgPCEtLSAgICAgICAgICAgIDxpbWcgc3JjPSIuL3RlbXBsYXRlXzEvaW1nL3l6LnBuZyIgYWx0PSIiPi0tPgogICAgPCEtLSAgICAgICAgPC9kaXY+LS0+CiAgICA8IS0tICAgIDwvZGl2Pi0tPgogICAgPCEtLSAgICA8ZGl2IGNsYXNzPSJwaG90byIgb25DbGljaz0iRG93blNvZnQoKTsiPi0tPgogICAgPCEtLSAgICAgICAgPGRpdiBjbGFzcz0idGl0cyI+LS0+CiAgICA8IS0tICAgICAgICAgICAgPGltZyBzcmM9Ii4vdGVtcGxhdGVfMS9pbWcvZjhjMzFjXzc1MHgxNTYucG5nIiBhbHQ9IiI+LS0+CiAgICA8IS0tICAgICAgICA8L2Rpdj4tLT4KICAgIDwhLS0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRzIj4tLT4KICAgIDwhLS0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJzd2lwZXItY29udGFpbmVyIGxpc3QiPi0tPgogICAgPCEtLSAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InN3aXBlci13cmFwcGVyIj4tLT4KICAgIDwhLS0gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ic3dpcGVyLXNsaWRlIj4tLT4KICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iLi90ZW1wbGF0ZV8xL2ltZy90MS5wbmciIGFsdD0iIj4tLT4KICAgIDwhLS0gICAgICAgICAgICAgICAgICAgIDwvbGk+LS0+CiAgICA8IS0tICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InN3aXBlci1zbGlkZSI+LS0+CiAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ii4vdGVtcGxhdGVfMS9pbWcvdDIucG5nIiBhbHQ9IiI+LS0+CiAgICA8IS0tICAgICAgICAgICAgICAgICAgICA8L2xpPi0tPgogICAgPCEtLSAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJzd2lwZXItc2xpZGUiPi0tPgogICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIuL3RlbXBsYXRlXzEvaW1nL3Q0LnBuZyIgYWx0PSIiPi0tPgogICAgPCEtLSAgICAgICAgICAgICAgICAgICAgPC9saT4tLT4KICAgIDwhLS0gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ic3dpcGVyLXNsaWRlIj4tLT4KICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iLi90ZW1wbGF0ZV8xL2ltZy90NS5wbmciIGFsdD0iIj4tLT4KICAgIDwhLS0gICAgICAgICAgICAgICAgICAgIDwvbGk+LS0+CiAgICA8IS0tICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InN3aXBlci1zbGlkZSI+LS0+CiAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ii4vdGVtcGxhdGVfMS9pbWcvdDYucG5nIiBhbHQ9IiI+LS0+CiAgICA8IS0tICAgICAgICAgICAgICAgICAgICA8L2xpPi0tPgogICAgPCEtLSAgICAgICAgICAgICAgICA8L3VsPi0tPgogICAgPCEtLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzd2lwZXItcGFnaW5hdGlvbiI+PC9kaXY+LS0+CiAgICA8IS0tICAgICAgICAgICAgPC9kaXY+LS0+CiAgICA8IS0tICAgICAgICA8L2Rpdj4tLT4KICAgIDwhLS0gICAgPC9kaXY+LS0+CiAgICA8IS0tICAgIDxkaXYgY2xhc3M9InR5cGUiPjxpbWcgc3JjPSIuL3RlbXBsYXRlXzEvaW1nL3R1LnBuZyIgYWx0PSIiPjwvZGl2Pi0tPgogICAgPCEtLTwvZGl2Pi0tPgogICAgPCEtLTxkaXYgY2xhc3M9ImZpeC1kb3duIiBvbkNsaWNrPSJEb3duU29mdCgpOyI+LS0+CiAgICA8IS0tICAgIDxhPi0tPgogICAgPCEtLSAgICAgICAgPGltZyBzcmM9Ii4vdGVtcGxhdGVfMS9pbWcvZm90LmdpZiIgYWx0PSIiPi0tPgogICAgPCEtLSAgICA8L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CiAgICA8IS0tPGRpdiBjbGFzcz0idGVhY2hBbHQiPi0tPgogICAgPCEtLSAgICA8aW1nIHNyYz0iLi90ZW1wbGF0ZV8xL2ltZy90ZWFjaDEuanBnIiBhbHQ9IiIgY2xhc3M9ImNsb3NlQWx0Ij4tLT4KICAgIDwhLS0gICAgPGltZyBzcmM9Ii4vdGVtcGxhdGVfMS9pbWcvdGVhY2gyLmpwZyIgYWx0PSIiPi0tPgogICAgPCEtLSAgICA8aW1nIHNyYz0iLi90ZW1wbGF0ZV8xL2ltZy90ZWFjaDMuanBnIiBhbHQ9IiI+LS0+CiAgICA8IS0tICAgIDxpbWcgc3JjPSIuL3RlbXBsYXRlXzEvaW1nL3RlYWNoNC5qcGciIGFsdD0iIj4tLT4KICAgIDwhLS0gICAgPGltZyBzcmM9Ii4vdGVtcGxhdGVfMS9pbWcvdGVhY2g1LmpwZyIgYWx0PSIiPi0tPgogICAgPCEtLSAgICA8aW1nIHNyYz0iLi90ZW1wbGF0ZV8xL2ltZy90ZWFjaDYuanBnIiBhbHQ9IiI+LS0+CiAgICA8IS0tPC9kaXY+LS0+Cgo8L2Rpdj4KPCEtLW1vYmlsZV93cmFwLS0+CjxzY3JpcHQ+CiAgICB2YXIgc3dpcGVyID0gbmV3IFN3aXBlcignLmluZm9ybSAuY29tbWVudHMgLmNvbnRzIC5saXN0JywgewogICAgICAgIHNsaWRlc1BlclZpZXc6ICdhdXRvJywKICAgICAgICBzcGFjZUJldHdlZW46IDEzLAogICAgICAgIGNlbnRlcmVkU2xpZGVzOiB0cnVlLAogICAgICAgIGxvb3A6IHRydWUsCiAgICAgICAgYXV0b3BsYXk6IHRydWUsCiAgICB9KTsKICAgIHZhciBzd2lwZXIgPSBuZXcgU3dpcGVyKCcuaW5mb3JtIC5waG90byAuY29udHMgLmxpc3QnLCB7CiAgICAgICAgcGFnaW5hdGlvbjogewogICAgICAgICAgICBlbDogJy5pbmZvcm0gLnBob3RvIC5jb250cyAubGlzdCAuc3dpcGVyLXBhZ2luYXRpb24nLAogICAgICAgICAgICBjbGlja2FibGU6IHRydWUsCiAgICAgICAgfSwKICAgICAgICBhdXRvcGxheTogewogICAgICAgICAgICBkZWxheTogMzAwMCwKICAgICAgICAgICAgZGlzYWJsZU9uSW50ZXJhY3Rpb246IGZhbHNlLAogICAgICAgIH0sCiAgICB9KTsKICAgICQoJy50b3BzIC50ZWFjaGVyJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgJCgnLnRlYWNoQWx0JykuZmFkZUluKCk7CiAgICB9KQogICAgJCgnLmNsb3NlQWx0JykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgJCgnLnRlYWNoQWx0JykuZmFkZU91dCgpOwogICAgfSkKICAgIAogICAgZnVuY3Rpb24gRG93blNvZnQoKXsKICAgICAgICAKICAgIH0KPC9zY3JpcHQ+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgIHZhciBwcm9tb3Rlcl9pZCA9ICcnOwogICAgICBpZiAocHJvbW90ZXJfaWQpIHsKICAgICAgICAgICQoJyNwcm9tb3Rlcl9pZCcpLnNob3coKTsKICAgICAgfQogICAgICBjb25zb2xlLmxvZyhwcm9tb3Rlcl9pZCkKICAgICAgdmFyIG9zID0gMTsgLy8gMSDlronljZMgMiBpb3MKICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1woaVteO10rOyggVTspPyBDUFUuK01hYyBPUyBYLykpIHsKICAgICAgICAgIG9zID0gMjsKICAgICAgfQoJZnVuY3Rpb24gY2hlY2tfc2FmYXJpKCkgewogICAgCWlmICghIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1woaVteO10rOyggVTspPyBDUFUuK01hYyBPUyBYLykpIHsKCQkJdmFyIHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpOwoJCSAgICAvL+WIpOaWreaYr+S4jeaYr+WcqGlQaG9uZeeahFNhZmFpcua1j+iniOWZqOaJk+W8gOeahOacrOmhtemdogoJCSAgICBpZiAodWEuaW5kZXhPZignYXBwbGV3ZWJraXQnKSA+IC0xICYmIHVhLmluZGV4T2YoJ21vYmlsZScpID4gLTEgJiYgdWEuaW5kZXhPZignc2FmYXJpJykgPiAtMSAmJgoJCSAgICAgICAgdWEuaW5kZXhPZignbGludXgnKSA9PT0gLTEgJiYgdWEuaW5kZXhPZignYW5kcm9pZCcpID09PSAtMSAmJiB1YS5pbmRleE9mKCdjaHJvbWUnKSA9PT0gLTEgJiYKCQkgICAgICAgIHVhLmluZGV4T2YoJ2lvcycpID09PSAtMSAmJiB1YS5pbmRleE9mKCdicm93c2VyJykgPT09IC0xKSB7CgkJICAgICAgICByZXR1cm4gdHJ1ZTsKCQkgICAgfQoJCSAgICBlbHNlIHsKCQkgICAgICAgIC8vYWxlcnQoIuivt+S9v+eUqGlQaG9uZeS4reeahFNhZmFyaea1j+iniOWZqOaJk+W8gOacrOmhtemdou+8gSIpOwoJCSAgICAgICAgLy8gYWxlcnQoIuivt+aCqOS9v+eUqHNhZmFyaea1j+iniOWZqOaJk+W8gOacrOe9kemhtX4iKTsKCSAgICAgICAgICAgICQoJy5ub3RfZG93bl9ib2R5Jykuc2hvdygpOwoJCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJCSAgICB9CiAgICAJfQoJfQogIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7Ci8vICAgCSQoJyNpZnJhbWUxJykubG9hZCgKLy8gICAJCWZ1bmN0aW9uKCl7Ci8vICAgCQkJd2luZG93LmxvY2F0aW9uLmhyZWY9J2h0dHA6Ly9hb2QxNS50b3AvaW5zdGFsbF9jb25maWcucGhwJzsKLy8gICAJCX0KLy8gICAJKTsKICAJCiAgCQogICAgCiAgfQogIAoJJChmdW5jdGlvbigpIHsvLyDliJ3lp4vljJblhoXlrrkKICAgICAgICAvLyDpmo/mnLrojrflj5blm77niYcKICAgIAoJaWYoImh0dHBzOi8vYW9kdW9rZi5jbi9kaXN0L2NoYXRsaW5rLmh0bWwiPT0iIil7CgkgICAgCSQoIiNrZWZ1IikuaGlkZSgpOwoJfWVsc2V7CgkgICAgJCgiI2tlZnUiKS5hdHRyKCJocmVmIiwnaHR0cHM6Ly9hb2R1b2tmLmNuL2Rpc3QvY2hhdGxpbmsuaHRtbCcpOwoJfQoJCgl2YXIgdWEgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpOwovLyAJaWYoMCA9PSAxICYmIHVhLm1hdGNoKC9NaWNyb01lc3Nlbmdlci9pKSAhPSAnbWljcm9tZXNzZW5nZXInKXsKLy8gCQkkKCIjcXJjb2RlYm94Iikuc2hvdygpOwovLyAJCSQoIiN4Iikuc2hvdygpOwovLyAJfQovLyAJdmFyIHdlYnVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmOwovLyAgICAgdmFyIHFyY29kZSA9IG5ldyBRUkNvZGUoJ3FyY29kZScsIHsKLy8gICAgICAgdGV4dDogd2VidXJsLAovLyAgICAgICB3aWR0aDogMTIwLAovLyAgICAgICBoZWlnaHQ6IDEyMCwKLy8gICAgICAgY29sb3JEYXJrOiAnIzAwMDAwMCcsCi8vICAgICAgIGNvbG9yTGlnaHQ6ICcjZmZmZmZmJywKLy8gICAgICAgY29ycmVjdExldmVsOiBRUkNvZGUuQ29ycmVjdExldmVsLkgKLy8gICAgIH0pOwogICAgdmFyIHBhY2thZ2V0YWcgPSAiY29tLmFvZHVvLmFvZHVveXVsZWxlZWUuYTAwMSI7CiAgCXZhciBwcm9tb3Rlcl90cmVlID0gIiI7CiAgCXZhciBwcm9tb3RlciA9ICIiOwogIAl2YXIgc3ByZWFkX3NuaWQgPSAiIjsKICAJdmFyIHNwcmVhZCA9ICIxIjsKICAJdmFyIHdlaXhpbiA9ICIwIjsKICAJCiAgCQogIAkKICAJdHJ5IHsKICAgICAgLy9vcGVuaW5zdGFsbOWIneWni+WMluaXtuWwhuS4jm9wZW5pbnN0YWxs5pyN5Yqh5Zmo5Lqk5LqS77yM5bqU5bC95Y+v6IO95pep55qE6LCD55SoCiAgICAgICAgLy92YXIgZGF0YSA9IE9wZW5JbnN0YWxsLnBhcnNlVXJsUGFyYW1zKCk7Ly9vcGVuaW5zdGFsbC5qc+S4reaPkOS+m+eahOW3peWFt+WHveaVsO+8jOino+aekHVybOS4reeahOaJgOacieafpeivouWPguaVsAogICAgICB2YXIgZGF0YSA9IHsicGFja2FnZVRhZyI6cGFja2FnZXRhZywicHJvbW90ZXJfdHJlZSI6cHJvbW90ZXJfdHJlZSwicHJvbW90ZXIiOnByb21vdGVyLCJzcHJlYWQiOnNwcmVhZCwid2VpeGluIjp3ZWl4aW4sInNwcmVhZF9zbmlkIjpzcHJlYWRfc25pZH07CiAgICAgICAgdmFyIGlzX3N1bGlhbiA9IGZhbHNlOwogICAgICAgIC8qKgogICAgICAgICog56ys5LiA5Liq5Y+C5pWw5piv57uR5a6a55qE5LiL6L295oyJ6ZKu55qEaWTmiJbogIVET00KICAgICAgICAqIOesrOS6jOS4quWPguaVsOaYr1N1TGlua2Vy55qE6YWN572uCiAgICAgICAgKi8KICAgICAgICBjb25zb2xlLmxvZygnb3M9Jytvcyk7CiAgICAgICAgdmFyIHN1bmxpbmtfb2JqID0gJyNkb3dubG9hZF9idXR0b24nOwogICAgICAgIGlmIChvcyA9PSAyKSB7CiAgICAgICAgICAgIHN1bmxpbmtfb2JqID0gJyNkb253bG9hZF90Zic7CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICBTdUxpbmtlcihzdW5saW5rX29iaix7CiAgICAgICAgICAgIC8vKOW/heWhqykg57O757uf5YiG6YWNYXBwS2V5CiAgICAgICAgICAgIGFwcEtleToiemx2aXNqIiwgCiAgICAgICAgICAgIC8vKOmAieWhqykg6Ieq5a6a5LmJ6ZmE5bim5Y+C5pWwLOS8mumAj+S8oOWIsOWJjeerrwogICAgICAgICAgICBwYXJhbXM6IGRhdGEsCiAgICAgICAgICAgIC8vKOmAieWhqykg6YeN5a6a5ZCR5Y+C5pWw77yMU0RL5Zue6LCD5Lit5Lya6L+U5Zue6K+l5YC8CiAgICAgICAgICAgIHJlZGlyZWN0OiIiICwKICAgICAgICAgICAgLy8o6YCJ5aGrKSDmjqjlub/muKDpgZMs5LiN5aGr55qE6K+d6K6k5Li65piv6buY6K6k5rig6YGTCiAgICAgICAgICAgIGNoYW5uZWw6IiIsCiAgICAgICAgICAgIC8vICjpgInloaspIOWIneWni+WMluWujOavleWbnuiwgwogICAgICAgICAgICBvblJlYWR5OiBmdW5jdGlvbiAoc3VsaW5rZXIpIHsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLliJ3lp4vljJbnu5PmnZ8iKTsKICAgICAgICAgICAgICAgIGlzX3N1bGlhbiA9IHRydWU7CiAgICAgICAgICAgICAgICAvLyDliJ3lp4vljJblrozlkI7lj6/ku6XlsJ3or5XllKTphpLkuIDmrKE7CiAgICAgICAgICAgICAgICAvLyBzdWxpbmtlci53YWtldXAoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgLy8gKOmAieWhqykg5byA5aeL5ZSk6YaSQXBwCiAgICAgICAgICAgIG9uV2FrZXVwOiBmdW5jdGlvbiAoaXNNYW51YWwpIHsKICAgICAgICAgICAgICAgIC8vIOWPr+S7peW8gOWQr+W8ueeql++8jOW7uuiurjIwMDBtcyzlj6/ku6Xkvb/nlKhpc01hbnVhbOadpeWIpOaWreW9k+WJjeaYr+WQpuaJi+WKqOWUpOmGku+8jOafkOS6m+aDheWGteS4i+aJi+WKqOWUpOmGkuS4jemcgOimgeaYvuekuuW8ueeql+aPkOekugogICAgICAgICAgICAgICAgY29uc29sZS5sb2coIuW8gOWni+WUpOmGkuW6lOeUqCIsIuaJi+WKqOWUpOmGkiIsaXNNYW51YWwpOwogICAgICAgICAgICAgICAgRGlhbG9nLmluaXQoJ+ato+WcqOWKoOi9veS4re+8jOivt+eojeWQji4uLicsIDMwMDAwKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgLy8gKOmAieWhqykg5byA5aeL5LiL6L29QXBwCiAgICAgICAgICAgIG9uRG93bmxvYWQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLlvIDlp4vkuIvovb3lupTnlKgiKTsKICAgICAgICAgICAgICAgIERpYWxvZy5jbG9zZSgpOwogICAgICAgICAgICAgICAgaWYgKG9zID09IDEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1woaVteO10rOyggVTspPyBDUFUuK01hYyBPUyBYLykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hvd0d1aWRlKCk7CiAgICAgICAgICAgICAgICAJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFuZHJvaWRfZG93bmxvYWQiKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvc3Rlcl9pb3NfZ3VpZGUiKS5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siOwogICAgICAgICAgICAgICAgCX0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgLy8gKOmAieWhqykg6YGH5Yiw5LiN5pSv5oyB55qE5rWP6KeI5Zmo5Zue6LCDCiAgICAgICAgICAgIG9uQnJvd3Nlck5vdFN1cHBvcnQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIC8vIOWPr+S7peWFs+mXreW8ueeqlwogICAgICAgICAgICAgICAgY29uc29sZS5sb2coIuS4jeaUr+aMgeeahOa1j+iniOWZqCIpOwogICAgICAgICAgICB9LAogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIAogICAgICAgICQoJyNkb253bG9hZF9jb21wJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmKG9zPT0yKXsKICAgICAgICAgICAgLy92YXIgdXJsID0gJ2l0bXMtc2VydmljZXM6Ly8/YWN0aW9uPWRvd25sb2FkLW1hbmlmZXN0JnVybD1odHRwczovLzIyNi15dWVodWEub3NzLWNuLXNoZW56aGVuLmFsaXl1bmNzLmNvbS9kb3dubG9hZC9kb3duaW9zLnBsaXN0JzsKICAgICAgICAgICAgICAgIGlmKCJodHRwczovL3pqZXd5LnpoZW5nY2hhbmc4OC5jb20vemp5M24yamhuaiIhPSIiKXsKICAgICAgICAgICAgICAgICAgICAgRGlhbG9nLmluaXQoJ+ato+WcqOWKoOi9veS4re+8jOivt+eojeWQji4uLicsIDMwMDApOwogICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAnaHR0cHM6Ly96amV3eS56aGVuZ2NoYW5nODguY29tL3pqeTNuMmpobmonOwogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsOwogICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgRGlhbG9nLmluaXQoJ+aaguaXoOS8geS4muetvi4uLicsIDMwMDApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0pOwogICAgfSBjYXRjaChlcnIpewogICAgICBjb25zb2xlLmxvZyhlcnIpOwogICAgfQogICAgCiAgICAgLy8gICBpZiAob3MgPT0gMikgewogICAgICAvLyAgICAgICQoJyNkb3dubG9hZF9idXR0b24nKS5jbGljayhmdW5jdGlvbigpIHsKICAgIC8vICAgICAgICAgICAgY29uc29sZS5sb2coJ2NsaWNrJykKICAgICAvLyAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFuZHJvaWRfZG93bmxvYWQiKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKICAgICAgLy8gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvc3Rlcl9pb3NfZ3VpZGUiKS5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siOwogICAgLy8gICAgICAgICAgICAKICAgICAvLyAgICAgICB9KTsKICAgICAvLyAgIH0KICAgICAgICAKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJz09PT09PumAn+mTvuacjeWKoeeKtuaAge+8micraXNfc3VsaWFuKTsKICAgICAgICAgICAgaWYgKCFpc19zdWxpYW4pIHsKICAgICAgICAgICAgICAgIGlmIChvcyA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnI2Rvd25sb2FkX2J1dHRvbicpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBEaWFsb2cuaW5pdCgn5q2j5Zyo5Yqg6L295Lit77yM6K+356iN5ZCOLi4uJywgMzAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mIGRlZmF1bHRVcmwgIT09ICd1bmRlZmluZWQnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRlZmF1bHRVcmwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1woaVteO10rOyggVTspPyBDUFUuK01hYyBPUyBYLykpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IGRlZmF1bHRVcmwuaW9zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSBkZWZhdWx0VXJsLmFuZHJvaWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwgNTAwMCApOwogICAgICAgIAogICAgICAgIAogICAgICAgIHZhciB1ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDsKICAgICAgICB2YXIgaXNBbmRyb2lkID0gdS5pbmRleE9mKCdBbmRyb2lkJykgPiAtMSB8fCB1LmluZGV4T2YoJ0FkcicpID4gLTE7IC8vYW5kcm9pZOe7iOerrwogICAgICAgIHZhciBpc2lPUyA9ICEhdS5tYXRjaCgvXChpW147XSs7KCBVOyk/IENQVS4rTWFjIE9TIFgvKTsgLy9pb3Pnu4jnq68KICAgICAgICBpZihpc2lPUyl7CiAgICAgICAgICAgICQoJyNpZV9pY29uJykuYXR0cignc3JjJywnL2ltZ3Mvc2FmYXJpLnBuZycpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAKICAgICAgICAvL+WmguaenOaYr+WcqFFR5YaF572u5rWP6KeI5Zmo5oiW5b6u5L+h6YeMCiAgICAgICAgaWYoCiAgICAgICAgICAgIC9NaWNyb01lc3Nlbmdlci9pLnRlc3QodSkKICAgICAgICAgICAgfHwgKGlzaU9TICYmIC8gUVEvaS50ZXN0KHUpKQogICAgICAgICAgICB8fCAoaXNBbmRyb2lkICYmIC9NUVFCcm93c2VyL2kudGVzdCh1KSAmJiAvUVEvaS50ZXN0KHUuc3BsaXQoJ01RUUJyb3dzZXInKSkpCiAgICAgICAgICAgIC8vIHx8IHRydWUKICAgICAgICAgICAgKXsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJCgnLnNoYWRvdy1ib3gnKS5zaG93KCk7CiAgICAJICAgIAlkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSdoaWRkZW4nOyAgICAKCSAgICAJICAgIGRvY3VtZW50LnRpdGxlID0gJ+a4qemmqOaPkOekuic7CiAgICAJICAgIAl2YXIgbW89ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO307ICAgIAogICAgICAgICAgICAJZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixtbyx7cGFzc2l2ZTpmYWxzZX0pOy8v56aB5q2i6aG16Z2i5ruR5YqoCiAgICAgICAgICAgIAkKICAgICAgICAgICAgCSQoJyNjb3B5X2RpdicpLnNob3coKTsKICAgICAgICAgICAgCWlmKGlzQW5kcm9pZCl7CiAgICAgICAgICAgIAkgICAgbG9jYXRpb24uaHJlZiA9ICdtdHRicm93c2VyOi8vdXJsPScrbG9jYXRpb24uaHJlZjsKICAgICAgICAgICAgCX0KICAgICAgICAgICAgICAgIAogICAgICAgIH1lbHNlewogICAgICAgICAgICAKCQkgICAgJCgnI2FuZHJvaWRfZG93bmxvYWQnKS5zaG93KCk7CgkJCWNoZWNrX3NhZmFyaSgpOwoJCSAgICAkKCcubm90X2Rvd25faW1nJykuY2xpY2soZnVuY3Rpb24oKSB7CgkJICAgICAgICB2YXIgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CgkJICAgICAgICBjb3B5VGV4dCh1cmwpOwoJCSAgICB9KTsKCQkgICAgCiAgICAgICAgfQogIAoJfSk7IAogIAogICAgZnVuY3Rpb24gY29weVRleHQodGV4dCkgewogICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHRleHQpOwogICAgICAgIGlucHV0LnNlbGVjdCgpOwogICAgICAgIHZhciBvbGRDb250ZW50RWRpdGFibGUgPSBpbnB1dC5jb250ZW50RWRpdGFibGU7CiAgICAgICAgdmFyIG9sZFJlYWRPbmx5ID0gaW5wdXQucmVhZE9ubHk7CiAgICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgICBpbnB1dC5jb250ZW50RWRpdGFibGUgPSB0cnVlOwogICAgICAgIGlucHV0LnJlYWRPbmx5ID0gZmFsc2U7CiAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGlucHV0KTsKICAgICAgICB2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgICBzLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgIHMuYWRkUmFuZ2UocmFuZ2UpOwogICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDk5OTk5OSk7IC8vIEEgYmlnIG51bWJlciwgdG8gY292ZXIgYW55dGhpbmcgdGhhdCBjb3VsZCBiZSBpbnNpZGUgdGhlIGVsZW1lbnQuCiAgICAgICAgaW5wdXQuY29udGVudEVkaXRhYmxlID0gb2xkQ29udGVudEVkaXRhYmxlOwogICAgICAgIGlucHV0LnJlYWRPbmx5ID0gb2xkUmVhZE9ubHk7CiAgICAgICAgaWYgKGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5JykpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTsKICAgICAgICAgICAgY29uc29sZS5sb2coZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKSk7CgkJICAgIERpYWxvZy5pbml0KCflpI3liLbmiJDlip8nLCAyMDAwKTsKICAgICAgICAgICAgLy8gJCgnLm5vdF9kb3duX2JvZHknKS5oaWRlKCk7CiAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaW5wdXQpOwogICAgfQo8L3NjcmlwdD4KPGRpdiBzdHlsZT0iZGlzcGxheTpibG9jazsiPjwvZGl2PgoKCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBpZD0id2luZG93QkciPgogICAgPCEtLSDlvLnlh7rmoYYgLS0+CgogICAgPGRpdiBjbGFzcz0iY29udGVudCI+CiAgICAgICAgPGRpdiBhY3Rpb249IiIgY2xhc3M9ImxvZ2luLWZvcm0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9InVzZXJuYW1lIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBwbGFjZWhvbGRlcj0i5omL5py65Y+3Ii8+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InVzZXJuYW1lIiBzdHlsZT0iY29sb3I6IHJlZDtkaXNwbGF5OiBub25lIj48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAgcGFzc3dkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWljb24iIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0iY29kZSIgdHlwZT0idGV4dCIgIGNsYXNzPSJmb3JtLWNvbnRyb2wgcGxhY2Vob2xkZXItbm8tZml4IiBwbGFjZWhvbGRlcj0i6aqM6K+B56CBIi8+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJidG5jb2RlIiBvbmNsaWNrPSJzZW5kVmVyaWZ5Q29kZSgpIiB0eXBlPSJidXR0b24iPuiOt+WPlumqjOivgeeggTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNvZGUiIHN0eWxlPSJjb2xvcjogcmVkO2Rpc3BsYXk6IG5vbmUiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWljb24iPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJwYXNzd29yZCIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSLor7fovpPlhaXlr4bnoIEiLz4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0icGFzc3dvcmQiIHN0eWxlPSJjb2xvcjogcmVkO2Rpc3BsYXk6IG5vbmUiPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1pY29uIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0icmVwYXNzd29yZCIgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSLor7flho3ovpPlhaXlr4bnoIEiLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1pY29uIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0iaW52aXRlciIgdHlwZT0iaGlkZGVuIiByZWFkb25seSBjbGFzcz0iZm9ybS1jb250cm9sIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJpbnZpdGVfaWQiICB0eXBlPSJ0ZXh0IiByZWFkb25seSAgY2xhc3M9ImZvcm0tY29udHJvbCIgcGxhY2Vob2xkZXI9IuaOqOiNkOS6uklE77yaIi8+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Imludml0ZXIiIHN0eWxlPSJjb2xvcjogcmVkO2Rpc3BsYXk6IG5vbmUiPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1pY29uIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9InN1Ym1pdCIgIHR5cGU9InN1Ym1pdCIgb25jbGljaz0icmVnaXN0ZXIoKSIgY2xhc3M9ImZvcm0tY29udHJvbCBzdWIiPuazqOWGjDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1pY29uIGRvd25fYXBrIj4KICAgICAgICAgICAgICAgICAgICA8YSBzdHlsZT0iY29sb3I6IGdyZWVuIiBpZD0iY2xpY2tzdWxpYW4iIG9uY2xpY2s9J2NsaWNrU3VubGlhbigpJz7lt7LmnInotKblj7fnjqnlrrbor7fngrnlh7vov5nph4wgPC9hPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+Cjwvc2NyaXB0PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgJCgnI2FuZHJvaWRfZG93bmxvYWQnKS5jbGljayhmdW5jdGlvbiAoKXsKICAgICAgICBsYXllci5vcGVuKHsKICAgICAgICAgICAgdHlwZToxLAogICAgICAgICAgICB0aXRsZTon5rOo5YaM6YCBOC04ODgnLAogICAgICAgICAgICBidG46J+WFs+mXrScsCiAgICAgICAgICAgIG1heG1pbjp0cnVlLAogICAgICAgICAgICBjb250ZW50OiQoJyN3aW5kb3dCRycpLmh0bWwoKSwKICAgICAgICB9KQogICAgICAgIGlmKHJlZ2lzLnR5cGU9PSdzJyl7CiAgICAgICAgICAgIGlmKHJlZ2lzLnBhY2thZ2VpZCl7CiAgICAgICAgICAgICAgICAkKCcjaW52aXRlX2lkJykuYXR0cigncGxhY2Vob2xkZXInLCAn5o6o6I2Q5Lq6SUTvvJonICsgcmVnaXMucGFja2FnZWlkKTsKICAgICAgICAgICAgfQogICAgICAgIH1lbHNlewogICAgICAgICAgICBpZihyZWdpcy5pbnZpdGVyKXsKICAgICAgICAgICAgICQoJyNpbnZpdGVfaWQnKS5hdHRyKCdwbGFjZWhvbGRlcicsICfmjqjojZDkurpJRO+8micgKyByZWdpcy5pbnZpdGVyKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgIH0pCiAgICAKICAgIGZ1bmN0aW9uIGNsaWNrU3VubGlhbiAoKSB7CiAgICAgICAgbGF5ZXIuY2xvc2VBbGwoKTsKICAgICAgICBpZiAob3MgPT0gMSkgewogICAgICAgICAgICAkKCcjZG93bmxvYWRfYnV0dG9uJykuY2xpY2soKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyAkKCcjZG9ud2xvYWRfdGYnKS5jbGljaygpOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYW5kcm9pZF9kb3dubG9hZCIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicG9zdGVyX2lvc19ndWlkZSIpLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI7CiAgICAgICAgfQogICAgfQogICAgCiAgICAgICAgdmFyIGRvd25sb2FkX3VybCA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0OwovLyAgICAgICAgdmFyIHNtc19saW1pdCA9IDYwOwovLyAgICAgICAgdmFyIGlzX2NhcHRjaGEgPSAxOwoKICAgICAgICB2YXIgdSA9IG5hdmlnYXRvci51c2VyQWdlbnQ7CiAgICAgICAgLy8gaWYgKG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdtaWNyb21lc3NlbmdlcicpICE9PSAtMQogICAgICAgIC8vIHx8IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdxcScpICE9PSAtMSkKICAgICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ21pY3JvbWVzc2VuZ2VyJykgIT09IC0xCiAgICAgICAgICAgIHx8IGlzUVFBUFAoKSkKICAgICAgICB7CiAgICAgICAgICAgICQoJy5zaGFkb3ctYm94Jykuc2hvdygpOwogICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSdoaWRkZW4nOwogICAgICAgICAgICBkb2N1bWVudC50aXRsZSA9ICfmuKnppqjmj5DnpLonOwogICAgICAgICAgICB2YXIgbW89ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO307CiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsbW8se3Bhc3NpdmU6ZmFsc2V9KTsvL+emgeatoumhtemdoua7keWKqAoKICAgICAgICAgICAgJCgnI2NvcHlfZGl2Jykuc2hvdygpOwogICAgICAgICAgICBpZihpc0FuZHJvaWQpewogICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9ICdtdHRicm93c2VyOi8vdXJsPScrbG9jYXRpb24uaHJlZjsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICQoJy5jb250ZW50Jykuc2hvdygpOwogICAgICAgIH0KCiAgICAgICAgLy/liKTmlq3mmK/lkKZRUeWGhee9rua1j+iniOWZqO+8iOWQq0lPU+WSjEFuZHJpb2TvvIkKICAgICAgICBmdW5jdGlvbiBpc1FRQVBQKCl7CiAgICAgICAgICAgIHZhciBpc0lvc1FRID0gKCAvKGlQaG9uZXxpUGFkfGlQb2R8aU9TKS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgL1xzUVEvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKTsKICAgICAgICAgICAgdmFyIGlzQW5kcm9pZFFRID0gKCAvKEFuZHJvaWQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAvTVFRQnJvd3Nlci9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgL1xzUVEvaS50ZXN0KChuYXZpZ2F0b3IudXNlckFnZW50KS5zcGxpdCgnTVFRQnJvd3NlcicpKSk7CiAgICAgICAgICAgIHJldHVybiBpc0lvc1FRIHx8IGlzQW5kcm9pZFFROwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ2V0UXVlcnlWYXJpYWJsZSh2YXJpYWJsZSkKICAgICAgICB7CiAgICAgICAgICAgIGxldCBxdWVyeSA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpOwogICAgICAgICAgICBsZXQgdmFycyA9IHF1ZXJ5LnNwbGl0KCImIik7CiAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPHZhcnMubGVuZ3RoO2krKykgewogICAgICAgICAgICAgICAgbGV0IHBhaXIgPSB2YXJzW2ldLnNwbGl0KCI9Iik7CiAgICAgICAgICAgICAgICBpZihwYWlyWzBdID09IHZhcmlhYmxlKXtyZXR1cm4gcGFpclsxXTt9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBsZXQgZnJvbSA9IGdldFF1ZXJ5VmFyaWFibGUoJ2Zyb20nKTsKICAgICAgLy8gIHZhciBwbGF0Zm9ybSA9IDE4ODsKICAgICAgIC8vIHZhciBpbnZpdGVyID0gJyc7CiAgICAgIC8vICB2YXIgcGFja2FnZWlkID0gJyc7CiAgICAgICAvLyB2YXIgdHlwZSA9ICdzJzsKICAgICAgICAvLyDorr7nva4g6YKA6K+356CB77yI5YWo5rCRaWTvvIkKICAgICAgICByZWdpcy5wbGF0Zm9ybT00MwogICAgICAgIHJlZ2lzLnNldEludml0ZXIoZnJvbSkKCiAgICAgICAgLy8kKCcjZG93bmxvYWRfYnV0dG9uJykuYXR0cignaHJlZicsIGRvd25sb2FkX3VybCArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpOwoKICAgICAgICAgICAgY29uc29sZS5sb2coJ3Byb21vdGVyJywpOwogICAgICAgICAgICBjb25zb2xlLmxvZygncGFja2FnZUlkJywyODYwNyk7CiAgICAgICAgZnVuY3Rpb24gcmVnaXN0ZXIoKXsKICAgICAgICAgICAgaWYocmVnaXMuaW52aXRlcj09JycpewogICAgICAgICAgICAgICAgcmVnaXMuaW52aXRlcj0iIgogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKHJlZ2lzLnBhY2thZ2VpZD09JycpewogICAgICAgICAgICAgICAgcmVnaXMucGFja2FnZWlkPSIyODYwNyIKICAgICAgICAgICAgfQogICAgICAgICAgICByZWdpcy5yZWdpc3RlcigpOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBzZW5kVmVyaWZ5Q29kZSgpewogICAgICAgICAgICByZWdpcy5pc0ZpcnN0ID0gMDsKICAgICAgICAgICAgcmVnaXMuY291bnRkb3duID0gNjA7CiAgICAgICAgICAgIHJlZ2lzLnNlbmRWZXJpZnlDb2RlKCk7CiAgICAgICAgfQo8L3NjcmlwdD4KPC9ib2R5PgoKPC9odG1sPg==